Files
Claude dcfd97e823 Deploy from GitHub with a systemd timer instead of Gitea Actions
Cosmos keeps a deploy-only clone of the GitHub repo. gk-deploy.timer runs
pull-and-deploy.sh every 5 minutes: it fetches master and, when it has
moved, runs deploy.sh (build, check, restart, roll back if unhealthy). A
commit that failed is not retried until master moves (FORCE=1 retries), and
DEPLOY_HEALTHCHECK_URL turns red on a failed fetch or deploy. Removes the
Gitea workflow and updates the runbook, README and inventory note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aSbo2D1qP8cMFQCykf7kx
2026-10-12 00:57:18 +00:00

1.8 KiB

tags
tags
homelab
service

GregKilmer.com stack

The new GregKilmer.com: a content service that reads this folder's Site/ notes, a tailnet-only admin page, and the public site. Repo: github.com/Patiun/com.gregkilmer.www, cloned to /home/greg/homelab/gregkilmer/repo and deployed by the gk-deploy.timer systemd timer when master moves. Runbook: docs/deploy.md in the repo.

Containers

Container Role Network Host port
gk-content Content service, sync jobs and MCP server homelab_network none
gk-admin Admin page homelab_network none
gk-site Public site homelab_network none
  • Compose: /home/greg/homelab/gregkilmer/compose.yaml (copied from the repo's deploy/compose.yaml on each deploy)
  • Settings and secrets: /home/greg/homelab/gregkilmer/{.env,content.env,admin.env,site.env} (600)

Data and backups

  • /home/greg/homelab/gregkilmer/data/content/content.db: note history, review queue, saved inquiries and orders, sync cache. Label backup.dump=sqlite on gk-content.
  • /home/greg/homelab/gregkilmer/data/content/submissions/: form attachments, covered by Kopia.
  • The vault's Site/ folder is mounted read-write into gk-content, which writes accepted API and MCP changes back as notes.

Access

  • admin.gregkilmer.com to gk-admin:4320: Tailnet only.
  • content.gregkilmer.com to gk-content:4310 (API and /mcp): Tailnet only.
  • beta.gregkilmer.com to gk-site:4321: Tailnet only until cutover. After cutover, gregkilmer.com is public through Cloudflare.

Health

  • Healthchecks: the content service's full scan every 5 minutes, plus one check per sync job.
  • A Discord webhook is sent whenever a change is held for review.
  • Each container has a Docker health check on /health (site: /).