Docker Compose infrastructure for deploying the Seewaan Nostr client to seewaan.com with Caddy reverse proxy.
Internet → Caddy (SSL/Reverse Proxy) → Seewaan App (React + Vite)
└─ Public Files (.well-known, favicon)
- seewaan: React application built from the Seewaan repository
- caddy: Reverse proxy with automatic HTTPS via Let's Encrypt
- Automatic SSL certificate management with Caddy
- HTTP/3 support
- Docker-based deployment
- Public file serving (favicon, Nostr NIP-05 identifiers)
- Health checks and automatic restarts
- Docker and Docker Compose installed
- DNS records for seewaan.com pointing to your server
- Ports 80 and 443 open on your firewall
- Clone this repository:
git clone https://github.com/tkhumush/seewaan.com.git
cd seewaan.com- (Optional) Add your favicon:
cp /path/to/favicon.ico public/favicon.ico- (Optional) Configure Nostr NIP-05 identifiers:
nano public/.well-known/nostr.json- Start the services:
docker compose up -d- Check logs:
docker compose logs -fOn first run, Caddy will automatically request SSL certificates from Let's Encrypt. Ensure your DNS records are properly configured before starting.
This repository includes GitHub Actions for automatic deployment on every push to the main branch.
-
Ensure server has required software:
- Git installed
- Docker and Docker Compose installed
- SSH user has Docker permissions:
sudo usermod -aG docker $USER - Ports 80 and 443 open
-
Configure GitHub Secrets (Repository → Settings → Secrets and variables → Actions):
SERVER_HOST: Your server IP address or domainSERVER_USER: SSH username (e.g.,rootorubuntu)SSH_PRIVATE_KEY: Your SSH private key for authenticationSERVER_PORT: (Optional) SSH port if not 22
-
Deploy: Push to main branch, and GitHub Actions will automatically:
- Clone the repository on first deployment
- Pull latest changes on subsequent deployments
- Build and start Docker containers
See .github/DEPLOYMENT.md for detailed setup instructions.
Alternatively, use the included deployment script:
./deploy.shThis script will:
- Pull latest changes from git
- Rebuild Docker containers
- Restart services
- Show deployment status and logs
- Clean up old Docker images
# All services
docker compose logs -f
# Specific service
docker compose logs -f caddy
docker compose logs -f seewaan# All services
docker compose restart
# Specific service
docker compose restart seewaan# Rebuild and restart
docker compose up -d --build seewaandocker compose downdocker compose down -vThe Caddyfile configures:
- Domain: seewaan.com
- SSL certificate management
- Reverse proxy to Seewaan app
- Security headers
- WWW to non-WWW redirect
Files in public/ are mounted into the container and served by nginx:
favicon.ico: Site favicon.well-known/nostr.json: Nostr NIP-05 configuration
The docker-compose.yml defines:
- Service orchestration
- Network isolation
- Volume management
- Health checks
Services include health checks:
docker ps # Check container health statusdocker compose psCheck Caddy logs for certificate errors:
docker compose logs caddyEnsure DNS is properly configured:
nslookup seewaan.comCheck container logs:
docker compose logs seewaanVerify the app is healthy:
docker inspect seewaan | grep -A 10 HealthIf ports 80/443 are in use, stop conflicting services:
sudo lsof -i :80
sudo lsof -i :443.
├── docker-compose.yml # Service orchestration
├── Caddyfile # Reverse proxy configuration
├── deploy.sh # Manual deployment script
├── .gitignore # Git ignore rules
├── .env.example # Environment variables template
├── .github/
│ ├── workflows/
│ │ └── deploy.yml # GitHub Actions deployment workflow
│ └── DEPLOYMENT.md # Deployment setup guide
├── seewaan-app/
│ ├── Dockerfile # Multi-stage build for Seewaan
│ └── nginx.conf # Nginx configuration
├── public/ # Public files served by nginx
│ ├── favicon.svg # Site favicon
│ └── .well-known/
│ └── nostr.json # Nostr NIP-05 configuration
├── README.md # This file
└── CLAUDE.md # AI assistant guidance
- Automatic HTTPS with Let's Encrypt
- Security headers configured in Caddyfile
- Network isolation via Docker bridge network
- No exposed database ports
This infrastructure configuration is provided as-is. The Seewaan application has its own license.