Pular para o conteúdo principal

Docker CPU

Instalação com Docker Compose, sem GPU.

Para Quem É

Use este caminho quando quiser rodar o Toposync isolado em container.

A imagem padrão é:

ghcr.io/toposync/toposync:0.8.0

Ela inclui o bundle toposync-streaming, FFmpeg, go2rtc embutido e o toolchain mínimo para preparo local de RF-DETR. Você não precisa de checkout do repositório no caminho normal de instalação.

Para suporte por arquitetura, consulte Compatibilidade.

Pré-requisitos

  • Docker.
  • Docker Compose.

Instalação

Crie uma pasta de deploy e um arquivo Compose:

docker-compose.yml
services:
toposync:
image: ghcr.io/toposync/toposync:0.8.0
ports:
- "${TOPOSYNC_PORT:-8000}:8000"
volumes:
- ${TOPOSYNC_DATA_VOLUME:-./toposync-data}:/data
restart: unless-stopped

Suba o Toposync:

docker compose up -d

Se você estiver usando o checkout do repositório, o docker-compose.yml da raiz já usa a mesma imagem pública por padrão.

Por padrão:

  • porta pública: 8000;
  • pasta de dados no host: ./toposync-data;
  • pasta de dados no container: /data.

Como Rodar

Subir:

docker compose up -d

Parar:

docker compose stop

Ver logs:

docker compose logs -f toposync

Alterar porta pública:

TOPOSYNC_PORT=8080 docker compose up -d

Alterar pasta de dados:

TOPOSYNC_DATA_VOLUME=/caminho/para/toposync-data docker compose up -d

Como Acessar

No host:

http://127.0.0.1:8000/

Na rede local:

http://<ip-do-servidor>:8000/

Como Verificar

curl -I http://127.0.0.1:8000/
curl http://127.0.0.1:8000/api/health
curl http://127.0.0.1:8000/api/auth/status

O esperado:

  • / responde 200;
  • /api/health responde 200;
  • /api/auth/status responde JSON e pode indicar requires_setup: true no primeiro acesso.

Depois de concluir o setup/login pela UI, a API autenticada passa a responder as rotas protegidas, como /api/extensions.

Primeira câmera e streaming

Streaming já vem incluído na imagem CPU pública. O FFmpeg está no PATH, e o go2rtc fica embutido em /usr/local/bin/go2rtc.

Se você ainda não tem uma câmera real pronta, comece pelo caminho RTSP sintético:

Esse guia inicia uma fonte RTSP local, adiciona ela como câmera manual, inicia a engine de streaming, reconcilia as publicações ao vivo e confirma a tela Câmeras ao vivo.

Como Atualizar

Baixe a nova imagem e recrie o container:

docker compose pull
docker compose up -d

Para uma release fixa, pinne a tag exata no docker-compose.yml, por exemplo ghcr.io/toposync/toposync:0.8.0.

Avançado: build local

Use o caminho de build local apenas quando estiver desenvolvendo o Toposync a partir de um checkout do repositório ou testando mudanças ainda não publicadas:

docker compose -f docker-compose.yml -f docker-compose.local-build.yml up -d --build

Isso cria toposync:local a partir do Dockerfile do monorepo em vez de puxar a imagem pública do GHCR.

Como Desinstalar

Parar e remover o container:

docker compose down

Remover também os dados locais:

rm -rf ./toposync-data

Troubleshooting

Porta 8000 ocupada

Use outra porta no host:

TOPOSYNC_PORT=8080 docker compose up -d

Container não fica saudável

Veja os logs:

docker compose logs -f toposync

Teste o healthcheck:

curl http://127.0.0.1:8000/api/health
curl http://127.0.0.1:8000/api/auth/status

Quero GPU

Este guia é CPU-only. Para NVIDIA em Docker, use o guia Docker CUDA.