Install Relay Server with Docker Compose
Deploy a complete Camouflage relay infrastructure using Docker Compose.
Prerequisites
- Docker Engine 20.10 or later
- Docker Compose v2.0 or later
- Domain name pointing to your server
- SSL certificates for your domain
Quick Start
1. Clone the Repository
git clone https://github.com/camouflage-network/camouflage-relay
cd camouflage-relay
2. Configure Environment
Create .env file:
# Server Configuration
PUBLIC_DOMAIN=relay.yourdomain.com
PUBLIC_IP=your-server-ip
# SSL Configuration
SSL_CERT_PATH=./ssl/cert.pem
SSL_KEY_PATH=./ssl/key.pem
# Relay Configuration
RELAY_LOG_LEVEL=info
RELAY_METRICS_ENABLED=true
3. Prepare SSL Certificates
mkdir -p ssl
cp /path/to/your/cert.pem ssl/
cp /path/to/your/key.pem ssl/
4. Deploy
docker-compose up -d
Complete Configuration
docker-compose.yml
version: '3.8'
services:
relay:
image: camouflagenetworks/camouflage-relay:latest
container_name: camouflage-relay
restart: unless-stopped
ports:
- "443:443"
- "61700:61700/udp"
- "9090:9090" # Metrics
environment:
- RELAY_PUBLIC_ADDR=${PUBLIC_DOMAIN}:61700
- RELAY_LOG_LEVEL=${RELAY_LOG_LEVEL}
- RELAY_METRICS_PORT=9090
volumes:
- ./config:/etc/camouflage/config
- ./ssl:/etc/camouflage/ssl
- relay-logs:/var/log/camouflage
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- camouflage-network
prometheus:
image: prom/prometheus:latest
container_name: camouflage-prometheus
restart: unless-stopped
ports:
- "9091:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
networks:
- camouflage-network
depends_on:
- relay
grafana:
image: grafana/grafana:latest
container_name: camouflage-grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana-data:/var/lib/grafana
networks:
- camouflage-network
depends_on:
- prometheus
volumes:
relay-logs:
prometheus-data:
grafana-data:
networks:
camouflage-network:
driver: bridge
Prometheus Configuration
Create prometheus.yml:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'camouflage-relay'
static_configs:
- targets: ['relay:9090']
Relay Configuration
Create config/relay.yaml:
server:
listen_addr: "0.0.0.0:61700"
public_addr: "${PUBLIC_DOMAIN}:61700"
max_connections: 10000
connection_timeout: 300s
tls:
cert_file: "/etc/camouflage/ssl/cert.pem"
key_file: "/etc/camouflage/ssl/key.pem"
min_version: "1.3"
quic:
max_idle_timeout: 30s
max_stream_timeout: 60s
keep_alive_interval: 10s
logging:
level: "info"
format: "json"
output: "/var/log/camouflage/relay.log"
metrics:
enabled: true
port: 9090
path: "/metrics"
Management Commands
Start Services
docker-compose up -d
Stop Services
docker-compose down
View Logs
# All services
docker-compose logs -f
# Relay only
docker-compose logs -f relay
# Last 100 lines
docker-compose logs --tail=100 relay
Restart Services
docker-compose restart relay
Update Images
docker-compose pull
docker-compose up -d
Monitoring and Metrics
Access Grafana
- Navigate to
http://your-server-ip:3000 - Login with default credentials:
- Username:
admin - Password:
admin
- Username:
- Import Camouflage dashboard from
dashboards/relay.json
View Prometheus Metrics
Navigate to http://your-server-ip:9091
Key Metrics
camouflage_relay_connections_total- Total active connectionscamouflage_relay_bytes_sent_total- Total bytes transmittedcamouflage_relay_bytes_received_total- Total bytes receivedcamouflage_relay_errors_total- Total errors encountered
High Availability Setup
For production deployments, run multiple relays:
services:
relay-1:
extends: relay
container_name: camouflage-relay-1
relay-2:
extends: relay
container_name: camouflage-relay-2
ports:
- "444:443"
- "61701:61700/udp"
Add load balancer configuration as needed.
Backup and Restore
Backup Configuration
tar -czf camouflage-backup-$(date +%Y%m%d).tar.gz \
config/ ssl/ .env docker-compose.yml
Restore Configuration
tar -xzf camouflage-backup-YYYYMMDD.tar.gz
docker-compose up -d
Troubleshooting
Check Service Status
docker-compose ps
Check Container Health
docker-compose exec relay curl http://localhost/health
SSL Certificate Issues
Verify certificates:
openssl x509 -in ssl/cert.pem -text -noout
Port Conflicts
Check if ports are in use:
sudo netstat -tulpn | grep -E '443|61700'