88 lines
2.4 KiB
Markdown
88 lines
2.4 KiB
Markdown
# 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`.
|