feat: add Hetzner-hosted todo application stack

Implement the server-rendered Go todo application with PostgreSQL persistence, Tailwind styling, health checks, and test coverage.

Provision production and staging infrastructure with OpenTofu, including private networking, static IPs, Object Storage backups, and load balancing.

Configure Rocky Linux hosts with Ansible, rootless Podman, PostgreSQL, WAL-G backup automation, staging restores, and generated inventory.
This commit is contained in:
cole-maxwell1
2026-08-06 21:34:56 -05:00
commit 1382c42803
68 changed files with 2380 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
[Unit]
Description=Restore production PostgreSQL backup into staging
After=network-online.target
Wants=network-online.target
ConditionPathExists=/etc/wal-g/db-sync.env
[Service]
Type=oneshot
EnvironmentFile=/etc/wal-g/db-sync.env
ExecStart=/usr/local/sbin/db-sync
TimeoutStartSec=45min
Nice=10
IOSchedulingClass=best-effort
IOSchedulingPriority=7
+9
View File
@@ -0,0 +1,9 @@
[Unit]
Description=Run staging database restore at 06:00 and 12:00 America/Chicago
[Timer]
OnCalendar=*-*-* 06,12:00:00 America/Chicago
Persistent=true
[Install]
WantedBy=timers.target
+9
View File
@@ -0,0 +1,9 @@
AWS_ACCESS_KEY_ID={{ wal_g_access_key }}
AWS_SECRET_ACCESS_KEY={{ wal_g_secret_key }}
AWS_ENDPOINT={{ wal_g_s3_endpoint }}
AWS_REGION={{ wal_g_s3_region }}
AWS_S3_FORCE_PATH_STYLE=true
WALG_S3_PREFIX={{ wal_g_s3_prefix | regex_replace('/$', '') }}
WALG_COMPRESSION_METHOD=lz4
WALG_UPLOAD_CONCURRENCY=4
WALG_DOWNLOAD_CONCURRENCY=4