Serviço de gravação para Nextcloud Talk baseado no nextcloud-talk-recording v0.2.1.
- Docker e Docker Compose instalados
- Nextcloud com app Talk instalado e configurado
- Spreed High Performance Backend (HPB) configurado e rodando
- Reverse proxy configurado (nginx-proxy ou similar)
- Certificados SSL configurados (Let's Encrypt ou similar)
git clone <https://github.com/LibreCodeCoop/nextcloud-talk-recording
cd nextcloud-talk-recordingCopie o arquivo .env de exemplo e edite com suas configurações:
cp .env .env.local
nano .env.local# Domínios
NC_DOMAIN=cloud.exemplo.com.br # Seu domínio do Nextcloud
HPB_DOMAIN=signaling.exemplo.com.br # Domínio do Spreed HPB
VIRTUAL_HOST=recording.exemplo.com.br # Domínio para este serviço
LETSENCRYPT_HOST=recording.exemplo.com.br
[email protected]
# Secrets (IMPORTANTE: gerar novos valores)
RECORDING_SECRET=00000000-0000-0000-0000-000000000000
INTERNAL_SECRET=0000000000000000000000000000000000000000000000000000000000000000# RECORDING_SECRET (novo, único para este serviço)
uuidgen
# INTERNAL_SECRET (usar o MESMO valor do spreedbackend)
# Este secret já existe na configuração do seu HPB
# Localize o valor do "internalsecret" no servidor.conf do spreedbackendO INTERNAL_SECRET DEVE SER IDÊNTICO ao internalsecret configurado no Spreed High Performance Backend (HPB). Este secret é usado para autenticar a comunicação entre o serviço de gravação e o HPB.
- Localização no HPB: Geralmente em
/etc/signaling/server.confna seção[backend] - Não gere um novo valor: Use o valor existente do HPB
- Formato: String hexadecimal de 64 caracteres (32 bytes)
Exemplo de como encontrar o valor no servidor HPB:
# No servidor do HPB
grep internalsecret /etc/signaling/server.confEste setup considera que o Spreed High Performance Backend está em um subdomínio dedicado, não em um path.
-
Subdomínio (padrão):
https://signaling.exemplo.com.br/HPB_DOMAIN=signaling.exemplo.com.br HPB_PATH=/
-
Path específico:
https://cloud.exemplo.com.br/signaling/HPB_DOMAIN=cloud.exemplo.com.br HPB_PATH=/signaling/
Ajuste as variáveis HPB_DOMAIN e HPB_PATH conforme sua configuração.
Certifique-se de que as redes Docker existem:
# Criar redes se não existirem
docker network create reverse-proxy
docker network create internalOu ajuste as variáveis NETWORK_PROXY e NETWORK_INTERNAL no .env para usar suas redes existentes.
Configure limites de CPU e memória conforme seu hardware:
# Recursos padrão (recomendado mínimo 2GB RAM)
CPUS_LIMIT=4
MEMORY_LIMIT=4048M
CPUS_RESERVATION=2
MEMORY_RESERVATION=2048M
SHM_SIZE=2147483648 # 2GBPor padrão, o .env usa a imagem publicada no GitHub Container Registry:
IMAGE_NAME=ghcr.io/librecodecoop/nextcloud-talk-recording
IMAGE_TAG=latestOpções de tags disponíveis:
latest- Última versão da branch mainmain- Branch main (mesma coisa que latest)v0.2.1- Versão específica (quando criar tags)main-<sha>- Commit específico
Build local (opcional):
Se preferir fazer build localmente:
# Build da imagem
docker build -t nextcloud-talk:0.2.1 .
# Ajuste o .env para usar a imagem local
IMAGE_NAME=nextcloud-talk
IMAGE_TAG=0.2.1docker compose --env-file .env.local --profile talk-recording up -ddocker compose --env-file .env.local logs -f recordingdocker compose --env-file .env.local psO container possui healthcheck automático. Verifique o status:
docker inspect --format='{{.State.Health.Status}}' recordingNo Nextcloud, acesse Configurações > Talk > Gravação:
- Habilite o serviço de gravação
- Configure a URL do servidor:
https://recording.exemplo.com.br - Configure o secret (use o mesmo valor de
RECORDING_SECRETdo.env)
Defina quais usuários/grupos podem iniciar gravações nas configurações do Talk.
# Verificar logs
docker compose --env-file .env.local logs recording
# Verificar configuração
docker compose --env-file .env.local config- Verifique se
NC_DOMAINestá correto - Verifique se
NC_PROTOCOLcorresponde ao seu setup (http/https) - Se usar certificados autoassinados, configure
SKIP_VERIFY=true(não recomendado para produção)
- Verifique se
HPB_DOMAINeHPB_PATHestão corretos - Teste a conectividade:
docker exec recording nc -zv $HPB_DOMAIN 443 - Verifique os logs do HPB para erros de autenticação
- Aumente
SHM_SIZEse houver erros relacionados a memória compartilhada - Ajuste
MEMORY_LIMITconforme necessário - Monitore uso:
docker stats recording
# Para desenvolvimento/teste apenas (INSEGURO)
SKIP_VERIFY=true
# Para produção, garanta certificados válidos
SKIP_VERIFY=falsedocker compose --env-file .env.local --profile talk-recording down# Pull da última versão
docker compose --env-file .env.local --profile talk-recording pull
# Restart com a nova imagem
docker compose --env-file .env.local --profile talk-recording up -dSe estiver usando build local:
# Rebuild
docker build -t nextcloud-talk:0.2.1 .
# Restart
docker compose --env-file .env.local --profile talk-recording up -d# Backup do .env
cp .env.local .env.backup-$(date +%Y%m%d)- Nunca commite o arquivo
.env.localcom secrets reais - Use secrets fortes e únicos
- Mantenha
ALLOW_ALL=falseem produção - Use
SKIP_VERIFY=falseem produção - Configure certificados SSL válidos
- Mantenha o container e dependências atualizados
O container executa com:
- User: UID 122 (não-root)
- Read-only filesystem: Sim (segurança adicional)
- Capabilities: NET_RAW removido
- Volumes temporários:
/tmpe/confem tmpfs - Healthcheck: Automático
- Python 3.14.0
- Firefox + Geckodriver (para gravação via browser)
- FFmpeg (processamento de vídeo)
- Xvfb (X virtual framebuffer)
- PulseAudio (áudio)
Este repositório possui GitHub Actions configurado para:
- Build automático: A cada push na branch
main - Multi-arquitetura: Builds para
linux/amd64elinux/arm64 - Publicação no GHCR: Imagens disponíveis em
ghcr.io/librecodecoop/nextcloud-talk-recording - Tagging automático: Quando criar tags
v*, gera versões semânticas - Cache otimizado: Usa GitHub Actions cache para acelerar builds
- Artifact attestation: Verificação de proveniência da imagem
latest- Última versão da branch mainmain- Branch mainmain-<sha>- Commit específico (ex:main-a1b2c3d)v0.2.1,v0.2,v0- Quando criar tag de versão
- Vá para Actions no GitHub
- Selecione Build and Push Docker Image
- Clique em Run workflow
Para problemas ou dúvidas:
- Logs do container:
docker compose logs recording - Documentação oficial: https://github.com/nextcloud/nextcloud-talk-recording
- Issues do projeto upstream: https://github.com/nextcloud/nextcloud-talk-recording/issues
Este serviço é baseado no projeto Nextcloud Talk Recording, mantido pela Nextcloud GmbH.