mirror of
https://github.com/R0m1k3/LiveFlow.git
synced 2026-10-12 01:37:29 +02:00
Mises à jour automatiques : image publiée sur ghcr.io via GitHub Actions + Watchtower
- Workflow build-image.yml : construit et pousse ghcr.io/r0m1k3/liveflow à chaque modification de app/ - Compose Unraid : image préconstruite au lieu du build local, service watchtower scopé par label pour redéployer l'app automatiquement https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
This commit is contained in:
3 files changed
+78
-14
No files matched your search
@@ -0,0 +1,35 @@
|
||||
name: Build & publish Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main", "claude/**"]
|
||||
paths: ["app/**", ".github/workflows/build-image.yml"]
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: ./app
|
||||
push: true
|
||||
tags: |
|
||||
ghcr.io/r0m1k3/liveflow:latest
|
||||
ghcr.io/r0m1k3/liveflow:${{ github.sha }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
@@ -48,11 +48,26 @@ cliquer sur **Démarrer**.
|
||||
## Unraid
|
||||
|
||||
Un compose dédié est fourni : [`docker-compose.unraid.yml`](docker-compose.unraid.yml)
|
||||
(chemins `appdata`, GPU via `runtime: nvidia`, port 8443). Prérequis : plugins
|
||||
**Nvidia Driver** et **Docker Compose Manager**. Extraire le dépôt dans
|
||||
`/mnt/user/appdata/liveflow`, renseigner `LIVEFLOW_HOST` (IP du serveur) dans
|
||||
le compose, créer une stack pointant sur ce fichier, puis ouvrir
|
||||
`https://<ip-unraid>:8443`.
|
||||
(image préconstruite `ghcr.io/r0m1k3/liveflow`, GPU via `runtime: nvidia`,
|
||||
port 8443). Prérequis : plugins **Nvidia Driver** et **Docker Compose Manager**.
|
||||
Renseigner `LIVEFLOW_HOST` (IP du serveur) dans le compose, créer une stack
|
||||
pointant sur ce fichier, puis ouvrir `https://<ip-unraid>:8443`.
|
||||
|
||||
## Mises à jour automatiques
|
||||
|
||||
À chaque push sur GitHub, une GitHub Action construit l'image de l'app et la
|
||||
publie sur `ghcr.io/r0m1k3/liveflow:latest`. Le service **watchtower** inclus
|
||||
dans le compose Unraid vérifie le registre toutes les heures et redéploie
|
||||
automatiquement l'app quand une nouvelle image existe — aucune mise à jour
|
||||
manuelle. Pour forcer une mise à jour immédiate :
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.unraid.yml pull app && \
|
||||
docker compose -f docker-compose.unraid.yml up -d app
|
||||
```
|
||||
|
||||
> Première utilisation : le paquet ghcr.io doit être **public** (GitHub →
|
||||
> page du dépôt → Packages → liveflow → Package settings → Change visibility).
|
||||
|
||||
## Configuration
|
||||
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
# Compose adapté à Unraid (plugin "Docker Compose Manager").
|
||||
#
|
||||
# Prérequis :
|
||||
# 1. Plugin "Nvidia Driver" installé (Community Applications)
|
||||
# 2. Le dépôt extrait dans /mnt/user/appdata/liveflow
|
||||
# 3. Une stack Compose Manager pointant sur ce fichier
|
||||
# Prérequis : plugin "Nvidia Driver" (Community Applications).
|
||||
#
|
||||
# L'app sert directement le HTTPS avec un certificat auto-signé (requis par
|
||||
# les navigateurs pour autoriser le micro) : ouvrir https://<ip-unraid>:8443
|
||||
# et accepter l'avertissement de certificat.
|
||||
# L'image de l'app est construite et publiée automatiquement par GitHub
|
||||
# Actions à chaque mise à jour du code : plus besoin du dépôt sur le serveur.
|
||||
# Le service watchtower inclus met à jour l'app automatiquement (il ne touche
|
||||
# qu'aux conteneurs portant le label watchtower.enable).
|
||||
#
|
||||
# Accès : https://<ip-unraid>:8443 (certificat auto-signé), ou via votre
|
||||
# reverse proxy avec LIVEFLOW_TLS=off (scheme http, websockets activés).
|
||||
|
||||
services:
|
||||
app:
|
||||
build: /mnt/user/appdata/liveflow/app
|
||||
image: ghcr.io/r0m1k3/liveflow:latest
|
||||
container_name: liveflow-app
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
@@ -21,7 +22,7 @@ services:
|
||||
- LIVEFLOW_HOST=192.168.1.16
|
||||
# "off" si un reverse proxy (Nginx Proxy Manager, SWAG...) gère déjà le
|
||||
# HTTPS : l'app sert alors du HTTP simple sur le port 8443.
|
||||
- LIVEFLOW_TLS=on
|
||||
- LIVEFLOW_TLS=off
|
||||
- ASR_BASE_URL=http://asr:8000/v1
|
||||
- ASR_MODEL=Qwen/Qwen3-ASR-1.7B
|
||||
- ASR_API_KEY=sk-local
|
||||
@@ -30,6 +31,8 @@ services:
|
||||
- DB_PATH=/data/liveflow.db
|
||||
volumes:
|
||||
- /mnt/user/appdata/liveflow/data:/data
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
depends_on:
|
||||
- asr
|
||||
|
||||
@@ -48,3 +51,14 @@ services:
|
||||
volumes:
|
||||
- /mnt/user/appdata/liveflow/hf-cache:/root/.cache/huggingface
|
||||
ipc: host
|
||||
|
||||
# Met à jour automatiquement liveflow-app quand une nouvelle image est
|
||||
# publiée (vérification toutes les heures). Supprimez ce service si un
|
||||
# Watchtower tourne déjà sur votre serveur.
|
||||
watchtower:
|
||||
image: containrrr/watchtower:latest
|
||||
container_name: liveflow-watchtower
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
command: --label-enable --cleanup --interval 3600
|
||||
Reference in new issue
Block a user