adsb-1090/adsb-stack.service

34 lines
1.2 KiB
Desktop File

[Unit]
Description=Stack ADS-B (readsb + tar1090 + adsb2pg)
Requires=docker.service
After=docker.service network-online.target
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/data/adsb
# Laisse le bus USB s'énumérer avant de détecter les dongles
ExecStartPre=/bin/sleep 15
# Recalcule .env.receivers (RX<n>_SERIAL + COMPOSE_PROFILES) depuis le
# matériel réellement présent. C'est ce qui rend le stack adaptatif :
# 1, 2 ou 3 dongles démarrent les profiles rx1..rx3 correspondants, et un
# dongle débranché ne laisse pas tourner un readsb à vide.
ExecStartPre=/data/adsb/scripts/gen_env.sh
# Les deux --env-file sont nécessaires :
# .env → PG_PASSWORD (secret, non versionné)
# .env.receivers → COMPOSE_PROFILES et RX<n>_SERIAL (généré)
# Dès qu'on passe --env-file, Compose cesse de charger .env automatiquement,
# d'où l'obligation de le déclarer explicitement lui aussi.
ExecStart=/usr/bin/docker compose --env-file /data/adsb/.env --env-file /data/adsb/.env.receivers up -d --remove-orphans
ExecStop=/usr/bin/docker compose --env-file /data/adsb/.env --env-file /data/adsb/.env.receivers down
TimeoutStartSec=180
[Install]
WantedBy=multi-user.target