Podman : un conteneur pour Syncthing

Rédigé par Alexandre le 2023-12-19

Mis à jour le 08/01/2024

#linux #outils

J'ai joué plusieurs fois avec docker sans tirer satisfaction de cet outil que beaucoup de monde plébiscite.

Dernièrement, j'ai eu l'occasion de jouer avec podman une alternative à docker que je trouve propre.

Dans la suite de cette article, j'explique comment créer un conteneur podman pour Syncthing. J'utilise syncthing depuis plusieurs années pour synchroniser plusieurs de mes appareils dont mon smartphone sous Android.

Installer podman en suivant la documentation officielle.

Créer le dossier de définition des conteneurs :

$ mkdir -p ~/.config/containers/systemd/

Créer le volume de stockage des données :

podman volume create syncthing

NB : les données du volume seront dans le dossier .local/share/containers/storage/volumes/syncthing/_data.

Définir un conteneur :

$ tee ~/.config/containers/systemd/podman-syncthing.container <<EOF
[Unit]
Description=Syncthing container
ConditionPathIsMountPoint=/mnt/data

[Container]
Image=docker.io/syncthing/syncthing:latest
ContainerName=syncthing

AutoUpdate=registry

Volume=syncthing:/var/syncthing

HostName=ceto
PublishPort=8384:8384/tcp
PublishPort=22000:22000/tcp
PublishPort=22000:22000/udp
PublishPort=21027:21027/udp

[Service]
Restart=on-failure
TimeoutStartSec=900

[Install]
WantedBy=default.target
EOF

Recharger la liste des units pour générer le service qui correspond au fichier de définition du conteneur :

$ systemctl --user daemon-reload

Activer et démarrer le conteneur :

$ systemctl --user enable podman-syncthing.service --now

L'état du conteneur peut-être vérifié comme celui de n'importe quel unit systemd avec la commande :

$ systemctl --user status podman-syncthing.service

Avec la définition du conteneur que j'utilise, syncthing est maintenant accessible en local via http://127.0.0.1:8384. Les échanges se font en TCP et UDP sur le port 22000 qu'il faudra rendre accessible aux autres appareils.