diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..c02d784 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,47 @@ +name: Publier l'image Docker (GHCR) + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + packages: write + +jobs: + build-push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Buildx + uses: docker/setup-buildx-action@v3 + + - name: Connexion à GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Métadonnées (tags / labels) + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=raw,value=latest + type=sha,format=short + + - name: Build & push + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/amd64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/README.md b/README.md index bdfbb03..0a8416b 100644 --- a/README.md +++ b/README.md @@ -42,12 +42,14 @@ Application disponible sur http://localhost:8080 ## Installation sur Unraid -Un compose prêt à l'emploi est fourni : [`docker-compose.unraid.yml`](docker-compose.unraid.yml). +L'image est **construite et publiée automatiquement par GitHub Actions** sur GHCR +(`ghcr.io/r0m1k3/loki:latest`) à chaque push sur `main`. Aucun build ni `git` +n'est nécessaire sur Unraid — un simple `pull`. Compose prêt à l'emploi : +[`docker-compose.unraid.yml`](docker-compose.unraid.yml). -1. Dans le terminal Unraid, prépare les dossiers et le code source : +1. Dans le terminal Unraid, crée les dossiers de données : ```bash mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data - git clone https://github.com/R0m1k3/Loki.git /mnt/user/appdata/loki/repo ``` 2. Installe le plugin **Compose Manager** (Apps), crée une nouvelle stack, et colle le contenu de `docker-compose.unraid.yml`. @@ -55,9 +57,13 @@ Un compose prêt à l'emploi est fourni : [`docker-compose.unraid.yml`](docker-c conteneur Ollama, p. ex. `http://192.168.1.10:11434`. 4. **Compose Up**. Loki est accessible sur `http://:8080`. +> La première publication de l'image prend quelques minutes (le temps que le +> workflow GitHub se termine). Si l'image est privée, rends le package **public** +> une fois (GitHub → Packages → `loki` → Package settings → Change visibility). +> > Les modèles déjà présents dans ton Ollama sont **détectés automatiquement** ; > tu peux en télécharger d'autres depuis l'onglet Configuration. -> Mise à jour : `cd /mnt/user/appdata/loki/repo && git pull`, puis Compose Up (rebuild). +> Mise à jour : Compose Down/Up (avec pull), ou `docker compose pull`. ## Développement (sans Docker) diff --git a/docker-compose.unraid.yml b/docker-compose.unraid.yml index 84a34c3..f9b1df1 100644 --- a/docker-compose.unraid.yml +++ b/docker-compose.unraid.yml @@ -1,23 +1,26 @@ # ─────────────────────────────────────────────────────────────────────────── -# Loki — docker-compose pour Unraid +# Loki — docker-compose pour Unraid (image préconstruite par GitHub) # -# PRÉREQUIS (une seule fois, via le terminal Unraid) : -# mkdir -p /mnt/user/appdata/loki -# git clone https://github.com/R0m1k3/Loki.git /mnt/user/appdata/loki/repo -# mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data +# Aucun build ni git nécessaire sur Unraid : l'image est publiée automatiquement +# sur GHCR par GitHub Actions à chaque push sur main. # -# Puis colle ce fichier dans le plugin « Compose Manager » (nouvelle stack) -# et lance « Compose Up ». Pour mettre à jour plus tard : -# cd /mnt/user/appdata/loki/repo && git pull (puis Compose Up --build) +# MISE EN PLACE : +# 1) Crée les dossiers de données (terminal Unraid) : +# mkdir -p /mnt/user/appdata/loki/workspace /mnt/user/appdata/loki/data +# 2) Plugin « Compose Manager » -> nouvelle stack -> colle ce fichier. +# 3) Adapte OLLAMA_HOST avec l'IP de ton serveur Unraid (Ollama sur :11434). +# 4) Compose Up. Interface : http://:8080 # -# IMPORTANT : remplace l'IP dans OLLAMA_HOST par celle de ton serveur Unraid -# (là où tourne ton conteneur Ollama, port 11434). +# Mise à jour : Compose Down puis Up (l'option « pull image » récupère la +# dernière version), ou « docker compose pull » avant Up. +# +# NB : si l'image ghcr.io/r0m1k3/loki est privée, rends-la publique une fois +# (GitHub -> Packages -> loki -> Package settings -> Change visibility), +# ou connecte Unraid à GHCR avec un token. # ─────────────────────────────────────────────────────────────────────────── services: loki: - build: - context: /mnt/user/appdata/loki/repo - image: loki:latest + image: ghcr.io/r0m1k3/loki:latest container_name: loki ports: - "8080:8080" @@ -34,7 +37,7 @@ services: - /mnt/user/appdata/loki/workspace:/workspace - /mnt/user/appdata/loki/data:/data extra_hosts: - # Permet aussi d'utiliser OLLAMA_HOST=http://host.docker.internal:11434 + # Permet aussi OLLAMA_HOST=http://host.docker.internal:11434 - "host.docker.internal:host-gateway" healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:8080/api/health"]