mercredi 3 décembre 2025

Déployer Paperless-ngx sur Debian 13 avec Docker et Portainer

Installation de Paperless-ngx avec Docker Compose

Installation de Paperless-ngx avec Docker Compose

Déployez votre GED personnelle avec support OCR et fichiers Office


Webographie


Objectif

Installer et configurer Paperless-ngx, une solution complète de gestion électronique de documents (GED) avec OCR multilingue et support des fichiers Office. Cette installation inclut tous les services nécessaires : PostgreSQL, Redis, Gotenberg (conversion Office) et Tika (extraction de texte).


Prérequis

  • ✅ Docker installé et fonctionnel
  • ✅ Docker Compose disponible
  • ✅ (Optionnel) Portainer pour la gestion via interface web
  • ✅ Au moins 4 GB de RAM disponible

Vérification rapide :

docker --version
docker compose version

1. Création de la structure de dossiers

Créez les répertoires nécessaires pour Paperless-ngx :

# Création de la structure complète
mkdir -p /opt/paperless-ngx/{consume,data,media,export,postgres,redis}

# Attribution des permissions (remplacez 1000:1000 par votre UID:GID)
sudo chown -R 1000:1000 /opt/paperless-ngx

# Vérification
ls -la /opt/paperless-ngx/

Structure des dossiers :

  • consume/ - Documents à traiter automatiquement
  • data/ - Données de l'application
  • media/ - Documents archivés et traités
  • export/ - Exports et sauvegardes
  • postgres/ - Base de données PostgreSQL
  • redis/ - Cache Redis

💡 Trouver votre UID:GID :

id
# Résultat : uid=1000(votre_user) gid=1000(votre_user)

2. Création du fichier docker-compose.yml

Créez le fichier de configuration Docker Compose :

cd /opt/paperless-ngx
nano docker-compose.yml

Contenu du fichier :

version: "3.8"

services:
  broker:
    image: redis:7
    container_name: paperless-redis
    restart: unless-stopped
    volumes:
      - ./redis:/data
    environment:
      TZ: Europe/Paris

  db:
    image: postgres:16
    container_name: paperless-db
    restart: unless-stopped
    volumes:
      - ./postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperlessuser
      POSTGRES_PASSWORD: ChangezCeMotDePasse123!
      TZ: Europe/Paris

  gotenberg:
    image: gotenberg/gotenberg:8
    container_name: paperless-gotenberg
    restart: unless-stopped
    command:
      - "gotenberg"
      - "--chromium-disable-javascript=true"
      - "--chromium-allow-list=file:///tmp/.*"

  tika:
    image: apache/tika:latest
    container_name: paperless-tika
    restart: unless-stopped

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    container_name: paperless-ngx
    restart: unless-stopped
    depends_on:
      - db
      - broker
      - gotenberg
      - tika
    ports:
      - "8095:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    environment:
      # Base de données
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_DBNAME: paperless
      PAPERLESS_DBUSER: paperlessuser
      PAPERLESS_DBPASS: ChangezCeMotDePasse123!
      
      # Services de conversion
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
      PAPERLESS_TIKA_ENDPOINT: http://tika:9998
      
      # Configuration OCR
      PAPERLESS_OCR_LANGUAGE: fra+eng
      
      # Configuration générale
      PAPERLESS_TIME_ZONE: Europe/Paris
      PAPERLESS_SECRET_KEY: ChangezCetteCleSuperSecrete2024!
      PAPERLESS_URL: http://192.168.1.100:8095
      
      # Compte administrateur (création automatique)
      PAPERLESS_ADMIN_USER: admin
      PAPERLESS_ADMIN_PASSWORD: VotreMotDePasseAdmin123!
      PAPERLESS_ADMIN_MAIL: admin@example.com
      
      # Permissions
      USERMAP_UID: 1000
      USERMAP_GID: 1000

⚠️ PERSONNALISATION OBLIGATOIRE :

Paramètre À modifier
POSTGRES_PASSWORD Mot de passe PostgreSQL (doit être identique à PAPERLESS_DBPASS)
PAPERLESS_DBPASS Mot de passe PostgreSQL (même valeur que ci-dessus)
PAPERLESS_SECRET_KEY Clé secrète unique (générez-en une avec openssl rand -base64 32)
PAPERLESS_URL Votre IP ou nom de domaine
PAPERLESS_ADMIN_USER Nom d'utilisateur admin (optionnel, par défaut "admin")
PAPERLESS_ADMIN_PASSWORD Mot de passe du compte admin
PAPERLESS_ADMIN_MAIL Votre adresse email
USERMAP_UID / USERMAP_GID Votre UID:GID (trouvé avec id)
PAPERLESS_OCR_LANGUAGE Langues OCR : fra (français), eng (anglais), deu (allemand), spa (espagnol), etc.

💡 Générer une clé secrète sécurisée :

openssl rand -base64 32

3. Déploiement de Paperless-ngx

Lancez le stack complet :

cd /opt/paperless-ngx
docker compose up -d

Vérifiez que tous les conteneurs sont démarrés :

docker compose ps

Vous devriez voir 5 conteneurs avec le statut "Up" :

  • paperless-ngx - Application principale
  • paperless-db - Base de données PostgreSQL
  • paperless-redis - Cache Redis
  • paperless-gotenberg - Conversion Office
  • paperless-tika - Extraction de texte

Surveillez les logs pendant le démarrage initial :

docker compose logs -f

Attendez que l'initialisation soit terminée (peut prendre 1-2 minutes au premier démarrage).


4. Première connexion

Accédez à l'interface web :

http://VOTRE-IP:8095

