Mise à jour automatique (Gitea + Watchtower) et conteneurisation Docker

- Détection de version via l'API Gitea, application via Watchtower
- Router système, UI admin (intégrations), bandeau de mise à jour
- Dockerfile multi-étapes, docker-compose, scripts/release.sh
- Version centralisée dans app/version.py (pyproject ou OHM_VERSION au build)
This commit is contained in:
Roman
2026-09-22 11:58:03 +00:00
parent 41566ab5fb
commit 9148b5fb6a
21 changed files with 1092 additions and 49 deletions
+15 -1
View File
@@ -9,10 +9,22 @@ from fastapi.staticfiles import StaticFiles
from app.config import BASE_DIR, get_settings
from app.db import db
from app.logging_config import setup_logging
from app.routers import admin, auth, discover, downloads, library, pages, proxy, search, torznab
from app.routers import (
admin,
auth,
discover,
downloads,
library,
pages,
proxy,
search,
system,
torznab,
)
from app.scrapers.http import close_client
from app.services.discover import discover as discover_service
from app.services.downloads import download_manager
from app.services.settings import apply_source_base_urls
logger = logging.getLogger(__name__)
@@ -30,6 +42,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
settings = get_settings()
setup_logging(settings.debug)
await db.connect()
await apply_source_base_urls()
await download_manager.start()
warmup = asyncio.create_task(discover_service.latest())
warmup.add_done_callback(_log_task_error)
@@ -46,6 +59,7 @@ def create_app() -> FastAPI:
app = FastAPI(title=settings.app_name, lifespan=lifespan)
app.include_router(torznab.router)
app.include_router(system.router)
app.include_router(pages.router)
app.include_router(pages.protected)