Version 2.0.0 - update of everything

This commit is contained in:
raphix committed 2026-10-07 14:04:26 +02:00
1 parent 164a1da009
commit 6017e03eac
85 files changed
+13065 -2107

No files matched your search

+34 -8
View File
@@ -2,24 +2,50 @@ FROM node:lts-alpine
WORKDIR /app
# Version du plugin PO token (bgutil) : doit correspondre à l'image du service bgutil-provider (docker-compose.yml)
ARG BGUTIL_VERSION=2.0.1
# 1. Installer les dépendances système requises
# python3 : indispensable pour faire tourner yt-dlp
# ffmpeg : nécessaire pour certaines conversions audio ou formats spécifiques
# curl : pour télécharger yt-dlp
# python3 : indispensable pour faire tourner yt-dlp (version zipimport, auto-actualisable avec -U)
# ffmpeg : seek YouTube (décodage du flux) et certains formats
# curl : pour télécharger yt-dlp et le plugin bgutil
RUN apk add --no-cache bash python3 ffmpeg curl
# 2. Installer yt-dlp (Dernière version officielle)
# 2. Installer yt-dlp (dernière version officielle, build zipimport : inclut yt-dlp-ejs pour les défis JS)
# On le place dans /usr/local/bin pour qu'il soit accessible globalement dans le PATH
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \
RUN curl -fL https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && \
chmod a+rx /usr/local/bin/yt-dlp
# 3. Installation des dépendances Node.js
# 3. Plugin bgutil : yt-dlp obtient des PO tokens auprès du service bgutil-provider
# (/etc/yt-dlp/plugins/ est lu par yt-dlp, les archives .zip y sont acceptées telles quelles)
RUN mkdir -p /etc/yt-dlp/plugins && \
curl -fL "https://github.com/Brainicism/bgutil-ytdlp-pot-provider/releases/download/${BGUTIL_VERSION}/bgutil-ytdlp-pot-provider.zip" \
-o /etc/yt-dlp/plugins/bgutil-ytdlp-pot-provider.zip
# 4. Installation des dépendances Node.js
# youtube-dl-exec téléchargerait un second yt-dlp (build glibc, inutilisable sous Alpine) : inutile, celui du PATH est utilisé
ENV YOUTUBE_DL_SKIP_DOWNLOAD=true
COPY package*.json ./
RUN npm install
# 4. Copie du reste du code
# 5. Copie du reste du code
# Voir .dockerignore : node_modules (binaires Windows), data/ (token, cookies, comptes), logs/ et .git
# ne sont PAS copiés dans l'image. data/ est fourni par le volume monté sur /app/data (docker-compose.yml) :
# config.json doit y être déposé avant le premier démarrage, sinon le bot crée une config vide et s'arrête.
# data/youtube/ (cookies YouTube, réglages, cache de yt-dlp) est créé au démarrage dans ce même volume.
COPY . .
# logs/ n'est plus copié : loguix crée son dossier de façon asynchrone et ouvre son fichier aussitôt,
# le dossier doit donc exister au démarrage (même sans volume monté sur /app/logs)
RUN mkdir -p /app/logs /app/data
EXPOSE 4000
# État de santé : route HTTP /health du serveur (port 4000, celui exposé ci-dessus)
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
CMD wget -qO- http://127.0.0.1:4000/health > /dev/null || exit 1
# Mise à jour de yt-dlp à chaque démarrage : une version obsolète provoque des erreurs 403
CMD ["sh", "-c", "yt-dlp -U || true; npm run start"]
# (le bot la refait ensuite toutes les 24 h et après une série d'échecs, voir src/youtube/ytdlp.js)
# exec : node remplace sh et devient PID 1 (il reçoit SIGTERM pour un arrêt propre).
# Plus de nodemon en production : un crash termine le process et Docker relance le conteneur (restart: unless-stopped).
CMD ["sh", "-c", "yt-dlp -U || true; exec node src/main.js"]