# Server Stack Production infrastructure for **tessavb.com**, **jamesvanboxtel.com**, and developer services. ## Architecture Runs on a GCP `e2-micro` (Debian 12, Always Free Tier) at `35.230.59.34`. | Service | Container | Domain | Port | |---------|-----------|--------|------| | Reverse Proxy / SSL | `caddy` | — | 80, 443 | | Git Hosting | `gitea` | git.jamesvanboxtel.com | 3000 (internal) | | Tessa's Site | `tessavb-app` | tessavb.com | 8080 (internal) | | James's Site | `jamesvanboxtel-app` | jamesvanboxtel.com | 8080 (internal) | **Caddy** auto-provisions Let's Encrypt SSL certificates and routes traffic to containers via Docker labels. **Gitea** provides private git hosting. Both apps are Node/Express placeholder sites. ## Directory Structure ``` server-stack/ docker-compose.yml # All service definitions deploy.sh # Auto-deploy script (git pull + rebuild) hooks.json # Webhook daemon config .gitignore # Excludes data dirs from git apps/ tessavb/ # tessavb.com source code Dockerfile server.js package.json data/ # SQLite/persistent data (gitignored) jamesvanboxtel/ # jamesvanboxtel.com source code Dockerfile server.js package.json data/ # SQLite/persistent data (gitignored) caddy_data/ # Caddy SSL certs + config (gitignored) gitea_data/ # Gitea database + repos (gitignored) ``` ## Manual Deploy From your Mac: ```bash cd /Users/jamesvanboxtel/Programming/websites/server-stack git add -A && git commit -m "description" && git push ``` On the server (SSH): ```bash cd ~/server-stack && git pull origin main && docker-compose up -d --build ``` ## Auto Deploy (Not Yet Configured) Once the webhook daemon is set up, pushing to Gitea will automatically trigger `deploy.sh`, which pulls and rebuilds containers. See TASKS.md for setup steps. ## Useful Commands ```bash # View running containers docker ps # View logs for a service docker logs caddy docker logs gitea docker logs tessavb-app # Restart everything docker-compose down && docker-compose up -d # Rebuild a single app after code changes docker-compose up -d --build tessavb-app ``` ## DNS Records **jamesvanboxtel.com** (Namecheap): - `@` A `35.230.59.34` - `git` A `35.230.59.34` **tessavb.com** (Namecheap): - `@` A `35.230.59.34` ## GCP Firewall Ingress rule `allow-http` permits TCP ports 80, 443 from `0.0.0.0/0`.