Run a host

Keep a copy of the record.

Citizens Party has no headquarters server. Members run small computers, called hosts, that each keep a full copy of every proposal and vote and share it with members' apps. If any one host goes offline or is shut down, the rest still have everything.

We're in open beta, so setup takes a few more steps than it will later.

  • Download, double-click, done. No settings, no accounts, nothing to install. It finds the other hosts, copies the record and puts itself online through a free Cloudflare tunnel, so you don't open any ports and your home address stays private.
  • A host can't cheat. Every record is signed on a member's phone. A host can't change or invent a vote, and members' apps check every signature themselves.
  • The network checks every host. Before a new host is listed, the other hosts make sure it really holds the record. One that stops working is dropped, and members' apps test every host they use.
  • Small and cheap. A home PC, a laptop that stays on, a Raspberry Pi or a $5 a month server is plenty.
Download

About two minutes.

Every download lists its SHA-256 fingerprint, so you can check it arrived intact. All of them: SHA256SUMS.txt.

Windows

Download for Windows
citizens-host-windows.zip, 5.9 MB · v0.5.0 · Oct 29, 2026SHA-256 8b621cf8097f…22d586
  1. Open the downloaded citizens-host-windows.zip and click Extract all, then Extract.
  2. In the folder that opens, double-click citizens-host.exe.
  3. Windows will probably show a blue box: "Windows protected your PC." Click More info, then Run anyway. It warns because the program isn't signed yet (signing costs money, and we're working on a free way), not because anything is wrong with it.
  4. If Chrome stops the download first, click the download, then Keep (or Download suspicious file).
  5. Leave the window open. It shows how many members are connected. Closing it stops the host.

A Linux server

On a cloud server or a Raspberry Pi, one command installs it as a service that starts itself after a reboot:

curl -fsSL https://citizensparty.ca/install.sh | sudo sh

Prefer to read it first?

curl -fsSL https://citizensparty.ca/install.sh -o install.sh
less install.sh
sudo sh install.sh

Run it again to update. This shows the live status screen:

citizens-host status

Linux, by hand

Download for Linux
citizens-host-linux-x64.tar.gz, 5.8 MB · v0.5.0 · Oct 29, 2026SHA-256 1f95d38c8a64…528f45
Raspberry Pi (64-bit)
citizens-host-linux-arm64.tar.gz, 5.5 MB · v0.5.0 · Oct 29, 2026SHA-256 928167a0a1ce…faa157
  1. Unpack it:
    tar xzf citizens-host-linux-*.tar.gz
  2. Start it:
    ./citizens-host/citizens-host
  3. Leave it running. It shows how many members are connected. Ctrl+C stops it.

Docker: Mac, Windows, Linux

There's no Mac program yet: on a Mac, use Docker. It works the same on Windows and Linux.

Download docker-compose.yml
  1. Put the file in a new folder, open a terminal there and start it:
    docker compose up -d
  2. The live status screen:
    docker compose exec host citizens-host status
  3. To update:
    docker compose build --pull --no-cache && docker compose up -d

The record and your host's key stay in the data folder next to the file, so updates keep them.

Keep it running

Once it's up.

Your data

Your records and your host's key are kept in the data folder next to the program (on a server: /var/lib/citizens-host). Back it up if you move computers.

Start with Windows

Press Win+R, type this, press Enter, and put a shortcut to the program in the folder that opens:

shell:startup

A fixed address

Want your own domain instead of a quick tunnel? See the README in the Linux download, or ask us.

Built in

The party's own hosts

Your host starts by copying from these, then finds the rest of the network by itself.

wss://host1.citizensparty.cachecking…
wss://host2.citizensparty.cachecking…
wss://host3.citizensparty.cachecking…
Party key. Your host uses this to check that records really come from the party.
4526e5346c39903fd8a1f2e5b50ad141b364d7616f377d5e35abadee0f1821ef
The same key as written in the app: npub1g5nw2drv8xgrlk9p7tjm2zk3gxekf4mpdumh6h344wk7urccy8hs33hdf2