# homelab-deploy-runner.service — host-side executor for control-plane `redeploy` # actions (kb/subsystems/recon-multiagent.md D14/D15). # # Host-level and NOT a container, deliberately: it runs `docker compose` the way # a human deploy does, so relative bind mounts and the compose project name # resolve identically. A containerised runner would resolve them against its own # filesystem and hand the daemon host paths that do not exist. # # Install: see ../README.md (copy this + the timer to /etc/systemd/system/, # create /opt/homelab/config/deploy-runner/env from env.example, daemon-reload, # enable the TIMER — not this unit). [Unit] Description=Homelab deploy runner (executes approved redeploy actions on this node) After=network-online.target docker.service Wants=network-online.target [Service] Type=oneshot User=oskar # Runtime config: NODE_NAME, REPO_PATH, VPS_EVENTS_HOST, ... (see env.example). EnvironmentFile=/opt/homelab/config/deploy-runner/env ExecStart=/home/oskar/homelab-codex-ws/jobs/deploy-runner/deploy-runner.sh # Slightly above the runner's own per-action DEPLOY_TIMEOUT_SECS (default 600) # so the script always gets to report a result before systemd intervenes. TimeoutStartSec=900