0 Votes

Flus

Modifié par john le 2026/09/19 13:35

Outil de veille collaboratif. Il permet de suivre des flux RSS et des sites, de garder des articles à lire plus tard et de les annoter, et surtout de les organiser en collections thématiques que l'on peut partager avec d'autres personnes ou rendre publiques. On peut aussi suivre les collections des autres utilisateurs.

Déploiement

Stack lancée en ligne de commande avec docker compose, depuis <APPDATA>/flus : Portainer l'affiche mais ne peut pas la modifier. Toutes les opérations se font dans ce dossier.

ConteneurRôle
flus-nginxServeur web, seul exposé sur proxy
flus-phpApplication PHP (image construite localement)
flus-workerTâches de fond : récupération des flux, envoi des courriels
flus-dbBase PostgreSQL 16

Stack

services:
 flus-db:
   image: postgres:16-alpine
   container_name: flus-db
   restart: unless-stopped
   environment:
     POSTGRES_DB: flus
     POSTGRES_USER: flus
     POSTGRES_PASSWORD: <MOT_DE_PASSE>
   volumes:
      - ./storage/postgres:/var/lib/postgresql/data
   healthcheck:
     test: ["CMD-SHELL", "pg_isready -U flus -d flus"]
     interval: 10s
     timeout: 5s
     retries: 10
   networks:
      - flus

 flus-php:
   build:
     context: ./docker/php
   image: flus-php-local
   container_name: flus-php
   restart: unless-stopped
   working_dir: /var/www/html
   environment:
     LANG: en_GB.UTF-8
     LC_ALL: en_GB.UTF-8
   volumes:
      - ./app:/var/www/html
      - ./storage/data:/var/www/html/data
      - ./storage/cache:/var/www/html/cache
      - ./storage/media:/var/www/html/public/media
   depends_on:
     flus-db:
       condition: service_healthy
   networks:
      - flus

 flus-worker:
   build:
     context: ./docker/php
   image: flus-php-local
   container_name: flus-worker
   restart: unless-stopped
   working_dir: /var/www/html
   user: "33:33"
   command: php cli jobs watch
   environment:
     LANG: en_GB.UTF-8
     LC_ALL: en_GB.UTF-8
   volumes:
      - ./app:/var/www/html
      - ./storage/data:/var/www/html/data
      - ./storage/cache:/var/www/html/cache
      - ./storage/media:/var/www/html/public/media
   depends_on:
     flus-db:
       condition: service_healthy
   networks:
      - flus

 flus-nginx:
   image: nginx:1.27-alpine
   container_name: flus-nginx
   restart: unless-stopped
   depends_on:
      - flus-php
   volumes:
      - ./app:/var/www/html:ro
      - ./storage/media:/var/www/html/public/media
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
   networks:
      - flus
      - proxy

networks:
 flus:
 proxy:
   external: true

Arborescence

DossierContenu
app/Code de Flus (dépôt git), avec sa configuration .env
docker/php/Dockerfile de l'image PHP
docker/nginx/default.confConfiguration nginx
storage/Données : base, fichiers, cache, médias

Mise à jour

L'image PHP est locale : Watchtower ne la met pas à jour. Depuis <APPDATA>/flus :

# Mettre à jour l'image PHP (correctifs de sécurité)
docker compose build --pull
docker compose up -d

# Mettre à jour Flus
cd app && git pull && cd ..
docker exec -u 33:33 flus-php php cli migrations setup --seed

Sauvegarde

  • Base : dump SQL de flus-db par le script de Sauvegarde.
  • Code, configuration et médias : <DOSSIER_FLUS>, sauvegardé tel quel.