Dockge – Gestion des containers Docker

Je suis tombé sur cet outil un peu par hasard, et comme je n’étais pas satisfait des possibilités offertes par les interfaces de OMV7 ou de Portainer, j’ai testé (et adopté) Dockge.

Dockge est un gestionnaire de stack Docker, orienté Docker Compose (fichier compose.yaml). En gros, cela permet de configurer plusieurs containers dans un seul fichier, comme j’ai du le faire pour Nextcloud (qui utilise Nextcloud, une base de données Mariadb et un serveur proxy Swag, voir cet article).

Quand on utilise des containers simples (une application pour un container), ce n’est pas forcément utile d’utiliser Docker Compose, un simple script avec une commande docker run suffit, comme je l’ai fait pour mes autres services (plex, qbittorrent). Mais rien ne l’empêche non plus.

Et du coup, j’ai tout passé sous Dockge, car son interface est à la fois simple et complète : on peut arrêter, redémarrer, voir les logs, accéder au shell, éditer le fichier compose.yaml, et même (last but not least) effectuer une mise à jour ! 😎

Voilà comment je l’ai installé et configuré.

Installation

L’installation est simplissime. On se connecte sur la machine (mon odroid-hc2 en l’occurence) où tournent les containers docker, et on suit les étapes : Création des répertoires pour nos stacks et celle de Dockge, téléchargement du fichier pour le container Dockge, et démarrage :

$ su
# mkdir -p /opt/stacks /opt/dockge
# cd /opt/dockge
#
# curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
#
# docker compose up -d

Voilà, l’application Dockge tourne sur http://localhost:5001. Difficile de faire plus simple.

Importer ou créer les containers existants

Pour Nextcloud, ayant déjà utilisé une stack (et donc un fichier compose), il a suffit d’arrêter l’application (i.e. le container, via Portainer par exemple, puisque l’interface d’OMV ne permet qu’un redémarrage), puis « d’importer » le fichier dans Dockge :

Pour cela, aller dans Portainer – Stack, sélectionner Nextcloud, aller dans l’onglet Editor, et copier le contenu dans un fichier que l’on appellera compose.yaml. Sur la machine, on crée alors un dossier pour le service, et on y copie le fichier que l’on aura transféré auparavant sur la machine :

$ su
# mkdir /opt/stacks/nextcloud
# cp /home/pascal/compose.yaml /opt/stacks/netxcloud/compose.yaml

Il suffit alors de recharger la page de Dockge pour voir le service Nextcloud apparaître, il ne reste plus qu’à le démarrer.

Pour mes deux autres services, je n’avais pas utilisé de stack, mais un simple script utilisant docker run. J’ai donc du créer un fichier compose.yaml pour chacun, et cela m’a permis de découvrir deux choses.

Plex

Pour Plex, j’ai arrêté l’application via Portainer, créé le fichier compose.yaml comme indiqué sur la documentation, puis copié dans /opt/stacks/plex. En démarrant Plex, j’ai vu ce message concernant la mise à jour qui m’a intrigué :

Comme quoi une interface bien pensée peut être utile ! En allant voir sur le site du container, j’ai alors vu que l’architecture armv7l (x32) de mon bon vieux odroid-hc2 n’était plus supportée :

Après quelques recherches, la décision sur linuxserver.io de ne plus supporter cette architecture a été clairement annoncé dès mai 2022. Et de fait, le support est terminé depuis juillet 2023.

Ce qui veut dire que l’odroid-hc2 acheté il y a quatre ans va devenir compliqué à mettre à jour. C’est de ma faute, j’avais oublié de vérifier ce point en l’achetant, les architectures 32 bits sont obsolètes, les constructeurs devraient les avoir abandonnées depuis longtemps.

Bref, tant que tout fonctionne, je vais faire durer la situation tant que possible. Mais je peux déjà engager une réflexion sur mon prochain NAS, ce sera peut-être un miniPC avec par exemple un processeur Intel N100 qui offre avec le Quick Sync un meilleur décodage vidéo, chose importante pour Plex, et un point faible que j’ai observé avec l’odroid-hc2. Voir cette page intéressante pour choisir une plateforme Intel. Ces infos viennent d’une discussion à ce propos sur reddit la semaine dernière (premier sujet).

Qbittorrent

Pour Qbittorrent, ça a été un peu différent. J’avais déjà eu du mal à trouver un container alliant qbittorrent et openvpn pour mon architecture (voir cet article) : j’ai un compte Mullvad et souhaite utiliser OpenVPN pour m’y connecter.

Le site est ici, et comme le mentionne Chris, il propose bien une version multi-architecture. Hélas, il ne propose que la commande docker run pour créer le container.

Et je n’avais pas réussi à l’époque à créer un fichier compose valide dans Portainer, avec une erreur au démarrage « Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2) » probablement due à l’option « --priviledged -d » utilisée avec docker run que je n’arrivais pas à définir dans le fichier compose.

J’ai recréé un fichier compose à partir de mes notes de l’époque, et tenté de le faire fonctionner avec Dockge. Après quelques tentatives et modifications, j’ai finalement réussi à en créer un de valide :

version: "2"
services:
  qbittorrent-openvpn:
    image: chrisjohnson00/qbittorrent-openvpn:latest
    container_name: qb-openvpn
    privileged: true
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
    volumes:
      - /srv/dev-disk-by-label-DATA/Download:/downloads
      - /srv/dev-disk-by-label-DATA/AppData/Qbittorrent:/config
    environment:
      - VPN_ENABLED=yes
      - LAN_NETWORK=192.168.1.0/24
      - NAME_SERVERS=8.8.8.8,8.8.4.4
      - VPN_USERNAME=xxxxxxx
      - VPN_PASSWORD=yyyyyyy
      - PUID=997
      - PGID=100
      - WEBUI_PORT_ENV=8080
      - INCOMING_PORT_ENV=8999
    ports:
      - 8080:8080
      - 8999:8999
      - 8999:8999/udp
    restart: unless-stopped

Et cerise sur le gâteau, au premier démarrage, le container est allé chercher le dernière version automatiquement ! Ce qui m’a permis de tester avec succès cette fonctionnalité extrêmement pratique.

Voilà, j’ai une interface pour les containers Docker qui semble complète. Elle s’appuie sur Docker, il faut donc que Docker tourne bien sûr ! Mais pour le reste, elle répond bien aux besoins que l’on peut avoir, de façon simple et efficace.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *