mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-18 12:49:54 +02:00
Serveur réécrit en Rust
Le serveur Dart (bin/) est remplacé par un serveur Rust (server/) : tokio + axum, reqwest/rustls, SQLite embarqué via rusqlite. Même API, mêmes routes et mêmes réponses : le front Flutter ne change pas. La base de production est reprise telle quelle : schéma, migrations et formats de dates (DateTime.toIso8601String de Dart) sont reproduits à l'identique, les sessions et hachages existants restent valides. Comportement conservé : cascade de routage, anti-SSRF, logs masqués, rate limits, transcodage HLS/turbo.ts avec repli GPU, quotas fournisseur, enregistrements (reprise, relances, fusion), season passes, EPG, logos de repli, arrêt gracieux sur SIGTERM. Tests Dart portés (132 tests Rust) ; la CI exécute fmt, test et clippy -D warnings, l'image Docker compile le serveur dans un étage rust:1.98.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f82c70ae05
commit
3ea6fa0ae3
109 files changed
+14008
-11047
No files matched your search
+13
-19
@@ -1,45 +1,39 @@
|
||||
# Dockerfile optimisé pour mises à jour rapides (Fast-Path)
|
||||
# Ce Dockerfile assume que les fichiers Flutter Web ont déjà été compilés en local
|
||||
# dans le dossier `build/web`.
|
||||
# dans le dossier `build/web`. Seul le serveur Rust est compilé ici.
|
||||
|
||||
FROM rust:1.98.1-slim-bookworm AS server-builder
|
||||
WORKDIR /server
|
||||
COPY server/Cargo.toml server/Cargo.lock ./
|
||||
RUN mkdir src && echo 'fn main() {}' > src/main.rs \
|
||||
&& cargo build --release --locked \
|
||||
&& rm -rf src target/release/xtremflow-server* target/release/deps/xtremflow_server*
|
||||
COPY server/src ./src
|
||||
RUN cargo build --release --locked
|
||||
|
||||
FROM debian:stable-slim
|
||||
|
||||
# Éviter les prompts à l'installation
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Installation des dépendances minimales (Dart + FFmpeg)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
wget \
|
||||
ca-certificates \
|
||||
unzip \
|
||||
ffmpeg \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Installation de Dart SDK (version spécifique pour compatibilité)
|
||||
RUN wget https://storage.googleapis.com/dart-archive/channels/stable/release/3.3.0/sdk/dartsdk-linux-x64-release.zip -O /tmp/dart-sdk.zip && \
|
||||
unzip /tmp/dart-sdk.zip -d /usr/lib && \
|
||||
rm /tmp/dart-sdk.zip
|
||||
|
||||
ENV PATH="/usr/lib/dart-sdk/bin:${PATH}"
|
||||
|
||||
# Création de l'utilisateur non-root
|
||||
RUN useradd -m xtremuser
|
||||
WORKDIR /app
|
||||
|
||||
# Création des dossiers de données avec permissions
|
||||
RUN mkdir -p /app/data/logs /app/data/tmp /app/web && \
|
||||
RUN mkdir -p /app/data/logs /app/data/tmp /app/web /app/recordings && \
|
||||
chown -R xtremuser:xtremuser /app
|
||||
|
||||
# Copie des fichiers pré-compilés du serveur (doit être compilé en local si possible, sinon ici)
|
||||
COPY --chown=xtremuser:xtremuser bin/ /app/bin/
|
||||
RUN cd bin && dart pub get
|
||||
|
||||
COPY --from=server-builder /server/target/release/xtremflow-server /app/server
|
||||
# Copie des fichiers pré-compilés du frontend (build/web doit exister en local)
|
||||
COPY --chown=xtremuser:xtremuser build/web/ /app/web/
|
||||
|
||||
USER xtremuser
|
||||
EXPOSE 8089
|
||||
|
||||
# Commande de lancement (compilation JIT du serveur pour rapidité de build, ou EXE si déjà fait)
|
||||
# Pour une rapidité maximale de "build", on lance le script dart directement car la compilation EXE prend du temps.
|
||||
CMD ["dart", "bin/server.dart", "--port", "8089", "--path", "/app/web"]
|
||||
CMD ["/app/server", "--port", "8089", "--path", "/app/web"]
|
||||
Reference in new issue
Block a user