Connectez-vous avec les identifiants définis :

  • Nom d'utilisateur : admin (ou celui défini dans PAPERLESS_ADMIN_USER)
  • Mot de passe : celui défini dans PAPERLESS_ADMIN_PASSWORD

🎉 Félicitations ! Paperless-ngx est opérationnel !


5. Configuration initiale recommandée

Paramètres OCR (Settings → OCR) :

  • OCR mode : skip (sauter si texte déjà présent)
  • OCR language : Vérifier que fra+eng est bien configuré
  • Auto-rotate pages : Activé ✅

Métadonnées de base à créer :

1. Correspondants (Correspondents)

Créez des correspondants pour identifier automatiquement les expéditeurs/destinataires :

  • EDF, Orange, Banque, Assurance, Employeur, etc.

2. Tags

Organisez vos documents avec des tags :

  • Facture, Contrat, Administratif, Personnel, Impôts, Santé, etc.

3. Types de documents (Document types)

Catégorisez vos documents :

  • Facture, Contrat, Courrier, Reçu, Certificat, etc.

4. Chemins de stockage (Storage paths) - Optionnel

Organisez physiquement vos documents archivés sur le disque.


6. Test avec un fichier Office

Méthode 1 : Upload via l'interface web

  1. Cliquez sur le bouton "Upload" en haut à droite
  2. Sélectionnez un document Word, Excel ou PowerPoint
  3. Attendez le traitement (quelques secondes à quelques minutes)
  4. Vérifiez que le document apparaît dans la liste
  5. Ouvrez-le et testez la recherche de texte

Méthode 2 : Dépôt dans le dossier consume

# Copiez un fichier dans le dossier consume
cp ~/document-test.docx /opt/paperless-ngx/consume/

# Surveillez les logs du traitement
docker compose logs -f webserver

Le fichier sera automatiquement détecté, traité et supprimé du dossier consume une fois indexé.


7. Commandes utiles

Gestion du stack :

# Voir les logs
docker compose logs -f

# Redémarrer tous les conteneurs
docker compose restart

# Arrêter le stack
docker compose stop

# Démarrer le stack
docker compose start

# Redéployer après modification du docker-compose.yml
docker compose up -d

# Mettre à jour les images
docker compose pull
docker compose up -d

Logs spécifiques :

# Logs de Paperless-ngx
docker compose logs -f webserver

# Logs de PostgreSQL
docker compose logs -f db

# Logs de Gotenberg (conversion Office)
docker compose logs -f gotenberg

# Logs de Tika (extraction texte)
docker compose logs -f tika

Gestion des utilisateurs :

# Créer un utilisateur supplémentaire
docker exec -it paperless-ngx python3 manage.py createsuperuser

# Changer le mot de passe d'un utilisateur
docker exec -it paperless-ngx python3 manage.py changepassword admin

8. Architecture de la solution

Service Rôle Port
Paperless-ngx Application GED principale avec interface web 8095
PostgreSQL Base de données pour métadonnées et index Interne
Redis Cache et file d'attente pour traitement asynchrone Interne
Gotenberg Conversion de fichiers Office (docx, xlsx, pptx) vers PDF Interne
Tika Extraction de texte et métadonnées de tous types de fichiers Interne

Flux de traitement d'un document :

  1. 📄 Document déposé dans consume/ ou uploadé via l'interface
  2. 🔄 Tika extrait le texte et les métadonnées
  3. 📋 Gotenberg convertit les fichiers Office en PDF si nécessaire
  4. 👁️ OCR (Tesseract) analyse les images et PDFs scannés
  5. 💾 Document stocké dans media/, métadonnées dans PostgreSQL
  6. 🔍 Document indexé et recherchable instantanément

Fonctionnalités principales

✅ Ce que Paperless-ngx peut faire :

  • 📸 OCR multilingue sur documents scannés
  • 📁 Traitement automatique des fichiers Office (Word, Excel, PowerPoint)
  • 🔍 Recherche plein texte ultra-rapide
  • 🏷️ Organisation avec tags, correspondants et types de documents
  • 📱 Application mobile (Android/iOS) pour scanner directement
  • 📧 Import automatique depuis email (via fetchmail/getmail)
  • 🔄 Règles de traitement automatiques
  • 📤 Export en masse (PDF, ZIP)
  • 👥 Multi-utilisateurs avec permissions
  • 🌐 API REST complète pour intégrations
  • 🔒 Stockage local sécurisé (RGPD compliant)

Dépannage rapide

Problème Solution
Conteneurs ne démarrent pas Vérifiez les logs : docker compose logs
Erreur de permissions Vérifiez les UID:GID dans le docker-compose.yml et les permissions des dossiers
PostgreSQL ne démarre pas Vérifiez l'espace disque et les logs : docker compose logs db
OCR ne fonctionne pas Vérifiez la langue configurée dans PAPERLESS_OCR_LANGUAGE
Fichiers Office non traités Vérifiez les logs de Gotenberg et Tika
Interface web inaccessible Vérifiez le port 8095 et les logs du webserver

Réinitialisation complète (⚠️ PERTE DE DONNÉES) :

