Helios Voting — Instalação Auto-hospedada (Tutorial Enxuto)
October 16, 2026
O que é e quando usar
O Helios Voting é um sistema de votação eletrônica web, open-source, criado por Ben Adida (MIT). O backend é Python/Django sob licença Apache 2.0 e o frontend sob GPL v3.
O sistema criptografa cada voto no navegador do eleitor antes de enviá-lo ao servidor, apura sobre os votos cifrados (tally criptografado) e só então descriptografa o resultado agregado — o voto individual nunca é revelado. Cada eleitor recebe um ballot tracker (impressão digital do voto cifrado) para conferir que seu voto entrou na apuração, e qualquer pessoa pode auditar a eleição.
- Adequado para: eleições de diretoria, conselhos, chapas, consultas internas de sindicatos, associações, universidades e condomínios.
- NÃO adequado para: eleições de alto risco com coerção/venda de voto em larga escala (o próprio projeto recomenda contra uso para cargos públicos majoritários). Combine com LGPD: minimize dados pessoais dos eleitores e proteja o servidor.
Requisitos
- Servidor Linux (Ubuntu/Debian recomendado), 1–2 GB RAM, 10 GB disco — suficiente para milhares de eleitores.
- PostgreSQL 12+ — banco de dados.
- RabbitMQ — fila para o Celery (processamento em background: envio de e-mails e importação de CSV de eleitores).
- Python 3.13 + uv (gerenciador de pacotes moderno, substitui pip/virtualenv).
- Domínio com DNS apontando para o servidor (ex.:
votacao.minhaentidade.org.br) + HTTPS (Let’s Encrypt via nginx/Caddy).
Instalação (caminho oficial, sem Docker)
Pacotes do sistema
sudo apt update
sudo apt install -y postgresql rabbitmq-server \
python3 python3-dev libpq-dev git
Instalar o uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc # ou reabra o terminal
Baixar o código
git clone https://github.com/benadida/helios-server.git
cd helios-server
Dependências Python
uv sync # cria o .venv e instala tudo
Banco de dados
./reset.sh # roda as migrations e prepara o schema
Subir em desenvolvimento
uv run python manage.py runserver 0.0.0.0:8000
# acesse http://IP-DO-SERVIDOR:8000
Configuração para produção
Variáveis essenciais
No módulo de settings (ex.: helios_settings.py ou settings.py), ajuste antes de expor:
DEBUG = False
SECRET_KEY = '<gere-uma-chave-longa-e-aleatoria>'
ALLOWED_HOSTS = ['votacao.minhaentidade.org.br']
SITE_HOST = 'https://votacao.minhaentidade.org.br'
# E-mail (SMTP) para envio de credenciais aos eleitores:
EMAIL_HOST = 'smtp.seuprovedor.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '...'
EMAIL_HOST_PASSWORD = '...'
EMAIL_USE_TLS = True
Login social (opcional)
Para autenticação Google: crie um projeto em console.developers.google.com, ative a People API, cadastre a origem (https://seu-dominio) e o callback (/auth/after/), e defina GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET. Sem isso, o Helios funciona com login por e-mail/senha local.
Processo de background (Celery)
Essencial em produção para envio de e-mails em massa e tarefas pesadas:
uv run celery -A helios worker --loglevel=info
Em produção, rode como serviço systemd junto com o app web (gunicorn) atrás de um nginx com TLS:
uv run gunicorn wsgi:application -b 127.0.0.1:8000 --workers 3
HTTPS
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d votacao.minhaentidade.org.br
Backup
sudo -u postgres pg_dump helios > helios_$(date +%F).sql # agende no cron
Rodando a primeira eleição
- Crie a conta de administrador na tela inicial do Helios.
- New Election → defina nome, datas de abertura/encerramento e perguntas (chapas, conselhos, sim/não).
- Trustees — você mesmo como trustee padrão; para eleições sensíveis, distribua a chave de descriptografia entre múltiplos trustees (todos precisam participar da apuração).
- Voters — cadastre a lista de eleitores (e-mail + ID) manualmente ou por CSV; o Helios gera senha única por eleitor e envia por e-mail.
- Freeze a eleição (congela cédula e eleitorado — irreversível).
- Eleitores votam pelo link, criptografam no navegador e recebem o tracking number.
- Ao encerrar, compute o tally e publique o resultado — qualquer um pode verificar na aba Verify.
Quem usa no Brasil (referências para sindicatos e associações)
Não há registro público de um sindicato brasileiro auto-hospedando o Helios — o uso documentado concentra-se em instituições públicas de ensino e pesquisa, que servem de modelo técnico e jurídico para qualquer entidade:
| Instância | Quem | Observação |
|---|---|---|
| vote.usp.br | USP | Balanceamento de carga; manuais públicos de eleitor e gestor. |
| votacao.ufrj.br | UFRJ | Eleições de reitoria e conselhos. |
| eleicoes.fiocruz.br | Fiocruz | Envia código de confirmação por e-mail institucional. |
| helios.uece.br | UECE | Versão traduzida do IFSC com suporte a LDAP — útil para integrar com base de associados. |
| sistemas.ifac.edu.br/helios | IFAC | Rede Federal; vários IFs compartilham a mesma versão customizada (IFMA/IFPB/IFCE/IFRR/IFNMG…). |
| helios.furb.br | FURB | Possui página de ajuda ao eleitor em português. |
Segundo nota do IFPB, também utilizam: Unicamp, UnB, UFSC, UFMG, Defensoria Pública da União, Tribunal de Justiça de Minas Gerais e a Sociedade Brasileira de Computação (SBC) — esta última um exemplo de associação de associados que roda o sistema com sucesso.
Atalho para entidades pequenas: se o sindicato/associação não quiser manter servidor, dá para usar a instância hospedada oficial vote.heliosvoting.org (mais de 2 milhões de votos computados) ou contratar hospedagem gerenciada, restando à entidade apenas a auto-hospedagem quando exigir soberania total dos dados (LGPD) ou customizações (LDAP, identidade visual, regras próprias).
Boas práticas e armadilhas
| Tema | Recomendação |
|---|---|
segurança |
Nunca rode com DEBUG=True exposto; proteja o SECRET_KEY e os backups do banco (contêm votos cifrados + dados de eleitores). |
sigilo |
Distribua a descriptografia entre múltiplos trustees — assim nenhuma pessoa sozinha consegue abrir votos individuais. |
coerção |
Voto pela internet é vulnerável a coerção/venda de voto; para diretorias muito disputadas, considere cabine supervisionada ou voto presencial. |
e-mail |
Teste o SMTP antes: a credencial de voto chega por e-mail. Configure SPF/DKIM do domínio remetente para não cair em spam (lição clássica de quem auto-hospeda). |
jurídico |
Registre em ata o uso do sistema, versione a configuração da eleição e preserve os logs — auditabilidade é o argumento principal em eventuais impugnações. |
código |
Forks brasileiros com LDAP e PT-BR (ex.: versão do IFSC) podem ser ponto de partida melhor que o upstream puro. |
Fontes: INSTALL.md oficial (github.com/benadida/helios-server), heliosvoting.org, páginas de ajuda de USP/UFRJ/Fiocruz/UECE/IFPB. Verifique o INSTALL.md do repositório para a versão atual das dependências.
- Permalink:
- Publicado em:
- October 16, 2026
- Tamanho:
- 5 minutos de leitura, 935 palavras
- See Also:
Diga algo
Obrigado
Sua postagem foi enviada e será publicada assim que for aprovada.
Clique aqui para ver o _pull request_ gerado por você.
OK
OOPS!
Sua postagem não foi enviada. Por favor, volte à página e tente novamente. Obrigado!
OK