halkyon/deploy/backup/halkyon-backup.service
Tizian 「ティツィアーン」 93b0c0a6b0
chore: the servers are named by the domain they serve
Files called the servers by their own host names, which are the
operator's and say nothing a reader needs. They now say which domain a
server serves: learn.halkyon.eu's server (the instance and its CI
runner), the halkyon.app server (Forgejo and the F-Droid repository).

Two names are settings rather than words. CI's runner label becomes
`instance` (`runs-on: instance`, `labels: ["instance:host"]`): the
runner reads its installed copy of deploy/runner/config.yml, so jobs
wait in the queue until that copy is updated and the runner restarted.
The SSH aliases the scripts and docs use become `learn-deploy` and
`fdroid-upload`. AGENTS.md says to keep it so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 00:33:50 +02:00

24 lines
830 B
Desktop File

# The hourly off-site backup of learn.halkyon.eu, on its server: deploy/backup.sh, as
# deploy, started by halkyon-backup.timer. Installed with the timer as
# /etc/systemd/system/halkyon-backup.service; deploy/backups.md has the steps.
#
# deploy is in the docker group, which is as good as root, so sandboxing this unit
# would protect little: it keeps to the basics.
[Unit]
Description=Off-site backup of learn.halkyon.eu's database
Documentation=file:///home/deploy/halkyon-learn/deploy/backups.md
After=network-online.target docker.service
Wants=network-online.target
[Service]
Type=oneshot
User=deploy
Group=deploy
ExecStart=/home/deploy/halkyon-learn/deploy/backup.sh
PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=full
# Behind the instance for CPU and disk.
Nice=10
IOSchedulingClass=best-effort
IOSchedulingPriority=7