Pular para o conteúdo principal

Processing Server Como Serviço No Windows

Instalação de um servidor de processamento permanente no Windows.

Para Quem É

Use este caminho quando quiser usar uma máquina Windows como servidor remoto de processamento para o Toposync.

O script cria um serviço Windows chamado ToposyncProcessingServer.

Para suporte por arquitetura e GPU no Windows, consulte Compatibilidade.

Pré-requisitos

  • Windows 10/11.
  • PowerShell.
  • Permissão de administrador.
  • Checkout do repositório Toposync.
  • Rede liberada entre o origin e o Windows.

O script instala uv e Python 3.12 se necessário.

Instalação

Abra PowerShell como Administrador na raiz do repositório.

Instalação automática:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle auto -Version latest -PreferLocalPackages:$false

O modo auto escolhe:

  • cuda, se encontrar nvidia-smi;
  • directml, caso contrário.

Para forçar CPU:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle cpu -Version latest -PreferLocalPackages:$false

Para forçar DirectML:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle directml -Version latest -PreferLocalPackages:$false

Para forçar CUDA:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle cuda -Version latest -PreferLocalPackages:$false

Se precisar anunciar um IP específico para o origin:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle auto -Version latest -PreferLocalPackages:$false -AdvertiseHost 192.168.1.50

Como Rodar

O script cria e inicia o serviço automaticamente.

Ver status:

Get-Service ToposyncProcessingServer

Reiniciar:

Restart-Service ToposyncProcessingServer

Parar:

Stop-Service ToposyncProcessingServer

Como Acessar

Por padrão, o serviço escuta em:

http://<ip-do-windows>:49321

O script salva os dados em:

%ProgramData%\Toposync\ProcessingServer

O payload de registro fica em:

%ProgramData%\Toposync\ProcessingServer\processing-server-registration.json

Como Verificar

Veja o JSON de registro:

Get-Content "$env:ProgramData\Toposync\ProcessingServer\processing-server-registration.json"

Se instalou com -NoAuth, teste o status local:

Invoke-RestMethod -Uri http://127.0.0.1:49321/api/processing/status

Por padrão, o script gera Basic Auth. Use o usuário e senha salvos no JSON:

$pair = "toposync:<senha-do-json>"
$token = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
Invoke-RestMethod -Uri http://127.0.0.1:49321/api/processing/status -Headers @{ Authorization = "Basic $token" }

Registrar No Origin

Use o payload salvo em:

%ProgramData%\Toposync\ProcessingServer\processing-server-registration.json

O script também imprime um exemplo de Invoke-RestMethod para registrar o servidor no origin.

Depois valide no origin:

Invoke-RestMethod http://ORIGIN_HOST:8000/api/processing-servers/<server-id>/status

Nos pipelines, use processing_server_id igual ao id registrado.

Como Atualizar

Rode o instalador novamente:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle auto -Version latest -PreferLocalPackages:$false

Para recriar o ambiente virtual:

powershell -ExecutionPolicy Bypass -File .\scripts\install_windows_processing_server.ps1 -Bundle auto -Version latest -PreferLocalPackages:$false -RecreateVenv

Como Desinstalar

Remover serviço e arquivos de runtime, preservando dados e logs:

powershell -ExecutionPolicy Bypass -File .\scripts\uninstall_windows_processing_server.ps1

Remover também dados e logs:

powershell -ExecutionPolicy Bypass -File .\scripts\uninstall_windows_processing_server.ps1 -RemoveData

Se o serviço estiver preso:

powershell -ExecutionPolicy Bypass -File .\scripts\uninstall_windows_processing_server.ps1 -Force

Remova também o processing server registrado no origin.

Troubleshooting

O serviço não inicia

Veja os logs em:

%ProgramData%\Toposync\ProcessingServer\logs

Também confira:

Get-Service ToposyncProcessingServer

Porta ocupada

O instalador tenta escolher a próxima porta livre quando -AutoSelectPort está ativo. Confira a porta final no arquivo processing-server-registration.json.

O origin não consegue conectar

Confirme o IP em url dentro do JSON de registro, a porta escolhida e a regra de firewall criada pelo instalador.

Escolheu bundle errado

Rode o instalador novamente com -Bundle cpu, -Bundle directml ou -Bundle cuda.