Helios Voting — Instalação Auto-hospedada (Tutorial Enxuto)

By Tutorial

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

  1. Crie a conta de administrador na tela inicial do Helios.
  2. New Election → defina nome, datas de abertura/encerramento e perguntas (chapas, conselhos, sim/não).
  3. 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).
  4. 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.
  5. Freeze a eleição (congela cédula e eleitorado — irreversível).
  6. Eleitores votam pelo link, criptografam no navegador e recebem o tracking number.
  7. 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:

Webmentions


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