docker compose down -v
sudo rm -rf /opt/paperless-ngx/{postgres,redis,data,media}/*
docker compose up -d

Conclusion

Vous avez maintenant une installation complète de Paperless-ngx opérationnelle ! Cette solution vous permet de :

  • ✅ Dématérialiser tous vos documents papier
  • ✅ Organiser factures, contrats et courriers administratifs
  • ✅ Rechercher instantanément dans tous vos documents
  • ✅ Traiter automatiquement les fichiers Office
  • ✅ Respecter le RGPD avec hébergement local

🎯 Paperless-ngx transforme votre chaos documentaire en bibliothèque numérique parfaitement organisée !


Pour aller plus loin

  • 🔒 Sécurité : Configurez un reverse proxy (Nginx, Traefik) avec HTTPS
  • 📧 Email : Intégrez fetchmail pour import automatique des pièces jointes
  • 📱 Mobile : Installez l'app Paperless Mobile pour scanner avec votre smartphone
  • 💾 Sauvegarde : Automatisez les backups des dossiers data/, media/ et postgres/
  • 🔄 Automatisation : Créez des règles de traitement pour tag et classement automatiques
  • 🌐 Accès distant : Utilisez Cloudflare Tunnel ou Tailscale pour accès sécurisé depuis l'extérieur

dimanche 26 octobre 2025

Debian 13 (Trixie) – autofs : monter automatiquement un partage réseau CIFS/SMB

Debian 13 (Trixie) – Tutoriel autofs : montage automatique de partages réseau CIFS/SMB

Debian 13 (Trixie) – autofs : monter automatiquement un partage réseau CIFS/SMB

Dans ce tutoriel, je vais vous montrer comment utiliser le démon autofs pour monter automatiquement à la demande un ou plusieurs partages réseau Samba/CIFS sous Debian 13. Cela permet d’exploiter des partages comme ceux d’une box, d’un NAS ou d’un serveur, sans avoir à les monter manuellement à chaque démarrage ou à laisser des montages « persistants » inutilisés.


🧩 Prérequis

  • Une installation fonctionnelle de Debian 13 (Trixie).
  • Un accès root ou un utilisateur avec privilèges sudo.
  • Le ou les serveurs de fichiers accessibles via le réseau (ex : //192.168.x.x/Partage).
  • Les informations d’authentification (nom d’utilisateur + mot de passe) si le partage est protégé.

1️⃣ Installation des paquets

Sous Debian 13, installez les paquets nécessaires :

sudo apt update
sudo apt install autofs cifs-utils
  • autofs : le démon qui gère le montage automatique.
  • cifs-utils : fournit les outils et le support pour les partages CIFS/SMB.

2️⃣ Création des répertoires de base

sudo mkdir -p /mnt/autofs/smb

Vous pouvez évidemment adapter le chemin si vous préférez un autre emplacement.


3️⃣ Configuration de autofs

a) Fichier /etc/auto.master

Éditez le fichier et ajoutez la ligne suivante :

/mnt/autofs/smb  /etc/auto.smb  --ghost,--timeout=30

Explications :

  • /mnt/autofs/smb : répertoire racine des montages automatiques.
  • /etc/auto.smb : fichier de configuration (map).
  • --ghost : affiche les répertoires même avant montage.
  • --timeout=30 : démonte après 30 s d’inactivité.

b) Fichier /etc/auto.smb

Créez ce fichier avec vos partages réseau :

Document     -fstype=cifs,rw,uid=1000,gid=1000,credentials=/root/.creds_qnap,vers=3.0  ://192.168.50.100/Document
GoFlexHome   -fstype=cifs,rw,uid=1000,gid=1000,credentials=/root/.creds_goflex,vers=1.0  ://192.168.50.49/"GoFlex Home Public"
Freebox      -fstype=cifs,rw,uid=1000,gid=1000,credentials=/root/.creds_freebox,vers=3.0  ://192.168.50.254/Freebox

Notes :

  • Les noms (Document, GoFlexHome, etc.) deviennent des sous-répertoires dans /mnt/autofs/smb/.
  • uid=1000,gid=1000 : à adapter selon votre utilisateur.
  • credentials=... : fichier contenant les identifiants.
  • vers=3.0 : version du protocole SMB à forcer (préférée).

c) Fichiers d’identification

Créez un fichier d’identifiants sécurisé pour chaque partage :

sudo nano /root/.creds_qnap

Contenu du fichier :

username=qnapuser
password=leMotDePasse

Protégez-le :

sudo chmod 600 /root/.creds_qnap

Répétez pour les autres fichiers (.creds_goflex, .creds_freebox, etc.).


4️⃣ Test de la configuration

Avant de mettre en service :

sudo automount -f -v

Puis, dans une autre console :

ls /mnt/autofs/smb/Document
ls /mnt/autofs/smb/Freebox

Si le montage s’effectue correctement, redémarrez le service :

sudo systemctl restart autofs

Et activez-le au démarrage :

sudo systemctl enable autofs

5️⃣ Conseils & bonnes pratiques

  • Utilisez vers=3.0 ou vers=2.0 pour plus de sécurité.
  • L’option --timeout=30 démonte après inactivité, pratique pour un usage ponctuel.
  • Vérifiez les permissions uid/gid pour éviter les fichiers appartenant à root.
  • Si vous obtenez une erreur NT_STATUS_ACCESS_DENIED, vérifiez les droits côté serveur.
  • Pour un partage public, utilisez guest,uid=1000,gid=1000 sans credentials.
  • Sur un NAS récent, assurez-vous que SMBv3 est activé.

✅ Conclusion

Avec cette configuration mise à jour pour Debian 13, vous disposez d’un système robuste qui monte automatiquement les partages réseau CIFS/SMB à la demande, sans avoir besoin de fstab statique. Simple, rapide et idéal pour les environnements domestiques ou professionnels.

Article mis à jour en octobre 2025 par FrechDesign pour Debian 13 Trixie.

dimanche 12 octobre 2025

Préparer une Debian 13 minimaliste : la configuration idéale pour un serveur ou une VM

🧾 Base d’installation Debian 13 (Trixie) — configuration minimale et outils indispensables

🎯 Objectif

Préparer une installation Debian 13 moderne, stable et agréable à utiliser, avec un environnement minimal et les utilitaires essentiels pour l’administration système. Le but : une base propre, performante et lisible à chaque connexion.


🧩 1. Installation de Debian 13

Lors de l’installation :
– Choisir installation minimale (sans interface graphique)
– Créer un utilisateur standard (ex. : stagiaire)
– Activer le service SSH pour la gestion à distance.

Debian GNU/Linux 13 srv-docker-01 tty1
srv-docker-01 login:

🔑 2. Activer sudo pour l’utilisateur

su -
apt update
apt install sudo -y
usermod -aG sudo stagiaire

Vérifie :

groups stagiaire
# → doit contenir 'sudo'
sudo whoami
# → root

🧱 3. Activer les dépôts complets Debian 13

sudo nano /etc/apt/sources.list

Ajoute :

deb http://deb.debian.org/debian trixie main contrib non-free-firmware non-free
deb http://security.debian.org/debian-security trixie-security main contrib non-free-firmware non-free
deb http://deb.debian.org/debian trixie-updates main contrib non-free-firmware non-free
sudo apt update
sudo apt full-upgrade -y

⚙️ 4. Installer les outils de base

sudo apt install -y \
  curl wget git vim nano htop lsb-release ca-certificates \
  unzip zip tar gnupg apt-transport-https net-tools \
  bash-completion make

Note : le paquet software-properties-common n’existe plus sur Debian 13.


🎨 5. Ajouter un affichage système (logo Debian + infos)

Option A – pfetch

sudo apt install pfetch -y
echo "pfetch" >> ~/.bashrc

Option B – neofetch (compilation manuelle)

git clone https://github.com/dylanaraps/neofetch.git
cd neofetch
sudo make install
echo "neofetch" >> ~/.bashrc

Copie éventuelle dans /usr/local/bin :

sudo cp ~/neofetch/neofetch /usr/local/bin/

🖥️ 6. Installer btop — moniteur système moderne

sudo apt install btop -y
btop
echo "alias top='btop'" >> ~/.bashrc
source ~/.bashrc

btop offre une interface claire, fluide et très lisible pour surveiller CPU, mémoire, réseau et disques.


💡 7. Réglages confort

echo "export LS_OPTIONS='--color=auto'" >> ~/.bashrc
echo "alias ls='ls $LS_OPTIONS'" >> ~/.bashrc
echo "alias ll='ls -lh'" >> ~/.bashrc
source ~/.bashrc

✅ 8. Résumé — ta base Debian 13 est prête

ÉlémentObjectifStatut
Dépôts main/contrib/non-freeAccès complet aux paquets
Utilisateur sudoAdministration sans root permanent
Outils systèmeBase Unix classique
pfetch ou neofetchLogo Debian ASCII à la connexion
btopSupervision moderne
Aliases & couleurs bashConfort d’utilisation

🚀 Résultat final

stagiaire@srv-docker-01
-----------------------
OS: Debian GNU/Linux 13 (trixie)
Kernel: 6.12.48-amd64
Uptime: 1h 12m
CPU: Intel Xeon E5 @ 2.3GHz
RAM: 734MiB / 15936MiB

✨ Conclusion

Tu disposes maintenant d’une base Debian 13 solide, stable et agréable, idéale pour :
– un environnement serveur minimal ;
– un poste d’administration en SSH ;
– ou tout simplement un système Unix clair et rapide à maintenir.

Une Debian propre, lisible et efficace — la meilleure fondation pour tout projet serveur.

jeudi 29 mai 2025

Dockker - 001 - De zéro à HTTPS : Déployer SWAG sur Debian avec Docker et OVH

Installer SWAG sur Debian avec Docker et gérer les DNS OVH

Dans ce tutoriel, découvrez comment installer SWAG (Secure Web Application Gateway) sur une distribution Debian, configurer Docker avec Portainer, et sécuriser vos domaines via les certificats Let's Encrypt avec l'API OVH.

🎯 Objectifs

  • Mettre en place un reverse proxy SWAG avec Docker
  • Gérer les conteneurs via Portainer
  • Sécuriser les domaines avec les certificats OVH + Let's Encrypt

🛠️ Prérequis

  • Machine Debian 12.5 installée
  • Utilisateur avec droits sudo
  • Accès à un compte OVH

🧭 Étapes

1️⃣ Installer Debian et sudo

  1. Installer Debian 12.5 avec l’utilisateur stagiaire.
  2. Installer sudo :
    su -
    apt-get install sudo
    adduser stagiaire sudo
    reboot

2️⃣ Installer Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


3️⃣ Ajouter l’utilisateur au groupe Docker

sudo usermod -aG docker stagiaire
sudo reboot

4️⃣ Installer Portainer (interface Web Docker)

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9443:9443 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:2.21.1

Accédez à l’interface Web :

https://localhost:9443

5️⃣ Déployer SWAG (Secure Web Application Gateway)

docker volume create swag_data
sudo mkdir -p /volume1/docker/swag/config

Depuis Portainer, déployez l’image linuxserver/swag.

Une fois lancé, stoppez le conteneur pour configurer les certificats.

🔗 Accès :

https://dashboard.portail.domaine.fr/

🔐 Configuration des certificats via l’API OVH

1. Obtenir les clés OVH

Accédez à l’outil d’authentification :

Créer un token API OVH


2. Ajouter les clés dans le fichier ovh.ini

nano /volume1/docker/swag/config/dns-conf/ovh.ini

Collez les clés fournies (endpoint, application_key, application_secret, consumer_key).

3. Redémarrer le container SWAG

docker restart swag

Consultez les logs pour vérifier qu’il n’y a pas d’erreur.

📷 Capture d’écran suggérée : Logs Docker avec message "certificate successfully acquired"

🔒 Activer HTTPS sur Portainer

  1. Ajoutez une entrée DNS locale ou publique pointant vers votre serveur.
  2. Créez une configuration Nginx pour Portainer dans SWAG.
  3. Redémarrez le container SWAG.

📷 Capture d’écran suggérée : Portainer en HTTPS dans le navigateur

📚 Ressources utiles


Article rédigé par Yassin, passionné d’auto-hébergement et d’infra légère.

jeudi 10 avril 2025

Perplexica + Ollama + SearXNG : la solution locale pour interroger vos modèles IA

🧠 Installer Perplexica — Une interface locale pour interroger vos LLMs auto-hébergés !

Perplexica est une interface web qui vous permet d'interroger plusieurs LLMs (comme ceux d’Ollama) et d’enrichir vos réponses avec des résultats issus de moteurs de recherche comme SearXNG. Dans ce tutoriel, nous allons l’installer et la configurer dans un environnement Docker, comme pour Linkwarden !

✅ Prérequis

  • Docker et Portainer sont déjà installés. Si ce n’est pas le cas, suivez ce tutoriel.
  • SWAG est installé. Si ce n’est pas le cas, suivez ce tutoriel.
  • Un nom de domaine du type perplexica.portail.domaine.fr qui pointe vers votre serveur SWAG.
  • L’IP de votre serveur SWAG (ex : 192.168.1.150).
  • Une instance de SearXNG déjà en place (nous allons réutiliser son URL).

🗂️ Étape 1 : Création des dossiers

Ouvrez une console SSH sur votre NAS ou serveur et tapez les commandes suivantes :

sudo mkdir /volume1/docker/perplexica
cd /volume1/docker/perplexica

🔄 Étape 2 : Clonage du dépôt Git

sudo git clone https://github.com/ItzCrazyKns/Perplexica.git
sudo chown stagiaire -R Perplexica/

📝 Étape 3 : Configuration de Perplexica

Renommez le fichier de configuration d’exemple :

mv Perplexica/sample.config.toml Perplexica/config.toml
nano Perplexica/config.toml

Dans ce fichier, modifiez les lignes suivantes pour ajouter l'URL de votre instance Ollama et SearXNG, comme sur la capture :

[MODELS.OLLAMA]
API_URL = "http://host.docker.internal:11434"

[API_ENDPOINTS]
SEARXNG = "http://localhost:32768"

📸 Capture d'écran de la configuration :



🐳 Étape 4 : Docker Compose (sans SearXNG)

Pas besoin d’installer SearXNG si vous l’avez déjà. Modifiez le docker-compose.yml dans le dossier cloné pour enlever le service searxng.

Ouvrir le fichier :

nano Perplexica/docker-compose.yml

Supprimez ou commentez la section searxng: et tout ce qui y est lié (réseaux, volumes, etc).

🚀 Étape 5 : Lancement de l'application

cd Perplexica
docker compose up -d

🌐 Étape 6 : Configuration SWAG pour HTTPS

Ajoutez une configuration nginx dans SWAG :

sudo nano /volume1/docker/swag/config/nginx/proxy-confs/perplexica.subdomain.conf

Collez le contenu de ce gist :
👉 https://gist.github.com/gamersalpha/4fd1bce02f0f1826cdfd7c11b38b624e

Et changez cette ligne :

server_name perplexica.*;

Par votre domaine :

server_name perplexica.portail.domaine.fr;

Puis redémarrez le container SWAG :

docker restart swag

✅ Accès à Perplexica

Vous pouvez maintenant accéder à Perplexica via :

➡️ https://perplexica.portail.domaine.fr

🔗 Liens utiles

samedi 4 janvier 2025

Configurer OPNsense pour Héberger un Serveur ARK: Survival Ascended

Héberger un serveur ARK: Survival Ascended derrière un pare-feu OPNsense peut sembler complexe, mais avec la bonne configuration, c'est tout à fait réalisable. 

Cet article vous guide pas à pas dans la configuration d'OPNsense pour permettre à votre serveur ARK de fonctionner correctement, même dans un environnement de double NAT.


Pré-requis

Avant de commencer, assurez-vous d'avoir les informations suivantes :

  • Adresse IP locale du serveur ARK : par exemple, 192.168.1.120.
  • Adresse IP WAN d'OPNsense : par exemple, 192.168.25.12 (fournie par votre routeur FAI).
  • Les ports nécessaires pour le serveur ARK :
    • UDP 7777 : Port de jeu.
    • UDP 7778 : Port de pair.
    • UDP 27015 : Port de requête.
    • TCP 27020 : Port RCON (optionnel).

Étape 1 : Désactiver la Règle "Block Private Networks"

Lorsque vous utilisez OPNsense derrière un routeur FAI, l'interface WAN d'OPNsense reçoit une adresse IP privée (192.168.x.x). Par défaut, OPNsense bloque le trafic provenant de ces IP sur l'interface WAN.

Procédure :

  1. Accédez à Interfaces > WAN.
  2. Décochez l'option Block private networks.
  3. Cliquez sur Save, puis sur Apply Changes.

Note : Cette étape est indispensable dans un environnement de double NAT. Si vous ne pouvez pas désactiver cette règle, envisagez de mettre votre routeur FAI en mode bridge.


 


Étape 2 : Configurer la Redirection NAT

La redirection NAT (ou "Port Forwarding") permet de transmettre le trafic entrant depuis l'interface WAN vers le serveur ARK.

Ajouter une Règle NAT pour chaque port :

  1. Accédez à Firewall > NAT > Port Forward.
  2. Cliquez sur Add (+).
  3. Configurez les paramètres suivants :
    • Interface : WAN.
    • Protocol : UDP (pour les ports 7777, 7778, et 27015).
    • Destination : WAN address.
    • Destination port range :
      • From : 7777, To : 7777 (ou le port correspondant).
    • Redirect target IP : 192.168.1.120 (adresse IP de votre serveur ARK).
    • Redirect target port : Identique au port d'origine.
    • Description : Exemple : ARK Game Server - UDP 7777.
  4. Cliquez sur Save, puis Apply Changes.

Répétez ces étapes pour chaque port :

  • UDP 7778
  • UDP 27015
  • TCP 27020 (si RCON est utilisé).

Étape 3 : Vérifier les Règles de Pare-feu

OPNsense crée automatiquement des règles de pare-feu associées aux redirections NAT. Pour vérifier :

  1. Allez dans Firewall > Rules > WAN.
  2. Assurez-vous qu'il existe une règle pour chaque port (7777, 7778, 27015, 27020).
    • Si une règle manque, ajoutez-la manuellement :
      • Action : Pass.
      • Protocol : UDP (ou TCP pour RCON).
      • Source : any.
      • Destination : WAN address.
      • Destination port range : Le port à autoriser (par ex. 7777).

Étape 4 : Configurer le Routeur FAI

Si vous êtes en double NAT, votre routeur FAI doit rediriger le trafic entrant vers l'interface WAN d'OPNsense (192.168.25.12).

Ajouter des Règles de Redirection sur le Routeur FAI :

  1. Connectez-vous à l'interface d'administration de votre routeur.
  2. Ajoutez des règles de Port Forwarding pour chaque port mentionné plus haut :
    • UDP 7777 vers 192.168.25.12.
    • UDP 7778 vers 192.168.25.12.
    • UDP 27015 vers 192.168.25.12.
    • TCP 27020 vers 192.168.25.12.
  3. Appliquez les modifications.

Étape 5 : Vérifier la Connectivité

Tester les Ports :

Utilisez un outil comme canyouseeme.org ou nmap pour vérifier si les ports sont accessibles depuis l'extérieur.

Observer les Logs :

  1. Accédez à Firewall > Log Files > Live View.
  2. Vérifiez que les paquets destinés aux ports (par exemple, 7777) sont reçus et transmis à votre serveur ARK.

Étape 6 : Résolution des Problèmes

Si le serveur n'est toujours pas accessible :

  1. Vérifiez les Logs du Pare-feu :
    • Si le trafic est bloqué, vérifiez les règles NAT et pare-feu.
  2. Testez depuis le Réseau Local :
    • Essayez de vous connecter à l'IP locale du serveur ARK (192.168.1.120).
  3. Assurez-vous que le Serveur ARK est Démarré :
    • Vérifiez que les ports nécessaires sont configurés dans le fichier de configuration du serveur ARK.

Conclusion

Avec cette configuration, votre serveur ARK: Survival Ascended devrait être accessible depuis l'extérieur, même avec un pare-feu OPNsense. N'oubliez pas d'ajouter vos captures d'écran pour illustrer chaque étape et de tester minutieusement la configuration.

Si vous avez des questions ou souhaitez partager votre expérience, n'hésitez pas à laisser un commentaire ci-dessous ! 😊

mardi 8 octobre 2024

Docker - Swag - Install Ollama + Open WebUI - de l'intelligence artificielle à la maison !

 Nous allons installer Ollama + une interface web pour intéragire avec l'ia !!

Prérequis

  • Docker et Portainer sont déjà installés. si ce n'est pas le cas, suivez ce tutorial
  • SWAG est déjà installé. Si ce n'est pas le cas, suivez ce tutoriel pour l'installation de SWAG.
  • Un nom de domaine de type home.portail.domaine.fr pointant vers le serveur SWAG.
  • l'ip du serveur SWAG, dans notre cas : 192.168.1.150

Sommaire :
 Etape 1 : Création des dossiers de stockage :

> sudo mkdir /volume1/docker/ollama-web/data
> sudo mkdir /volume1/docker/ollama-web/ollama
> sudo mkdir /volume1/docker/ollama-web/web-openui

 Etape 2 : Installation du STACKS dans Portainer
Copier coller ce gist : https://gist.github.com/gamersalpha/0d04ebd8f3f5e68413428cb08bef841d
et déployer le stack


 Etape 3 : démarrage et activation https via swag

sur le dossier de nginx proxy conf, décommenter le fichier de conf : 
open-webui.subdomain.conf

penser à modifier la ligne 40 avec l'ip de votre instance

enregistrer et redémarrer swag





Docker - Portainer - Installation Linkwarden - gestionnaire de favoris en ligne

Nous allons installer Linkwarden, un gestionnaire de favoris parfait pour la maison !

Prérequis

  • Docker et Portainer sont déjà installés. si ce n'est pas le cas, suivez ce tutorial
  • SWAG est déjà installé. Si ce n'est pas le cas, suivez ce tutoriel pour l'installation de SWAG.
  • Un nom de domaine de type linkwarden.portail.domaine.fr pointant vers le serveur SWAG.
  • l'ip du serveur SWAG, dans notre cas : 192.168.1.150

Sommaire :

 Etape 1 : Création des dossiers 

Création des dossiers en ligne de commande : 

> sudo mkdir /volume1/docker/linkwarden/data
> sudo mkdir /volume1/docker/linkwarden/db

 Etape 2 : Installation du STACKS dans Portainer

récupérer le gist ici : https://gist.github.com/gamersalpha/96d0c7cf6079e55089d44d35f04b9604

et le copier dans le stack de Portainer
il faut changer la ligne 37, générer un nouveau mot de passe personnaliser pour votre instance

 Etape 3 : démarrage et activation https via swag
 Etape 4 : Accès à Linkwarden
 Webologie

Actions

 Etape 1 : Installation du STACKS dans Portainer

https://gist.github.com/gamersalpha/96d0c7cf6079e55089d44d35f04b9604

cliquer sur déploy the stack



 Etape 2 : démarrage et activation https via swag

Linkwarden n'est pas présent dans les templates par défaut nous allons le créer :

> sudo nano /volume1/docker/swag/config/nginx/proxy-confs/linkwarden.subdomain.conf

et copier le contenu disponible ici --> https://gist.github.com/gamersalpha/4fd1bce02f0f1826cdfd7c11b38b624e

Changer la ligne suivante : 
5--> Avec votre domaine de l'application

> Redemmérer votre container Swag

et voila ! 

vous avez accès  à votre linkwarden auto hébergé et en accés https sécurisé !!




 Etape 3 : Accès à Linkwarden
 Webologie
https://mariushosting.com/how-to-install-linkwarden-on-your-synology-nas/
https://github.com/linkwarden

samedi 21 septembre 2024

Swag Docker Homepage installation

Nous allons installer homepage un utilitaire qui vous permet de vous faire votre propre page de garde sur votre réseau LAN


Prérequis

  • Docker et Portainer sont déjà installés. si ce n'est pas le cas, suivez ce tutorial
  • SWAG est déjà installé. Si ce n'est pas le cas, suivez ce tutoriel pour l'installation de SWAG.
  • Un nom de domaine de type home.portail.domaine.fr pointant vers le serveur SWAG.
  • l'ip du serveur SWAG, dans notre cas : 192.168.1.150

Sommaire :
 Etape 1 : Installation du STACKS dans Portainer
 Etape 2 : démarrage et activation https via swag
 Etape 3 : personnalisation de homepage

Actions :

 Etape 1 : Installation du STACKS dans Portnaire

Création des dossiers en ligne de commande : 

> sudo mkdir /volume1/docker/homepage/images
> sudo mkdir /volume1/docker/homepage/images
> sudo mkdir /volume1/docker/homepage/images

Création du stack --> Cliquer ici
et le déployer

Etape 2 activation du https avec Swag : 

activer le fichier config/nginx/prox-conf/homepage.subdomain.conf

changer la ligne : 

        set $upstream_app homepage;

par
        set $upstream_app 192.168.1.150;

Faire pointer son ip sur le domaine voulu : 





Redemmarer swag

et se connecter à la page : 



ajouter du paramétrage


Webologie : 
https://belginux.com/installer-homepage-avec-docker/

vendredi 20 septembre 2024

Docker - 001 - Installation de DEBIAN - Docker + Portainer + swag + let's encrypte wildcard !

Objectifs :

Installer Swag sur un serveur Debian pour gérer les domaines et les paramètres DNS OVH.

Prérequis :

Une machine pour installer Debian

Sommaire :

Étape 1 : Installation du système d'exploitation Debian

Étape 2 : Installation Docker

Étape 3 : Configuration de Docker et création d'un utilisateur Docker

Étape 4 : Installation de Portnaire : web interface portnaire

Étape 5 : Installation de Swag : reverse proxy


Actions :

Étape 1 : Installation du système d'exploitation Debian

    1.1. Installer Debian 12.5 avec le nom d'utilisateur "stagiaire"

non détaillé

    1.2. Installer sudo et ajouter l'utilisateur "stagiaire" au groupe sudo.

> su -

> apt-get install sudo

> adduser stagiaire sudo

> reboot

Étape 2 : Installation Docker

Installer se script : Cliquer ici

> sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Étape 3 : Configuration de Docker et création d'un utilisateur Docker

> sudo usermod -aG docker stagiaire

> sudo reboot

Étape 4 : Installation de Portnaire : web interface portnaire

>  docker volume create portainer_data

>  docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.1


connect web access : https://localhost:9443

Étape 5 : Installation de Swag : reverse proxy

>  docker volume create swag_data
> sudo mkdir -p /volume1/docker/swag/config

> Sur l'interface web : Le docker à utiliser : Cliquer ici


une fois déployer il faut arrêter le container : 



Vous disposer donc aussi de l'accés au dashboard Swag : 

https://dashboard.portail.domaine.fr/
 


Pour continuer il faut récupérer les codes OVH pour le certificats :

Allez sur cette page pour plus d'information : Cliquer ici

Résumer du process:
    Etape 1 :  allé sur ce site : Cliquer ICI et connectez vous : 

    Etape 2 : Remplie le formulaire et cliquer sur create


Etape 3 : récupération de clé : 

En ligne de commande : 

> nano  /volume1/docker/swag/config/dns-conf/ovh.ini 
ajouter les clés ci-dessus : 



Redemmarer le serveur Swag : 


Cliquer sur l'affichage de log : 


si pas de message d'erreur c'est OK


On va maintenant mettre le DNS portnaire en HTTPS : 


Ajouter sur votre DNS local l'ip sur le nom de domaine : 
et c''est OK : 



Se connecter en ligne de commande au container : 

Copier coller le fichier de conf : 

changer quelque paramètre : 



Redemmarer le container

et c'est fonctionnel !










Webologie : 


https://docs.docker.com/engine/install/debian/

samedi 1 juin 2024

Installation de Jellyfin sur Docker avec Portainer et Activation de HTTPS

Dans ce tutoriel, nous allons vous montrer comment installer Jellyfin en utilisant Docker et Portainer, puis comment activer l'accès HTTPS. Nous partons du principe que Docker, Portainer et SWAG (Secure Web Application Gateway) sont déjà installés.

Prérequis

  • Docker et Portainer sont déjà installés. si ce n'est pas le cas, suivez ce tutorial
  • SWAG est déjà installé. Si ce n'est pas le cas, suivez ce tutoriel pour l'installation de SWAG.
  • Un nom de domaine de type jellyfin.portail.domaine.fr pointant vers le serveur SWAG.
  • l'ip du serveur SWAG, dans notre cas : 192.168.1.128

Étape 1: Connexion à l'interface web de Portainer

  1. Ouvrez votre navigateur et accédez à l'interface web de Portainer. L'adresse typique est : https://portainer.portail.domaine.fr.
  2. Connectez-vous avec vos identifiants Portainer.



Étape 2: Accéder aux environnements

  1. Depuis l'écran d'accueil de Portainer, cliquez sur la petite baleine bleue à côté de "Local" sous la section "Environments".
  2. Cliquez ensuite sur "Containers" (l'icône avec un cercle blanc et un cube bleu).



Étape 3: Ajouter un nouveau conteneur

  1. Sur l'écran de la liste des conteneurs, cliquez sur "+ Add Container".


Étape 4: Configuration du conteneur Jellyfin

  1. Dans l'écran de création du conteneur, ajoutez les informations suivantes :

    • Nom: Choisissez un nom pour votre conteneur (exemple : Jellyfin).
    • Image: linuxserver/jellyfin
  2. Publication des ports :

    • Cliquez trois fois sur "+ Publish new network port" et ajoutez les informations suivantes :
      • Host = 8096, Container = 8096 (assurez-vous que TCP est sélectionné)
      • Host = 7359, Container = 7359 (assurez-vous que UDP est sélectionné)
      • Host = 1900, Container = 1900 (assurez-vous que UDP est sélectionné)



Étape 5: Configuration avancée des conteneurs

  1. Faites défiler vers le bas jusqu'à "Advanced container settings".

  2. Cliquez sur "Volumes" et près de "Volume mapping", cliquez sur le bouton "+ map additional volume" autant de fois que nécessaire pour vos dossiers partagés. Par exemple, si vous avez des dossiers pour des films, des séries TV et des événements sportifs, cliquez 4 fois pour obtenir 4 volumes.

    • Container: /config Volume: /home/VOTRE_NOM_UTILISATEUR/Downloads/jellysrv/config
    • Container: /data/tvshows Volume: /media/VOTRE_NOM_UTILISATEUR/tvshows/tv
    • Container: /data/movies Volume: /media/VOTRE_NOM_UTILISATEUR/movies/movie
    • Container: /data/sports Volume: /media/VOTRE_NOM_UTILISATEUR/sports/sportsevents

    Assurez vous que tous les conteneurs sont définis sur BIND et que tous les volumes sont en mode ÉCRITURE.


ATTENTION pour la partie config, j'ai mis en place un VOLUME dédié

Étape 6: Ajouter des variables d'environnement

  1. Cliquez sur "Env" et ajoutez trois variables d'environnement :
    • Name: PUID, Value: 1000
    • Name: PGID, Value: 1000
    • Name: TZ Value: America/New_York (Remplacez par votre fuseau horaire)


Étape 7: Déployer le conteneur

  1. Enfin, juste au-dessus de "ADVANCED CONTAINER SETTINGS", cliquez sur "DEPLOY THE CONTAINER".


  1. Si tout est configuré correctement, vous devriez pouvoir accéder à la page web du serveur Jellyfin à l'adresse suivante : http://192.168.1.128:8096.

Attention, nous sommes actuellement sur du HTTP. Avant d'aller plus loin, nous allons activer le HTTPS !


Étape 8: Activer l'accès HTTPS

Prérequis rappel pour cette partie : 

  • Assurez-vous que SWAG est installé. Suivez ce tutoriel si ce n'est pas le cas.
  • Un nom de domaine de type jellyfin.portail.domaine.fr pointant vers le serveur SWAG.
  • l'ip du serveur SWAG, dans notre cas : 192.168.1.128

Étape 8.1: Connexion au conteneur SWAG

  1. Accédez à l'interface de Portainer, trouvez le conteneur SWAG et cliquez sur "Console".


Étape 8.2: Copier le fichier de configuration Nginx

  1. Dans la console, exécutez la commande suivante pour copier le fichier de configuration :
cp config/nginx/proxy-confs/jellyfin.subdomain.conf.sample config/nginx/proxy-confs/jellyfin.subdomain.conf

Étape 8.3: Modifier le fichier de configuration

Éditez le fichier de configuration pour modifier l'IP du serveur SWAG. 
nano config/nginx/proxy-confs/jellyfin.subdomain.conf
  1. Recherchez la ligne suivante :
set $upstream_app jellyfin;
  1. Remplacez jellyfin par l'IP du serveur SWAG. Vous devez le faire deux fois, une fois pour la location du port 80 et une fois pour celle du port 443 :
set $upstream_app 192.168.1.128;


Étape 8.4: Redémarrer le conteneur SWAG

  1. Redémarrez le conteneur SWAG pour appliquer les modifications.



Étape 8.5: Vérifier l'accès HTTPS

  1. Accédez à https://jellyfin.portail.domaine.fr dans votre navigateur. Vous devriez maintenant voir une page sécurisée.


En suivant ces étapes, vous aurez installé Jellyfin en utilisant Docker et Portainer et activé l'accès HTTPS via SWAG. Profitez de votre nouveau serveur multimédia sécurisé !


Webologie : 
https://forum.jellyfin.org/t-jellyfin-portainer-tutorial

Déployer Paperless-ngx sur Debian 13 avec Docker et Portainer

Installation de Paperless-ngx avec Docker Compose Installation de Paperless-ngx avec Docker Compose Déployez votre GED pers...