Hetzner VPS Overview
Server Details
| Property |
Value |
| Provider |
Hetzner Cloud |
| Model |
CPX42 |
| Location |
Falkenstein, Germany (FSN1) |
| OS |
Ubuntu 24.04 LTS |
| CPU |
8 cores (AMD EPYC) |
| RAM |
16 GB |
| Disk |
301 GB NVMe |
| Public IP |
46.224.146.107 |
| Tailscale IP |
100.80.53.55 |
| SSH User |
kavi |
SSH Access
# Via Tailscale (recommended)
ssh kavi@100.80.53.55
ssh kavi@cpx42-kavi-hetzner
# Via Public IP
ssh kavi@46.224.146.107
Running Services
| Service |
Container |
Internal Port |
Purpose |
| Caddy |
caddy |
80, 443 |
Reverse proxy + HTTPS |
| PostgreSQL |
postgres |
5432 |
Database |
| Redis |
redis |
6379 |
Cache |
| n8n |
n8n |
5678 |
Workflow automation |
| imgproxy |
imgproxy |
8080 |
Image transformations |
| KaviCloud |
kavicloud |
5000 |
Image upload API |
| Portainer |
portainer |
9000 |
Docker management |
Directory Structure
/opt/docker/
├── docker-compose.yml # Main compose file
├── .env # Secrets (chmod 600)
├── caddy/
│ ├── Caddyfile # Reverse proxy config
│ └── data/ # Certificates
├── postgres/
│ └── data/ # Database files
├── redis/
│ └── data/ # Redis persistence
├── n8n/
│ └── data/ # Workflows & settings
├── imgproxy/ # No persistent data
├── kavicloud/
│ ├── app.py
│ ├── Dockerfile
│ └── data/ # Presets & queue
├── portainer/
│ └── data/
└── apps/ # Future app deployments
Quick Commands
# SSH to server
ssh kavi@cpx42-kavi-hetzner
# View all containers
docker ps
# View logs
docker logs kavicloud --tail 50
docker logs n8n --tail 50
# Restart a service
cd /opt/docker && docker compose restart kavicloud
# Rebuild and restart
cd /opt/docker && docker compose up -d --build kavicloud
# View all logs
cd /opt/docker && docker compose logs -f --tail 50
# Check disk
df -h
Domain Routing
| Domain |
Service |
Purpose |
| cdn.kua.cl |
imgproxy |
Image serving |
| media.kua.cl |
KaviCloud |
Upload API |
| n8n.kua.cl |
n8n |
Automation |
Security
| Feature |
Status |
| SSH Password Auth |
❌ Disabled |
| SSH Key Auth |
✅ Required |
| UFW Firewall |
✅ Active |
| Fail2Ban |
✅ Active |
| Auto Updates |
✅ Enabled |
| Tailscale |
✅ Connected |
Database Access
All database credentials are stored in /opt/docker/.env.
Never commit this file to git.
# Connect to PostgreSQL
docker exec -it postgres psql -U kavi -d main
# Connect to Redis
docker exec -it redis redis-cli -a $REDIS_PASSWORD