New package secubox-app-talk-hpb: - Docker-based signaling server and Janus WebRTC gateway - Auto-generates TURN/SIGNALING/INTERNAL secrets - Creates HAProxy vhost with SSL/ACME - STUN/TURN server with UDP+TCP support - CLI tool: talk-hpbctl setup/status/test/logs Hub generator v5: - Add PeerTube videos with thumbnails and duration badges - Fix Streamlit instance detection (=instance vs =app) - Total count now: sites + streamlit + videos MetaBlogizer fix: - Add priority=50 to new vhosts to prevent wildcard catch Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
101 lines
3.1 KiB
Bash
101 lines
3.1 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
STOP=10
|
|
USE_PROCD=1
|
|
|
|
CONTAINER_NAME="nextcloud-talk-hpb"
|
|
IMAGE="ghcr.io/nextcloud-releases/aio-talk:latest"
|
|
|
|
get_config() {
|
|
local key="$1"
|
|
local section="$2"
|
|
local default="$3"
|
|
uci -q get "talk-hpb.${section}.${key}" || echo "$default"
|
|
}
|
|
|
|
start_service() {
|
|
local enabled=$(get_config enabled main 0)
|
|
[ "$enabled" != "1" ] && return 0
|
|
|
|
local nc_domain=$(get_config nc_domain server "")
|
|
local signaling_domain=$(get_config signaling_domain server "")
|
|
local signaling_port=$(get_config signaling_port server 8081)
|
|
local talk_port=$(get_config talk_port server 3478)
|
|
|
|
local turn_secret=$(get_config turn_secret secrets "")
|
|
local signaling_secret=$(get_config signaling_secret secrets "")
|
|
local internal_secret=$(get_config internal_secret secrets "")
|
|
|
|
local turn_enabled=$(get_config enabled turn 1)
|
|
local turn_udp=$(get_config udp turn 1)
|
|
local turn_tcp=$(get_config tcp turn 1)
|
|
|
|
local container=$(get_config container_name main "$CONTAINER_NAME")
|
|
local image=$(get_config image main "$IMAGE")
|
|
|
|
# Validate required settings
|
|
if [ -z "$nc_domain" ]; then
|
|
logger -t talk-hpb "ERROR: nc_domain not configured"
|
|
return 1
|
|
fi
|
|
|
|
if [ -z "$turn_secret" ] || [ -z "$signaling_secret" ] || [ -z "$internal_secret" ]; then
|
|
logger -t talk-hpb "ERROR: Secrets not configured. Run: talk-hpbctl generate-secrets"
|
|
return 1
|
|
fi
|
|
|
|
# Stop existing container
|
|
docker stop "$container" 2>/dev/null
|
|
docker rm "$container" 2>/dev/null
|
|
|
|
# Build docker run command
|
|
local docker_cmd="docker run --name=$container --restart=always --detach"
|
|
docker_cmd="$docker_cmd -e NC_DOMAIN=$nc_domain"
|
|
docker_cmd="$docker_cmd -e TALK_PORT=$talk_port"
|
|
docker_cmd="$docker_cmd -e TURN_SECRET=$turn_secret"
|
|
docker_cmd="$docker_cmd -e SIGNALING_SECRET=$signaling_secret"
|
|
docker_cmd="$docker_cmd -e INTERNAL_SECRET=$internal_secret"
|
|
|
|
# Signaling port
|
|
docker_cmd="$docker_cmd -p ${signaling_port}:8081"
|
|
|
|
# TURN ports if enabled
|
|
if [ "$turn_enabled" = "1" ]; then
|
|
[ -n "$signaling_domain" ] && docker_cmd="$docker_cmd -e TALK_HOST=$signaling_domain"
|
|
[ "$turn_tcp" = "1" ] && docker_cmd="$docker_cmd -p ${talk_port}:3478/tcp"
|
|
[ "$turn_udp" = "1" ] && docker_cmd="$docker_cmd -p ${talk_port}:3478/udp"
|
|
fi
|
|
|
|
docker_cmd="$docker_cmd $image"
|
|
|
|
logger -t talk-hpb "Starting Nextcloud Talk HPB container..."
|
|
eval $docker_cmd
|
|
|
|
if [ $? -eq 0 ]; then
|
|
logger -t talk-hpb "Container started successfully"
|
|
else
|
|
logger -t talk-hpb "ERROR: Failed to start container"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
stop_service() {
|
|
local container=$(get_config container_name main "$CONTAINER_NAME")
|
|
|
|
logger -t talk-hpb "Stopping container..."
|
|
docker stop "$container" 2>/dev/null
|
|
docker rm "$container" 2>/dev/null
|
|
logger -t talk-hpb "Container stopped"
|
|
}
|
|
|
|
status_service() {
|
|
local container=$(get_config container_name main "$CONTAINER_NAME")
|
|
docker inspect "$container" >/dev/null 2>&1
|
|
}
|
|
|
|
reload_service() {
|
|
stop_service
|
|
start_service
|
|
}
|