selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Belenios logo

Self-host Belenios

3.3.0

Verifiable online voting system with end-to-end encryption

ReleaseOpen SourceAGPL-3.0
Updatedlast week
LanguageOCaml
Setup difficultyAdvanced
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
Docker
glondu/beleniosbase
Install with Docker

What 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

How to install Belenios

Install Belenios with Docker

Docker, Linux with host networking

make clean docker build -f contrib/docker/demo.Dockerfile -t belenios . docker run --rm --network host -it belenios

Demo image, not for production use

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

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…