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.