Self-host Belenios
3.3.0Verifiable online voting system with end-to-end encryption
- Stars
- 156
- CPU
- 2 CPUs
- RAM
- 4 GB RAM
- Storage
- 16 GB disk space
- Port
- 8001 (web server (demo))
- Requires
- Bubblewrap, GMP, Libsodium, OpenSSL, Sendmail, SQLite3
glondu/beleniosbaseWhat is Belenios?
Belenios implements the Helios-C protocol to provide a verifiable online voting system with end-to-end encryption. It delivers vote privacy through cryptographic encryption and universal verifiability where anyone can confirm ballots are correctly counted. The system provides a CLI and a web server for managing elections with distinct roles for administrators, credential authorities, trustees, and voters. Supported counting methods include Condorcet, STV, and majority judgment (experimental). Threshold decryption allows multiple trustees to collectively decrypt results. Authentication options include generated passwords, CAS, and OpenID Connect. The software can be self-hosted via Docker, systemd-nspawn containers, or compiled from source using OPAM on Debian-based systems. Developed by Inria/CNRS researchers and now maintained by VCAST, it is licensed under AGPL-3.0.
Should you self-host Belenios?
Belenios scores 48/100 on selfhost.directory (how scoring works) and ranks #49 of 78 in Security. It has 156 GitHub stars.
There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.
Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in OCaml.
Its closest alternative on selfhost.directory is pentagi (83/100, 32 648 stars). It scores higher overall, so compare the two before you pick. See Belenios vs pentagi side by side.
Features
- CAS authentication
- Command-line tool
- Credential-based authentication
- Election auditing
- Multiple counting methodsExperimental mode
- OpenID Connect Authentication
- Revoting
- Scheduled elections
- Threshold decryption
- Universal verifiability
- Verifiable voting
- Vote privacy
- Web-based administration
- Weighted voting
Belenios README
FAQ
What is the procedure for updating a Belenios server?
Easiest is to redeploy to a new location from scratch, keeping the spool directory. In-place updates are possible but running opam-bootstrap.sh first is recommended.
Why does Belenios require cookies?
Cookies store language preference and manage sessions during voting. Identifying information is discarded after voting; no tracking for statistics or marketing.
Can voters vote multiple times?
Yes, voters can vote as many times as they want until the election closes. Only the last ballot is kept and counted.
What happens if a decryption authority loses their key?
Keys cannot be recovered. The project recommends making mock elections first and using threshold schemes (e.g., 2 of 3) so elections can still be tallied if some authorities are missing.
How are election results verified?
Results come with a mathematical proof verifiable by anyone using software. Instructions for verification are provided in the documentation.
Can Belenios be used for high-stake elections?
The project states that no existing voting scheme achieves the same security guarantees as traditional paper voting. Belenios lacks coercion resistance and device corruption resistance.
What are the hardware recommendations for a local instance?
The project's server runs on a VM with 4 GB RAM, 16 GB disk, and 2 CPUs on Debian stable. A reverse proxy (nginx) is recommended for HTTPS.
Can I delegate my vote to another voter (proxy voting)?
No, proxy voting does not exist. However, delegations known in advance can be handled by assigning multiple votes to the delegate.
Is it mandatory to choose a decryption authority?
Not mandatory but strongly recommended for security. Without one, the server can technically know who voted what.
Can voters rank candidates?
Yes, ranking and scoring is supported with Condorcet, STV, and majority judgment counting methods (experimental mode).
Is there a limit on the number of voters?
The free VCAST offer limits elections to 100 voters. For more, you can contact VCAST or deploy your own instance.
Can we hide the results page from voters?
Yes, temporarily. It is possible to postpone the display of results for up to one week after the count.
Can we choose the start and end date of the election?
Yes, as soon as the election is opened, it is possible to choose the start and end date. These dates can be modified at any time until the counting of votes.
More in Security
blindaiBlindAI is an open-source AI privacy solution using Intel SGX enclaves for confidential inference. Self-host models or query hosted ones via Python client.
blind_pin_serverSelf-hosted blind PIN oracle server that enforces 3 PIN attempt limits on Blockstream Jade hardware wallets, with optional Redis backend for PIN storage.
blindsendblindsend is a self-hosted, open-source file sharing tool with end-to-end encryption. Share or request files via secure links with optional passwords.
BunkerWeb🛡️ Open-source and cloud-native Web Application Firewall (WAF)
BytebaseSelf-hosted, open-source database governance: reviewed schema changes, SQL review rules, RBAC, masking, audit logs and an MCP server across 20+ engines.
c15tOpen-source cookie consent tool for React, Next.js, Vue and vanilla-JS sites: in-bundle GDPR banners, vendor script gating, self-hosted backend for consent records.
Canary TokensSelf-hosted multi-protocol network honeypot simulating common services to detect attackers. Alerts via email, syslog, webhooks when threats are detected.
capjsSelf-hosted, open-source CAPTCHA that replaces reCAPTCHA with invisible proof-of-work and browser instrumentation: no puzzles, no trackers, a ~20 kB widget.
captchaProsopo Procaptcha is a self-hosted, open-source CAPTCHA replacing reCAPTCHA and hCaptcha with zero data collection and proof-of-work or slider puzzle challenges.
CDRM-Project-2.0CDRM-Project is a self-hosted, open-source web application that decrypts Widevine and PlayReady DRM content using a Flask and React stack with SQLite or MariaDB backend.
cerbosOpen-source authorization policy engine (PDP) that decides access from YAML RBAC/ABAC rules via HTTP and gRPC APIs, self-hosted as a container, Helm chart or binary.
certificatesOpen-source, self-hosted private CA that automates X.509/TLS and SSH certificate issuance and doubles as your own ACMEv2 server.
0 comments