115 lines
2.2 KiB
Markdown
115 lines
2.2 KiB
Markdown
# CodeTutor Deployment
|
|
|
|
Production deployment configuration using Docker Compose and Cloudflare Tunnel.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Internet -> Cloudflare Tunnel -> nginx -> frontend (Next.js)
|
|
\-> backend (FastAPI)
|
|
\-> PostgreSQL
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
- Docker and Docker Compose
|
|
- Cloudflare account with Zero Trust access
|
|
- External Docker network: `public-network`
|
|
|
|
Create the external network if it doesn't exist:
|
|
|
|
```bash
|
|
docker network create public-network
|
|
```
|
|
|
|
## Setup
|
|
|
|
### 1. Configure Environment
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env` with:
|
|
|
|
- `POSTGRES_PASSWORD`: Strong password for the database
|
|
- `CLOUDFLARE_TUNNEL_TOKEN`: Token from Cloudflare Zero Trust dashboard
|
|
|
|
### 2. Create Cloudflare Tunnel
|
|
|
|
1. Go to [Cloudflare Zero Trust Dashboard](https://one.dash.cloudflare.com/)
|
|
2. Navigate to Networks > Tunnels
|
|
3. Create a new tunnel named `codetutor-demo`
|
|
4. Add public hostname:
|
|
- Subdomain: `codetutor-demo`
|
|
- Domain: `kschappell.com`
|
|
- Service: `http://nginx:80`
|
|
5. Copy the tunnel token to your `.env` file
|
|
|
|
### 3. Deploy
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
### 4. Verify
|
|
|
|
- Check service health: `docker compose ps`
|
|
- View logs: `docker compose logs -f`
|
|
- Test endpoint: `curl https://codetutor-demo.kschappell.com/health`
|
|
|
|
## Database Management
|
|
|
|
### Initial Setup
|
|
|
|
The database is automatically created on first run. To seed with initial data:
|
|
|
|
```bash
|
|
docker compose exec backend python -m alembic upgrade head
|
|
docker compose exec backend python -m scripts.seed_db
|
|
```
|
|
|
|
### Backups
|
|
|
|
```bash
|
|
docker compose exec db pg_dump -U codetutor codetutor > backup.sql
|
|
```
|
|
|
|
### Restore
|
|
|
|
```bash
|
|
docker compose exec -T db psql -U codetutor codetutor < backup.sql
|
|
```
|
|
|
|
## Updating
|
|
|
|
```bash
|
|
git pull
|
|
docker compose up -d --build
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Services not starting
|
|
|
|
Check logs for specific service:
|
|
|
|
```bash
|
|
docker compose logs backend
|
|
docker compose logs frontend
|
|
docker compose logs nginx
|
|
```
|
|
|
|
### Database connection issues
|
|
|
|
Ensure the database is healthy:
|
|
|
|
```bash
|
|
docker compose ps db
|
|
docker compose logs db
|
|
```
|
|
|
|
### Tunnel not connecting
|
|
|
|
Verify the tunnel token is correct and the tunnel is active in the Cloudflare dashboard.
|