Compare commits
4 commits
2ba830c7b4
...
02fc38eb3d
| Author | SHA1 | Date | |
|---|---|---|---|
| 02fc38eb3d | |||
| 82b733b865 | |||
| f303f8a9b4 | |||
| 5d25024719 |
3 changed files with 21 additions and 10 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
|
||||||
|
|
|
||||||
8
tasks.md
8
tasks.md
|
|
@ -112,18 +112,20 @@ Uavhengige faser kan fortsatt plukkes.
|
||||||
- [x] 9.1 Kanban-visning: noder med board-edge, gruppert på status-edge. Drag-and-drop for statusendring.
|
- [x] 9.1 Kanban-visning: noder med board-edge, gruppert på status-edge. Drag-and-drop for statusendring.
|
||||||
- [x] 9.2 Kalender-visning: noder med `scheduled`-edge, på tidslinje.
|
- [x] 9.2 Kalender-visning: noder med `scheduled`-edge, på tidslinje.
|
||||||
- [x] 9.3 Dagbok-visning: private noder (ingen delte edges), sortert på tid.
|
- [x] 9.3 Dagbok-visning: private noder (ingen delte edges), sortert på tid.
|
||||||
- [ ] 9.4 Kunnskapsgraf: topic-noder, `mentions`-edges. Visuell graf-visning.
|
- [~] 9.4 Kunnskapsgraf: topic-noder, `mentions`-edges. Visuell graf-visning.
|
||||||
|
> Påbegynt: 2026-03-17T22:35
|
||||||
|
|
||||||
## Fase 10: AI og beriking
|
## Fase 10: AI og beriking
|
||||||
|
|
||||||
- [ ] 10.1 LiteLLM oppsett: Docker-container, API-nøkler, modell-routing. Ref: `docs/infra/ai_gateway.md`.
|
- [~] 10.1 LiteLLM oppsett: Docker-container, API-nøkler, modell-routing. Ref: `docs/infra/ai_gateway.md`.
|
||||||
|
> Påbegynt: 2026-03-17T22:43
|
||||||
- [ ] 10.2 AI-foreslåtte edges: maskinrommet sender innhold til LLM → foreslår mentions, topics.
|
- [ ] 10.2 AI-foreslåtte edges: maskinrommet sender innhold til LLM → foreslår mentions, topics.
|
||||||
- [ ] 10.3 Oppsummering: kommunikasjonsnode → AI-generert sammendrag som ny node.
|
- [ ] 10.3 Oppsummering: kommunikasjonsnode → AI-generert sammendrag som ny node.
|
||||||
- [ ] 10.4 TTS: tekst → lyd via ElevenLabs. Mottaker-preferanse i metadata.
|
- [ ] 10.4 TTS: tekst → lyd via ElevenLabs. Mottaker-preferanse i metadata.
|
||||||
|
|
||||||
## 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`.
|
||||||
- [ ] 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