08 stycznia 2024 blog podman miniflux

Jak automatycznie updatować kontenery na przykładzie Miniflux.

Update kontenerów

Podman udostępnia serwis do automatycznego update'u kontenerów. Jeśli mamy kontenery skonfigurowane przy użyciu quadletów, wystarczy dodać do [Container] wpis AutoUpdate=registry, potem systemctl --user enable --now podman-auto-update.timer i już ;)

Miniflux

Od jakiegoś czasu do subskrybowania kanałów Atom/RSS używam Miniflux. Miniflux wymaga 2 kontenerów, jednego dla bazy, a drugiego dla siebie. W przykładzie poniżej oba kontenery są w jednym podzie.

Niestety w wersji 4.8.3 nie ma jeszcze wsparcia dla plików .pod (pull request). Dlatego poniższe pliki zawierają niezbyt eleganckie obejście tego problemu. Polecam też zamienić wszystkie x na jakieś inne wartości.

Postgres

~/.config/containers/systemd/miniflux-db.container:

[Unit]
Description=miniflux-db container

[Container]
#Pod=systemd-miniflux
PodmanArgs="--pod=miniflux-pod"
Image=docker.io/postgres:15
AutoUpdate=registry
Volume=%h/.config/miniflux.podman/data:/var/lib/postgresql/data
Environment=POSTGRES_USER=x
Environment=POSTGRES_PASSWORD=x

[Service]
ExecStartPre=sh -c "mkdir -p $HOME/.config/miniflux.podman/data"

ExecStartPre=podman pod create -p 8083:8080 miniflux-pod
ExecStopPost=-podman pod rm miniflux-pod -f

Miniflux

~/.config/containers/systemd/miniflux-instance.container:

[Unit]
Description=miniflux-instance container
Requires=miniflux-db.service
After=miniflux-db.service

[Container]
#Pod=systemd-miniflux
PodmanArgs="--pod=miniflux-pod"
Image=quay.io/miniflux/miniflux:2.0.51
AutoUpdate=registry
Environment="DATABASE_URL=postgres://miniflux:x@localhost/miniflux?sslmode=disable"
Environment="RUN_MIGRATIONS=1"
Environment="CREATE_ADMIN=1"
Environment="ADMIN_USERNAME=x"
Environment="ADMIN_PASSWORD=x"
Environment="BASE_URL=http://x"

[Install]
WantedBy=multi-user.target default.target

Uruchomienie

Pozostaje tylko uruchomienie minifluxa systemctl --user start miniflux-instance i zalogowanie się. Aktywowany wcześniej podman-auto-update.timer będzie dbał o uaktualnienie i, w przypadku nowej wersji, zrestartowanie kontenera.

Przed uruchomieniem lub w przypadku problemów można obejrzeć wygenerowane przez podmana unity systemd z naszych quadletów: /usr/lib/systemd/system-generators/podman-system-generator --user --dryrun.

Linki