From 8cc7f84801b6405823c4b7caf003699b3fb1ca84 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Mon, 11 May 2026 23:20:13 +0200 Subject: [PATCH] deploy: schedule daily workshop refresh via systemd timer Adds left4me-workshop-refresh.service (oneshot, triggers flask workshop-refresh) and left4me-workshop-refresh.timer (04:00 daily, Persistent=true, 15 min jitter). Wires both into the deploy script's cp and enable blocks. Co-Authored-By: Claude Sonnet 4.6 --- deploy/deploy-test-server.sh | 3 +++ .../system/left4me-workshop-refresh.service | 15 +++++++++++++++ .../systemd/system/left4me-workshop-refresh.timer | 11 +++++++++++ 3 files changed, 29 insertions(+) create mode 100644 deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.service create mode 100644 deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.timer diff --git a/deploy/deploy-test-server.sh b/deploy/deploy-test-server.sh index b868f1a..c26dbc5 100755 --- a/deploy/deploy-test-server.sh +++ b/deploy/deploy-test-server.sh @@ -141,6 +141,8 @@ $sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/l4d2-game.sl $sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/l4d2-build.slice /usr/local/lib/systemd/system/l4d2-build.slice $sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/left4me-nft-mark.service /usr/local/lib/systemd/system/left4me-nft-mark.service $sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/left4me-cake.service /usr/local/lib/systemd/system/left4me-cake.service +$sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.service /usr/local/lib/systemd/system/left4me-workshop-refresh.service +$sudo_cmd cp /opt/left4me/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.timer /usr/local/lib/systemd/system/left4me-workshop-refresh.timer # CPU isolation via cgroup-v2 AllowedCPUs= drop-ins. Pin everything that # isn't a live game server to core 0; give game servers cores 1..N-1. @@ -337,6 +339,7 @@ $sudo_cmd systemctl enable --now left4me-nft-mark.service $sudo_cmd systemctl enable --now left4me-cake.service $sudo_cmd systemctl enable --now left4me-web.service $sudo_cmd systemctl restart left4me-web.service +$sudo_cmd systemctl enable --now left4me-workshop-refresh.timer for attempt in 1 2 3 4 5 6 7 8 9 10; do if curl -fsS http://127.0.0.1:8000/health; then exit 0 diff --git a/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.service b/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.service new file mode 100644 index 0000000..2d4a4d8 --- /dev/null +++ b/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.service @@ -0,0 +1,15 @@ +[Unit] +Description=left4me daily workshop refresh (enqueue job) +After=network-online.target left4me-web.service +Requires=left4me-web.service + +[Service] +Type=oneshot +User=left4me +Group=left4me +WorkingDirectory=/opt/left4me +Environment=HOME=/var/lib/left4me +Environment=PATH=/opt/left4me/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +EnvironmentFile=/etc/left4me/host.env +EnvironmentFile=/etc/left4me/web.env +ExecStart=/opt/left4me/.venv/bin/flask --app l4d2web.app:create_app workshop-refresh diff --git a/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.timer b/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.timer new file mode 100644 index 0000000..109c3ef --- /dev/null +++ b/deploy/files/usr/local/lib/systemd/system/left4me-workshop-refresh.timer @@ -0,0 +1,11 @@ +[Unit] +Description=left4me daily workshop refresh + +[Timer] +OnCalendar=*-*-* 04:00:00 +Persistent=true +RandomizedDelaySec=15min +Unit=left4me-workshop-refresh.service + +[Install] +WantedBy=timers.target