Files
go-caatsm/docs/deploy-systemd.md

1.6 KiB

Systemd Deployment Example

This example targets a single host running the caatsm binary under systemd with minimal moving parts.

1. Install the Binary

sudo install -m 755 bin/receiver /usr/local/bin/caatsm
sudo install -d /etc/caatsm/configs
sudo cp configs/config.dev.toml /etc/caatsm/configs/config.prod.toml

Adjust the config file to point at your production NATS cluster, TimescaleDB endpoint, and telemetry collector.

2. Environment File

Create /etc/caatsm/caatsm.env to hold secrets or overrides (systemd keeps file permissions intact):

CAATSM_NATS_URL=nats://nats.prod.svc.cluster.local:4222
CAATSM_POSTGRES_URL=postgres://caatsm:***@tsdb.prod:5432/aviation?sslmode=require
CAATSM_LOG_LEVEL=info
GO_ENV=prod

3. systemd Unit

/etc/systemd/system/caatsm.service

[Unit]
Description=CAATSM Telegram Processor
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
EnvironmentFile=/etc/caatsm/caatsm.env
WorkingDirectory=/etc/caatsm
ExecStart=/usr/local/bin/caatsm listen
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

Reload and start:

sudo systemctl daemon-reload
sudo systemctl enable --now caatsm

4. Observability Hooks

  • Expose monitoring.addr = ":2112" (default) and add firewall rules so Prometheus can scrape http://host:2112/metrics.
  • systemd watchdogs can use curl -sf http://127.0.0.1:2112/livez for liveness and curl -sf http://127.0.0.1:2112/readyz for readiness.

With these three files (binary, config, env) the service becomes repeatable and easy to operate.