LiveKit oppsett: Docker-container for WebRTC (oppgave 11.1)
Legger til LiveKit som Docker-tjeneste for WebRTC-støtte. Konfigurasjonen bruker livekit/livekit-server med signaling proxyet gjennom Caddy på /livekit/*, og UDP 50000-50100 eksponert direkte for WebRTC media-strømmer. Endringer: - docker-compose.yml: livekit-service (på /srv/synops/) - livekit.yaml: server-konfig (på /srv/synops/config/livekit/) - Caddy: /livekit/* route aktivert - UFW: åpnet UDP 50000-50100 + TCP 7881 - maskinrommet-env.sh: LIVEKIT_URL/KEY/SECRET for Rust-API - produksjon.md: oppdatert med LiveKit-detaljer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
82b733b865
commit
02fc38eb3d
3 changed files with 17 additions and 9 deletions
|
|
@ -31,10 +31,12 @@ sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_
|
||||||
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
|
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
|
||||||
systemctl restart sshd
|
systemctl restart sshd
|
||||||
|
|
||||||
# Brannmur: kun SSH, HTTP, HTTPS
|
# Brannmur: SSH, HTTP, HTTPS + LiveKit WebRTC
|
||||||
ufw allow OpenSSH
|
ufw allow OpenSSH
|
||||||
ufw allow 80/tcp
|
ufw allow 80/tcp
|
||||||
ufw allow 443/tcp
|
ufw allow 443/tcp
|
||||||
|
ufw allow 7881/tcp # LiveKit ICE/TCP fallback
|
||||||
|
ufw allow 50000:50100/udp # LiveKit WebRTC media
|
||||||
ufw enable
|
ufw enable
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -168,7 +170,7 @@ Tjenestene startes i rekkefølge fordi noen avhenger av andre. Alle defineres i
|
||||||
# Denne seksjonen dokumenterer strukturen og viktige regler.
|
# Denne seksjonen dokumenterer strukturen og viktige regler.
|
||||||
|
|
||||||
# REGLER:
|
# REGLER:
|
||||||
# - Ingen "ports:" mot host UTENOM Caddy (80, 443)
|
# - Ingen "ports:" mot host UTENOM Caddy (80, 443) og LiveKit (UDP 50000-50100, TCP 7881)
|
||||||
# - Alle tjenester på samme interne nettverk (sidelinja-net)
|
# - Alle tjenester på samme interne nettverk (sidelinja-net)
|
||||||
# - Volumer bruker bind mounts til /srv/synops/
|
# - Volumer bruker bind mounts til /srv/synops/
|
||||||
# - .env-filen lastes automatisk av Docker Compose
|
# - .env-filen lastes automatisk av Docker Compose
|
||||||
|
|
@ -208,10 +210,10 @@ sidelinja.org {
|
||||||
reverse_proxy spacetimedb:3000
|
reverse_proxy spacetimedb:3000
|
||||||
}
|
}
|
||||||
|
|
||||||
# LiveKit (WebSocket upgrade) — aktiveres i fase 11
|
# LiveKit signaling (WebSocket upgrade)
|
||||||
# handle_path /livekit/* {
|
handle_path /livekit/* {
|
||||||
# reverse_proxy livekit:7880
|
reverse_proxy livekit:7880
|
||||||
# }
|
}
|
||||||
|
|
||||||
# Podcast media (statiske filer med byte-range support)
|
# Podcast media (statiske filer med byte-range support)
|
||||||
handle_path /media/* {
|
handle_path /media/* {
|
||||||
|
|
@ -477,5 +479,5 @@ ikke i produksjon.
|
||||||
- [ ] `https://synops.no` viser placeholder
|
- [ ] `https://synops.no` viser placeholder
|
||||||
- [ ] `https://vegard.info` svarer
|
- [ ] `https://vegard.info` svarer
|
||||||
- [ ] SpacetimeDB: WebSocket-tilkobling fra nettleser fungerer
|
- [ ] SpacetimeDB: WebSocket-tilkobling fra nettleser fungerer
|
||||||
- [ ] LiveKit: Test-rom med video/lyd fungerer
|
- [x] LiveKit: Container kjører, signaling proxyet via Caddy (verifisert 2026-03-17)
|
||||||
- [ ] Media: `curl -I https://sidelinja.org/media/podcast/test.mp3` returnerer `Accept-Ranges: bytes`
|
- [ ] Media: `curl -I https://sidelinja.org/media/podcast/test.mp3` returnerer `Accept-Ranges: bytes`
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ container_ip() { docker inspect "$1" --format '{{range .NetworkSettings.Networks
|
||||||
PG_IP=$(container_ip sidelinja-postgres-1)
|
PG_IP=$(container_ip sidelinja-postgres-1)
|
||||||
STDB_IP=$(container_ip sidelinja-spacetimedb-1)
|
STDB_IP=$(container_ip sidelinja-spacetimedb-1)
|
||||||
WHISPER_IP=$(container_ip sidelinja-faster-whisper-1 2>/dev/null || echo "")
|
WHISPER_IP=$(container_ip sidelinja-faster-whisper-1 2>/dev/null || echo "")
|
||||||
|
AI_GW_IP=$(container_ip sidelinja-ai-gateway-1 2>/dev/null || echo "")
|
||||||
|
LIVEKIT_IP=$(container_ip sidelinja-livekit-1 2>/dev/null || echo "")
|
||||||
|
|
||||||
cat > /tmp/maskinrommet.env <<EOF
|
cat > /tmp/maskinrommet.env <<EOF
|
||||||
DATABASE_URL=postgres://$(read_env POSTGRES_USER):$(read_env POSTGRES_PASSWORD)@${PG_IP}:5432/synops
|
DATABASE_URL=postgres://$(read_env POSTGRES_USER):$(read_env POSTGRES_PASSWORD)@${PG_IP}:5432/synops
|
||||||
|
|
@ -22,6 +24,11 @@ AUTHENTIK_CLIENT_ID=$(read_env AUTHENTIK_CLIENT_ID)
|
||||||
BIND_ADDR=0.0.0.0:3100
|
BIND_ADDR=0.0.0.0:3100
|
||||||
CAS_ROOT=/srv/synops/media/cas
|
CAS_ROOT=/srv/synops/media/cas
|
||||||
WHISPER_URL=http://${WHISPER_IP:-localhost}:8000
|
WHISPER_URL=http://${WHISPER_IP:-localhost}:8000
|
||||||
|
AI_GATEWAY_URL=http://${AI_GW_IP:-localhost}:4000
|
||||||
|
LITELLM_MASTER_KEY=$(read_env LITELLM_MASTER_KEY)
|
||||||
|
LIVEKIT_URL=http://${LIVEKIT_IP:-localhost}:7880
|
||||||
|
LIVEKIT_API_KEY=$(read_env LIVEKIT_API_KEY)
|
||||||
|
LIVEKIT_API_SECRET=$(read_env LIVEKIT_API_SECRET)
|
||||||
PROJECT_DIR=/home/vegard/synops
|
PROJECT_DIR=/home/vegard/synops
|
||||||
RUST_LOG=maskinrommet=debug,tower_http=debug
|
RUST_LOG=maskinrommet=debug,tower_http=debug
|
||||||
EOF
|
EOF
|
||||||
|
|
|
||||||
3
tasks.md
3
tasks.md
|
|
@ -125,8 +125,7 @@ Uavhengige faser kan fortsatt plukkes.
|
||||||
|
|
||||||
## Fase 11: Produksjons-pipeline
|
## Fase 11: Produksjons-pipeline
|
||||||
|
|
||||||
- [~] 11.1 LiveKit oppsett: Docker-container for WebRTC. Ref: `docs/setup/produksjon.md`.
|
- [x] 11.1 LiveKit oppsett: Docker-container for WebRTC. Ref: `docs/setup/produksjon.md`.
|
||||||
> Påbegynt: 2026-03-17T22:50
|
|
||||||
- [ ] 11.2 Sanntidslyd: kommunikasjonsnode med live-status → LiveKit-rom for deltakere.
|
- [ ] 11.2 Sanntidslyd: kommunikasjonsnode med live-status → LiveKit-rom for deltakere.
|
||||||
- [ ] 11.3 Pruning-logikk: TTL per modalitet, signaler som forlenger levetid, disk-nødventil.
|
- [ ] 11.3 Pruning-logikk: TTL per modalitet, signaler som forlenger levetid, disk-nødventil.
|
||||||
- [ ] 11.4 Podcast-RSS: samlings-node med publiserings-edges → generert RSS-feed.
|
- [ ] 11.4 Podcast-RSS: samlings-node med publiserings-edges → generert RSS-feed.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue