Asustor Déployer une Stack Docker Puissante et Sécurisée : Mon Parcours et Mes Astuces pour NAS avec Portainer

Dllh3iso

Nouveau membre
20 Août 2023
13
3
3
Inspiré du projet de Tikibozo
Cette stack a été adaptée en fonction de mes besoins à partir du projet Plexarr de Tikibozo, qui propose une solution complète pour l'automatisation du téléchargement et de la gestion multimédia sous Docker.

Services inclus dans la stack​

Cette stack Docker regroupe plusieurs services permettant d’automatiser le téléchargement et la gestion multimédia :

  • gluetun – Fournit un VPN via OpenVPN/WireGuard pour sécuriser la connexion.
  • flaresolverr – Bypass Cloudflare et résout les captchas.
  • qbittorrent – Client BitTorrent pour télécharger des torrents.
  • watchtower – Met à jour automatiquement les conteneurs Docker.
  • plex – Serveur multimédia pour le streaming.
  • bazarr – Gestionnaire de sous-titres pour les films et séries.
  • sonarr – Gestionnaire de séries TV, télécharge et organise automatiquement.
  • radarr – Gestionnaire de films, similaire à Sonarr.
  • prowlarr – Gestionnaire d'indexeurs pour torrents et NZB.
  • jackett – Proxy pour les indexeurs torrents.
  • homepage – Tableau de bord pour gérer les services.
  • tautulli – Suivi et analyse des statistiques de Plex.
  • overseerr – Permet aux utilisateurs de demander du contenu pour Plex.
  • autobrr – Gestionnaire de téléchargements torrents automatisés.
  • tdarr – Outil d'optimisation et de transcodage vidéo.
  • organizr – Portail unifié pour gérer plusieurs services web.
  • whisper – Service de reconnaissance vocale basé sur OpenAI Whisper.
⚠️ Attention : Le paramétrage de tous ces services est long et fastidieux. Ne vous lancez pas dans cette configuration si vous n'avez pas un minimum de patience et de connaissances en gestion de serveurs et Docker.

Prérequis​

Avant d'installer cette stack Docker, assurez-vous d'avoir :

  • Un NAS Asustor AS5404T avec ADM 4.3.3.RC92 installé
  • Docker et Docker Compose installés sur votre NAS
  • Un abonnement NordVPN (ou un autre VPN compatible avec Gluetun)
  • Un dossier /data/docker/config/ pour stocker les configurations des conteneurs
  • Un dossier /data/Media/pour stocker vos fichiers multimédias

Préparer l’environnement

Avant de commencer, assurez-vous d’avoir :

  • Portainer.io installé et accessible depuis votre navigateur. (Installation avec Docker : documentation officielle)
  • Docker installé sur votre serveur/machine.
  • Les dossiers nécessaires créés sur votre serveur pour stocker les configurations et les données des services.

1. Préparer les fichiers nécessaires

a. Préparer le fichier docker-compose.yml

Assurez-vous d’avoir votre fichier docker-compose.yml prêt. Il devrait ressembler à celui que nous avons configuré précédemment, avec des variables environnementales (${}) pour tout ce qui est sensible.
Exemple :
YAML:
services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
      - OPENVPN_USER=${OPENVPN_USER}
      - OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
      - SERVER_REGIONS=${SERVER_REGIONS}
      - VPN_TYPE=${VPN_TYPE}
      - HTTP_CONTROL_SERVER=${HTTP_CONTROL_SERVER}
      - HTTP_CONTROL_SERVER_USER=${HTTP_CONTROL_SERVER_USER}
      - HTTP_CONTROL_SERVER_PASSWORD=${HTTP_CONTROL_SERVER_PASSWORD}
    volumes:
      - /docker/config/gluetun:/config
    ports:
      - 192.168.1.xx:8080:8080
    restart: unless-stoppe



b. Préparer votre fichier .env

Vous pouvez gérer vos variables sensibles directement dans un fichier .env. Exemple :



Code:
VPN_SERVICE_PROVIDER=nordvpn
OPENVPN_USER=your_vpn_username
OPENVPN_PASSWORD=your_vpn_password
SERVER_REGIONS=Canada
VPN_TYPE=openvpn
HTTP_CONTROL_SERVER=on
HTTP_CONTROL_SERVER_USER=admin_user
HTTP_CONTROL_SERVER_PASSWORD=admin_password
TZ=Europe/Paris
PUID=1000
PGID=100
WATCHTOWER_SCHEDULE=0 2 * * *

2. Créer et déployer une stack dans Portainer avec .env

Étape 1 : Connectez-vous à Portainer​

  1. Rendez-vous sur l'interface web de Portainer : http://<ip_du_serveur>:9000/.
  2. Connectez-vous avec votre compte administrateur.

Étape 2 : Créer une nouvelle stack​

  1. Dans le menu de gauche, cliquez sur "Stacks".
  2. Cliquez sur "Add Stack".

Étape 3 : Configurer la stack​

  1. Nom de la stack : Entrez un nom descriptif (par exemple : MediaStack).
  2. Mode d'édition : Collez le contenu de votre fichier docker-compose.yml dans l'éditeur Web Editor.
  3. Faites défiler vers le bas jusqu’à la section "Environment variables" :
    • Cliquez sur "Upload .env file".
    • Sélectionnez votre fichier .env localement (celui que vous avez préparé précédemment).
⚠️ Astuce importante : Portainer charge automatiquement les variables définies dans le fichier .env. Vous n’avez donc pas besoin de les spécifier manuellement dans le docker-compose.yml.

Étape 4 : Déployer la stack​

  1. Une fois tout configuré, cliquez sur "Deploy the stack".
  2. Portainer va :
    • Charger les variables d’environnement depuis .env.
    • Télécharger les images Docker nécessaires.
    • Démarrer les conteneurs.

3. Vérifier et configurer les services

Une fois la stack déployée, accédez aux services via leurs ports respectifs :
ServicePort par défautExemple URL
Gluetun8080http://<IP_du_serveur>:8080
Qbittorrent8080http://<IP_du_serveur>:8080
Plex32400http://<IP_du_serveur>:32400
Sonarr8989http://<IP_du_serveur>:8989
Radarr7878http://<IP_du_serveur>:7878
Jackett9117http://<IP_du_serveur>:9117
Overseerr5055http://<IP_du_serveur>:5055
Homepage3001http://<IP_du_serveur>:3001

4. Surveiller et maintenir les conteneurs

a. Vérifier les logs dans Portainer​

  • Cliquez sur "Containers" dans le menu de Portainer.
  • Cliquez sur un conteneur spécifique et consultez l’onglet "Logs" pour voir ses activités.

b. Mettre à jour les conteneurs automatiquement​

  • Grâce à Watchtower, vos conteneurs seront mis à jour automatiquement selon l’horaire défini dans votre .env.

5. Résolution des problèmes courants

a. Problèmes avec les variables d’environnement​

Si certaines variables ne sont pas prises en compte :
  • Assurez-vous que votre fichier .env est bien lié à votre stack lors de la création.
  • Vérifiez que les noms des variables dans le docker-compose.yml correspondent exactement à ceux du .env.

b. Problèmes réseau​

  • Si certains services ne fonctionnent pas, vérifiez que Gluetun (le conteneur VPN) est correctement configuré.
  • Les conteneurs qui utilisent network_mode: "service:gluetun" (comme Qbittorrent) doivent être redémarrés si Gluetun redémarre.

Conclusion

Grâce à l’intégration de .env directement dans Portainer, vous pouvez facilement déployer et sécuriser vos stacks. Cela permet :
  • Une gestion centralisée des informations sensibles.
  • Un déploiement simplifié avec Portainer.

7. Résolution des problèmes courants

  • Problème de réseau (VPN) : Vérifiez les logs de Gluetun via Portainer.
  • Problème d'accès aux services :
    • Vérifiez les ports ouverts.
    • Confirmez les volumes mappés et les chemins corrects.

Résumé

Ce tutoriel vous guide pour :

  1. Créer les fichiers nécessaires (docker-compose et .env).
  2. Configurer une stack complète dans Portainer.
  3. Accéder et configurer chaque service.

Remerciements et Note personnelle

Ce tutoriel est le résultat de mon apprentissage et des échanges enrichissants sur le site www.forum-nas.fr. Je tiens à remercier particulièrement Drthrax74, EVO, et tous les membres actifs de cette communauté, dont les conseils m’ont permis de progresser dans la mise en place de cette stack.

Je ne suis pas un grand spécialiste, mais je travaille chaque jour pour m’améliorer et approfondir mes connaissances dans le domaine. Ce tutoriel est donc perfectible, et j'encourage chacun à proposer des améliorations ou des suggestions pour optimiser cette stack. Ensemble, nous pouvons continuer à apprendre et à créer des solutions toujours plus efficaces.

N'hésitez pas à expérimenter, partager vos retours, et contribuer à enrichir cette configuration !
 

Pièces jointes

Dernière édition:
  • J'aime
Réactions: EVO et Asmodée