|
|
||
|---|---|---|
| .github | ||
| appinfo | ||
| ex_app/lib | ||
| LICENSES | ||
| persistent_storage | ||
| .gitignore | ||
| .gitmodules | ||
| .nextcloudignore | ||
| .pre-commit-config.yaml | ||
| changelog.md | ||
| Dockerfile | ||
| example.env | ||
| healthcheck.sh | ||
| krankerl.toml | ||
| logger_config.yaml | ||
| Makefile | ||
| pyproject.toml | ||
| readme.md | ||
| requirements.txt | ||
| requirements_dev.txt | ||
| REUSE.toml | ||
| start.sh | ||
| supervisord.conf | ||
Live transcriptions in Nextcloud Talk
Environment variables
example.env contains all the environment variables needed to run the app. You can copy it to .env and change the values as needed.
The description of each variable other than AppAPI variables is in the appinfo/info.xml file.
Dev Docker Setup
docker build -t ghcr.io/nextcloud-releases/live_transcription .- Register a HaRP/Docker socket proxy deploy daemon: https://docs.nextcloud.com/server/latest/admin_manual/exapps_management/AppAPIAndExternalApps.html https://docs.nextcloud.com/server/latest/admin_manual/exapps_management/DeployConfigurations.html
- Add a ghcr.io override to it:
occ app_api:daemon:registry:add --registry-from=ghcr.io --registry-to=local <deploy_daemon_name>. Either use a new deploy daemon (with the same underlying DSP) or remember to remove this override later. - Register the app:
occ app_api:app:register live_transcription <deploy_daemon_name> --info-xml /path/to/live_transcription/appinfo/info.xml --wait-finish --env LT_HPB_URL=wss://nextcloud.local/standalone-signaling/spreed --env LT_INTERNAL_SECRET=7890. Other environment variables can be added with--env <name>=<value>. Make sure to change theLT_HPB_URLto match your setup.
Dev Bare-metal Setup
cp example.env .env, adjust the values in.envas needed.python -m venv .venv. .venv/bin/activatepip install -r requirements_dev.txtpython ex_app/lib/vosk_server.py
in another terminal
. .venv/bin/activatepython ex_app/lib/main.py
in yet another terminal
- Register a manual deploy daemon:
occ app_api:daemon:register manual_install "Manual Install" "manual-install" "http" host.docker.internal "http://nextcloud.local". Changehost.docker.internaltolocalhostif you're not using NC in docker. - Register the app:
occ app_api:app:register live_transcription manual_install --json-info "{\"id\":\"live_transcription\",\"name\":\"Live Transcription\",\"daemon_config_name\":\"manual_install\",\"version\":\"0.1.0\",\"secret\":\"12345\",\"port\":23000}" --wait-finish
HPB setup
- The following
docker compose.ymlto set up the High Performance Backend (HPB) server. It is configured for Julius' docker dev setup.
services:
nc-talk:
image: ghcr.io/nextcloud-releases/aio-talk:latest
init: true
ports:
- 3478:3478/tcp
- 3478:3478/udp
- 8081:8081/tcp
environment:
SKIP_CERT_VERIFY: true
NC_DOMAIN: "nextcloud${DOMAIN_SUFFIX}"
TALK_PORT: 3478
TURN_SECRET: "1234"
SIGNALING_SECRET: "4567"
INTERNAL_SECRET: "7890"
restart: unless-stopped
- Add location redirects in your nginx config:
location /standalone-signaling/ {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://nc-talk:8011/;
}
location /standalone-signaling/spreed {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://nc-talk:8011/spreed;
}
This should be added to the location / block of your Nextcloud server. Make sure to change the proxy_pass URL to match your setup.
For Julius' docker dev, this should go into data/nginx/vhost.d/nextcloud.local_location.
Small issue: The entire nginx stack fails to work if spreedbackend is not reachable/resolvable. Using a variable can fix this but I haven't got it to work yet. For now, make sure to have the HPB server running to avoid this issue, or use a static IP address.
- In Talk, the HPB URL would be
https://nextcloud.local/standalone-signaling/and the shared secret would be4567. Replacenextcloud.localhere if you're not using the docker dev setup.httpcan also be used but microphone is not allowed in the browser for insecure connections.
TURN server setup would looks like:
| turn:only | localhost:3478 | 1234 | UDP and TCP |
|---|
localhost here is the host at which the local PC running the browser should reach the TURN server.
And with that, the HPB should be working. If it's not, debugging can be done through
- the logs of the HPB's docker compose:
docker compose logs -f - error messages in the HPB server settings in Talk
- the browser console when opening a Talk room in the
Networktab withWSfilter - checking reachability of ports with
nc -zv -w 5 <host> <port>