6488eac1080c8dbd0f2056b2abdf4935078da585
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:
cd /Users/jamesvanboxtel/Programming/websites/server-stack
git add -A && git commit -m "description" && git push
On the server (SSH):
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
# 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):
@A35.230.59.34gitA35.230.59.34
tessavb.com (Namecheap):
@A35.230.59.34
GCP Firewall
Ingress rule allow-http permits TCP ports 80, 443 from 0.0.0.0/0.
Description
Languages
TypeScript
66.8%
JavaScript
28.9%
HTML
2.3%
Dockerfile
1.7%
Shell
0.3%