Back to projects

// personal project

Personal

CTSDeploy

PythonDockernginxGitHub WebhooksCloudflareRaspberry Pisystemd

CTSDeploy is a lightweight CI/CD system built to run on a Raspberry Pi. When a push is made to a project's GitHub repository, GitHub sends a webhook to hooks.benkruseski.com. CTSDeploy receives it, reads the project's deploy.yaml config, runs git pull followed by docker compose up --build, and writes or updates the nginx config to serve the project at <project_name>.benkruseski.com.

A wildcard A record on Cloudflare DNS (*.benkruseski.com) routes all subdomains to the Pi's static IP. Certbot handles SSL certificate provisioning for each subdomain. A bootstrap script makes onboarding new projects as simple as running a single command.

Key Highlights

  • GitHub webhook → git pull → docker compose up → live subdomain
  • Cloudflare wildcard DNS (*.benkruseski.com) for automatic routing
  • certbot SSL provisioned per subdomain
  • Runs as a systemd service on a Raspberry Pi
  • bootstrap_project.sh for one-command project onboarding