-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
114 lines (110 loc) · 3.93 KB
/
docker-compose.dev.yml
File metadata and controls
114 lines (110 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
services:
# LiveKit SFU Server (with embedded TURN)
peerwave-livekit:
image: livekit/livekit-server:latest
container_name: peerwave-livekit
restart: unless-stopped
ports:
- "7880:7880" # WebRTC (main)
- "7881:7881" # HTTP API
- "7882:7882" # WebRTC TCP fallback
- "5349:5349" # TURN/TLS (replaces Coturn)
- "443:443/udp" # TURN/UDP (QUIC-compatible)
- "30100-30200:30100-30200/udp" # RTP port range (WebRTC media) - 1001 ports
- "30300-30400:30300-30400/udp" # TURN Relay port range (P2P) - 1001 ports
volumes:
- ./livekit-config.yaml:/livekit.yaml:ro
- ./livekit-certs:/certs # Provide your own certs here, or auto-generated on first run
environment:
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-devkey}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-devkey_secret_token_32chars_min}
# Auto-generate self-signed certificates on first startup
entrypoint: >
sh -c "
echo 'Checking TURN certificates...';
if [ ! -f /certs/turn-cert.pem ] || [ ! -f /certs/turn-key.pem ]; then
echo 'Generating self-signed certificates for TURN server...';
apk add --no-cache openssl;
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout /certs/turn-key.pem \
-out /certs/turn-cert.pem \
-days 365 \
-subj '/CN=turn.peerwave.local' \
-addext 'subjectAltName=DNS:localhost,DNS:turn.peerwave.local,IP:127.0.0.1';
chmod 644 /certs/turn-cert.pem;
chmod 600 /certs/turn-key.pem;
echo '✓ Self-signed certificates generated';
else
echo '✓ Certificates already exist';
fi;
echo 'Starting LiveKit...';
exec /livekit-server --config /livekit.yaml
"
networks:
- peerwave-network
# PeerWave Node.js Server
peerwave-server:
build:
context: ./server
dockerfile: Dockerfile
image: simonzander/peerwave:latest
container_name: peerwave-server
restart: unless-stopped
ports:
- "${PORT:-3000}:${PORT:-3000}"
volumes:
- peerwave-data:/usr/src/app/data
- peerwave-logs:/usr/src/app/logs
- ./server/cert:/usr/src/app/cert:ro
environment:
- NODE_ENV=${NODE_ENV:-development}
- PORT=${PORT:-3000}
- DOMAIN=${DOMAIN:-localhost}
- HTTPS=${HTTPS:-false}
- SESSION_SECRET=${SESSION_SECRET:-your-secret-key-CHANGE-IN-PRODUCTION}
- DB_PATH=/usr/src/app/data/peerwave.sqlite
# LiveKit Config
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-devkey}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-devkey_secret_token_32chars_min}
- LIVEKIT_URL=${LIVEKIT_URL:-ws://peerwave-livekit:7880}
- LIVEKIT_TURN_DOMAIN=${LIVEKIT_TURN_DOMAIN:-localhost}
# Email Configuration
- EMAIL_HOST=${EMAIL_HOST}
- EMAIL_PORT=${EMAIL_PORT:-587}
- EMAIL_SECURE=${EMAIL_SECURE:-false}
- EMAIL_USER=${EMAIL_USER}
- EMAIL_PASS=${EMAIL_PASS}
- EMAIL_FROM=${EMAIL_FROM}
# Admin Users
- ADMIN_EMAILS=${ADMIN_EMAILS:-}
# OTP Configuration
- OTP_EXPIRATION_MINUTES=${OTP_EXPIRATION_MINUTES:-10}
- OTP_WAIT_TIME_MINUTES=${OTP_WAIT_TIME_MINUTES:-1}
# Invitation Configuration
- INVITATION_EXPIRATION_HOURS=${INVITATION_EXPIRATION_HOURS:-48}
# Server Operator Information
- SERVER_OWNER=${SERVER_OWNER}
- SERVER_CONTACT=${SERVER_CONTACT}
- SERVER_LOCATION=${SERVER_LOCATION}
- SERVER_ADDITIONAL_INFO=${SERVER_ADDITIONAL_INFO}
# Resource Limits für Video Processing
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
networks:
- peerwave-network
depends_on:
- peerwave-livekit
networks:
peerwave-network:
driver: bridge
volumes:
# Data volume for SQLite database (code files stay in image)
peerwave-data:
# Logs volume for application logs
peerwave-logs: