diff --git a/beeper/etc/containers/systemd/ask-js/ask-js.container b/beeper/etc/containers/systemd/ask-js/ask-js.container index f1db162..e8b1822 100644 --- a/beeper/etc/containers/systemd/ask-js/ask-js.container +++ b/beeper/etc/containers/systemd/ask-js/ask-js.container @@ -1,7 +1,7 @@ [Unit] Description=Ask.JS After=postgresql.service -Requires=postgresql.service +BindsTo=postgresql.service [Container] Image=ghcr.io/ihateblueb/ask-js:dev diff --git a/beeper/etc/containers/systemd/copyparty/copyparty.container b/beeper/etc/containers/systemd/copyparty/copyparty.container index 7ec62bc..da30d6f 100644 --- a/beeper/etc/containers/systemd/copyparty/copyparty.container +++ b/beeper/etc/containers/systemd/copyparty/copyparty.container @@ -6,14 +6,15 @@ Image=docker.io/copyparty/ac:latest ContainerName=copyparty Environment=LD_PRELOAD=/usr/lib/libmimalloc-secure.so Environment=PYTHONUNBUFFERED=1 -HealthCmd=wget --spider -q 127.0.0.1:3923/?reset=/._ -HealthInterval=1m -HealthTimeout=2s -HealthRetries=5 PublishPort=127.0.0.1:15084:3923 UserNS=keep-id:uid=1000,gid=1000 Volume=/var/containers/copyparty/config:/cfg:Z Volume=/mnt/ext/copyparty:/w:z +# Health +HealthCmd=wget --spider -q 127.0.0.1:3923/?reset=/._ +HealthOnFailure=kill +HealthStartPeriod=1m +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/dind/dind.container b/beeper/etc/containers/systemd/dind/dind.container index a7dabfb..4b30454 100644 --- a/beeper/etc/containers/systemd/dind/dind.container +++ b/beeper/etc/containers/systemd/dind/dind.container @@ -8,14 +8,15 @@ AutoUpdate=registry SecurityLabelDisable=true Unmask=ALL AddDevice=/dev/fuse -HealthCmd=podman info || exit 1 -HealthInterval=5s -HealthTimeout=3s -HealthRetries=5 User=podman Volume=/var/containers/dind/data:/home/podman/.local/share/containers:Z Volume=/var/run/dind:/var/run/1000:z Exec=sh -c "podman system service --time=0 unix:///var/run/1000/docker.sock & PID=$!; while [ ! -S /var/run/1000/docker.sock ]; do sleep 0.1; kill -0 $PID 2>/dev/null || exit 1; done && chmod 0666 /var/run/1000/docker.sock && wait $PID" +# Health +HealthCmd=podman info || exit 1 +HealthOnFailure=kill +HealthStartPeriod=30s +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/ejabberd/ejabberd.container b/beeper/etc/containers/systemd/ejabberd/ejabberd.container index ebcd227..c7c7839 100644 --- a/beeper/etc/containers/systemd/ejabberd/ejabberd.container +++ b/beeper/etc/containers/systemd/ejabberd/ejabberd.container @@ -1,6 +1,6 @@ [Unit] Description=ejabberd -Requires=postgresql.service +BindsTo=postgresql.service After=postgresql.service [Container] diff --git a/beeper/etc/containers/systemd/forgejo/forgejo.container b/beeper/etc/containers/systemd/forgejo/forgejo.container index 1c4aefc..f9fe1d1 100644 --- a/beeper/etc/containers/systemd/forgejo/forgejo.container +++ b/beeper/etc/containers/systemd/forgejo/forgejo.container @@ -1,7 +1,7 @@ [Unit] Description=Forgejo After=postgresql.service -Requires=postgresql.service +BindsTo=postgresql.service [Container] Image=codeberg.org/forgejo/forgejo:13 diff --git a/beeper/etc/containers/systemd/freshrss/freshrss.container b/beeper/etc/containers/systemd/freshrss/freshrss.container index c07efdf..fbdafe3 100644 --- a/beeper/etc/containers/systemd/freshrss/freshrss.container +++ b/beeper/etc/containers/systemd/freshrss/freshrss.container @@ -1,6 +1,6 @@ [Unit] Description=FreshRSS -Requires=postgresql.service +BindsTo=postgresql.service After=postgresql.service [Container] diff --git a/beeper/etc/containers/systemd/iceshrimp/iceshrimp.container b/beeper/etc/containers/systemd/iceshrimp/iceshrimp.container index c501457..a1a5dcf 100644 --- a/beeper/etc/containers/systemd/iceshrimp/iceshrimp.container +++ b/beeper/etc/containers/systemd/iceshrimp/iceshrimp.container @@ -1,6 +1,6 @@ [Unit] Description=Iceshrimp.NET -Requires=postgresql.service +BindsTo=postgresql.service After=postgresql.service [Container] diff --git a/beeper/etc/containers/systemd/mailserver/mailserver.container b/beeper/etc/containers/systemd/mailserver/mailserver.container index 486d8c0..5073130 100644 --- a/beeper/etc/containers/systemd/mailserver/mailserver.container +++ b/beeper/etc/containers/systemd/mailserver/mailserver.container @@ -7,10 +7,6 @@ ContainerName=mailserver EnvironmentFile=/etc/containers/systemd/mailserver/.env.secrets EnvironmentFile=/etc/containers/systemd/mailserver/.env AddCapability=NET_ADMIN -HealthCmd=ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1 -HealthInterval=10s -HealthTimeout=3s -HealthRetries=0 HostName=mx1.synth.download PublishPort=25:25 PublishPort=143:143 @@ -23,10 +19,14 @@ Volume=/var/containers/mailserver/logs:/var/log/mail:Z Volume=/var/containers/mailserver/config:/tmp/docker-mailserver:Z Volume=/etc/certs/wildcard_.synth.download.crt:/etc/letsencrypt/live/synth.download/fullchain.pem:ro,z Volume=/etc/certs/wildcard_.synth.download.key:/etc/letsencrypt/live/synth.download/privkey.pem:ro,z +# Health +HealthCmd=ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1 +HealthOnFailure=kill +HealthStartPeriod=1m +Notify=healthy [Service] Restart=always -RestartSec=10s [Install] WantedBy=default.target diff --git a/beeper/etc/containers/systemd/mastodon/mastodon-dfdb.container b/beeper/etc/containers/systemd/mastodon/mastodon-dfdb.container index c42aba7..6ed630a 100644 --- a/beeper/etc/containers/systemd/mastodon/mastodon-dfdb.container +++ b/beeper/etc/containers/systemd/mastodon/mastodon-dfdb.container @@ -10,11 +10,13 @@ Environment=DFLY_default_lua_flags=allow-undeclared-keys Environment=DFLY_dbfilename=dump.rdb Environment=DFLY_df_snapshot_format=false Environment=DFLY_dir=/data -HealthCmd=redis-cli ping -HealthInterval=5s -HealthRetries=20 Network=mastodon.network Volume=/var/containers/mastodon/dragonfly:/data:Z +# Health +HealthCmd=redis-cli ping +HealthOnFailure=kill +HealthStartPeriod=10s +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/mastodon/mastodon-ingress.container b/beeper/etc/containers/systemd/mastodon/mastodon-ingress.container index d0b81e5..7880592 100644 --- a/beeper/etc/containers/systemd/mastodon/mastodon-ingress.container +++ b/beeper/etc/containers/systemd/mastodon/mastodon-ingress.container @@ -1,6 +1,6 @@ [Unit] Description=Mastodon Ingress Service -Requires=postgresql.service mastodon-dfdb.service +BindsTo=postgresql.service mastodon-dfdb.service After=postgresql.service mastodon-dfdb.service [Container] diff --git a/beeper/etc/containers/systemd/mastodon/mastodon-sidekiq.container b/beeper/etc/containers/systemd/mastodon/mastodon-sidekiq.container index 09fcb4f..62c5c80 100644 --- a/beeper/etc/containers/systemd/mastodon/mastodon-sidekiq.container +++ b/beeper/etc/containers/systemd/mastodon/mastodon-sidekiq.container @@ -1,6 +1,6 @@ [Unit] Description=Mastodon Sidekiq Service -Requires=postgresql.service mastodon-dfdb.service +BindsTo=postgresql.service mastodon-dfdb.service After=postgresql.service mastodon-dfdb.service [Container] @@ -9,10 +9,14 @@ ContainerName=mastodon-sidekiq EnvironmentFile=/etc/containers/systemd/mastodon/.env.secrets EnvironmentFile=/etc/containers/systemd/mastodon/.env Exec=bundle exec sidekiq -HealthCmd=ps aux | grep '[s]idekiq 7' || false Network=mastodon.network Network=postgresql.network Volume=/var/containers/mastodon/public/system:/mastodon/public/system:z +# Health +HealthCmd=ps aux | grep '[s]idekiq\ 8' || false +HealthOnFailure=kill +HealthStartPeriod=1m +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/mastodon/mastodon-streaming.container b/beeper/etc/containers/systemd/mastodon/mastodon-streaming.container index 50a9b95..8f8a5dc 100644 --- a/beeper/etc/containers/systemd/mastodon/mastodon-streaming.container +++ b/beeper/etc/containers/systemd/mastodon/mastodon-streaming.container @@ -1,6 +1,6 @@ [Unit] Description=Mastodon Streaming Service -Requires=postgresql.service mastodon-dfdb.service +BindsTo=postgresql.service mastodon-dfdb.service After=postgresql.service mastodon-dfdb.service [Container] @@ -9,10 +9,14 @@ ContainerName=mastodon-streaming EnvironmentFile=/etc/containers/systemd/mastodon/.env.secrets EnvironmentFile=/etc/containers/systemd/mastodon/.env Exec=node ./streaming/index.js -HealthCmd=curl -s --noproxy localhost localhost:4000/api/v1/streaming/health | grep -q 'OK' || exit 1 Network=mastodon.network Network=postgresql.network PublishPort=127.0.0.1:58834:4000 +# Health +HealthCmd=curl -s --noproxy localhost localhost:4000/api/v1/streaming/health | grep -q 'OK' || exit 1 +HealthOnFailure=kill +HealthStartPeriod=1m +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/mastodon/mastodon-web.container b/beeper/etc/containers/systemd/mastodon/mastodon-web.container index a77598b..6a294ca 100644 --- a/beeper/etc/containers/systemd/mastodon/mastodon-web.container +++ b/beeper/etc/containers/systemd/mastodon/mastodon-web.container @@ -1,6 +1,6 @@ [Unit] Description=Mastodon Web Service -Requires=postgresql.service mastodon-dfdb.service +BindsTo=postgresql.service mastodon-dfdb.service After=postgresql.service mastodon-dfdb.service [Container] @@ -9,13 +9,17 @@ ContainerName=mastodon-web EnvironmentFile=/etc/containers/systemd/mastodon/.env.secrets EnvironmentFile=/etc/containers/systemd/mastodon/.env Exec=bundle exec puma -C config/puma.rb -HealthCmd=curl -s --noproxy localhost localhost:3000/health | grep -q 'OK' || exit 1 Network=mastodon.network Network=postgresql.network PublishPort=127.0.0.1:46098:3000 Volume=/var/containers/mastodon/public/system:/mastodon/public/system:z Volume=/var/containers/mastodon/init/disable_ssl.rb:/mastodon/config/initializers/disable_ssl.rb:ro,z Volume=/var/containers/mastodon/shared:/shared:z +# Health +HealthCmd=curl -s --noproxy localhost localhost:3000/health | grep -q 'OK' || exit 1 +HealthOnFailure=kill +HealthStartPeriod=1m +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/postgresql/postgresql.container b/beeper/etc/containers/systemd/postgresql/postgresql.container index c255a54..1675e39 100644 --- a/beeper/etc/containers/systemd/postgresql/postgresql.container +++ b/beeper/etc/containers/systemd/postgresql/postgresql.container @@ -6,13 +6,14 @@ Image=docker.io/groonga/pgroonga:latest-alpine-18 ContainerName=postgresql EnvironmentFile=/etc/containers/systemd/postgresql/.env Network=postgresql.network -HealthCmd=pg_isready -U postgres -d postgres -HealthInterval=40s -HealthTimeout=3s -HealthRetries=20 UserNS=keep-id:uid=999,gid=999 Volume=/var/containers/postgresql/data:/var/lib/postgresql/data:Z Volume=/var/containers/postgresql/exp:/mnt/exp:Z +# Health +HealthCmd=pg_isready -U postgres -d postgres +HealthOnFailure=kill +HealthStartPeriod=30s +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/redlib/redlib.container b/beeper/etc/containers/systemd/redlib/redlib.container index 74e37c0..225e33c 100644 --- a/beeper/etc/containers/systemd/redlib/redlib.container +++ b/beeper/etc/containers/systemd/redlib/redlib.container @@ -6,10 +6,13 @@ Image=quay.io/redlib/redlib:latest ContainerName=redlib AutoUpdate=registry EnvironmentFile=/etc/containers/systemd/redlib/.env -HealthCmd=wget --spider -q --tries=1 http://localhost:8080/settings -HealthInterval=5m -HealthTimeout=3s PublishPort=127.0.0.1:51617:8080 +# Health +HealthCmd=wget --spider -q --tries=1 http://localhost:8080/settings +HealthOnFailure=kill +HealthInterval=5m +HealthStartPeriod=30s +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/searxng/searxng.container b/beeper/etc/containers/systemd/searxng/searxng.container index 2f7395a..486ffac 100644 --- a/beeper/etc/containers/systemd/searxng/searxng.container +++ b/beeper/etc/containers/systemd/searxng/searxng.container @@ -1,7 +1,7 @@ [Unit] Description=SearXNG After=searxng-dfdb.service -Requires=searxng-dfdb.service +BindsTo=searxng-dfdb.service [Container] Image=docker.io/searxng/searxng:latest diff --git a/beeper/etc/containers/systemd/sharkey/sharkey-activity.container b/beeper/etc/containers/systemd/sharkey/sharkey-activity.container index 54e8fe9..167e636 100644 --- a/beeper/etc/containers/systemd/sharkey/sharkey-activity.container +++ b/beeper/etc/containers/systemd/sharkey/sharkey-activity.container @@ -1,7 +1,7 @@ [Unit] Description=Sharkey's ActivityPub Federation service After=postgresql.service sharkey-dfdb.service -Requires=postgresql.service sharkey-dfdb.service +BindsTo=postgresql.service sharkey-dfdb.service [Container] ContainerName=sharkey-activity diff --git a/beeper/etc/containers/systemd/sharkey/sharkey-api.container b/beeper/etc/containers/systemd/sharkey/sharkey-api.container index ec3c4bd..37456c7 100644 --- a/beeper/etc/containers/systemd/sharkey/sharkey-api.container +++ b/beeper/etc/containers/systemd/sharkey/sharkey-api.container @@ -1,7 +1,7 @@ [Unit] Description=Sharkey's API and Web service After=postgresql.service sharkey-dfdb.service -Requires=postgresql.service sharkey-dfdb.service +BindsTo=postgresql.service sharkey-dfdb.service [Container] ContainerName=sharkey-api diff --git a/beeper/etc/containers/systemd/sharkey/sharkey-dfdb.container b/beeper/etc/containers/systemd/sharkey/sharkey-dfdb.container index 935e9dc..7b7c98b 100644 --- a/beeper/etc/containers/systemd/sharkey/sharkey-dfdb.container +++ b/beeper/etc/containers/systemd/sharkey/sharkey-dfdb.container @@ -15,6 +15,11 @@ HealthInterval=5s HealthRetries=20 Network=sharkey.network Volume=/var/containers/sharkey/dfdb:/data:Z +# Health +HealthCmd=redis-cli ping +HealthOnFailure=kill +HealthStartPeriod=10s +Notify=healthy [Service] Restart=always diff --git a/beeper/etc/containers/systemd/sharkey/sharkey-media.container b/beeper/etc/containers/systemd/sharkey/sharkey-media.container index fac7232..fade310 100644 --- a/beeper/etc/containers/systemd/sharkey/sharkey-media.container +++ b/beeper/etc/containers/systemd/sharkey/sharkey-media.container @@ -1,7 +1,7 @@ [Unit] Description=Sharkey's Media service After=postgresql.service sharkey-dfdb.service -Requires=postgresql.service sharkey-dfdb.service +BindsTo=postgresql.service sharkey-dfdb.service [Container] ContainerName=sharkey-media diff --git a/beeper/etc/containers/systemd/sharkey/sharkey-worker.container b/beeper/etc/containers/systemd/sharkey/sharkey-worker.container index f9e90e6..e670597 100644 --- a/beeper/etc/containers/systemd/sharkey/sharkey-worker.container +++ b/beeper/etc/containers/systemd/sharkey/sharkey-worker.container @@ -1,7 +1,7 @@ [Unit] Description=Sharkey's Worker service After=postgresql.service sharkey-dfdb.service -Requires=postgresql.service sharkey-dfdb.service +BindsTo=postgresql.service sharkey-dfdb.service [Container] ContainerName=sharkey-worker diff --git a/beeper/etc/containers/systemd/zitadel/zitadel.container b/beeper/etc/containers/systemd/zitadel/zitadel.container index a3c8073..8b592be 100644 --- a/beeper/etc/containers/systemd/zitadel/zitadel.container +++ b/beeper/etc/containers/systemd/zitadel/zitadel.container @@ -1,6 +1,6 @@ [Unit] Description=Zitadel -Requires=postgresql.service +BindsTo=postgresql.service After=postgresql.service [Container]