How to Contribute
Hashiverse has no company behind it and no servers of its own. Its resilience, availability, and censorship resistance are entirely a function of how many independent servers exist in the network. Every node you add makes the network harder to attack, harder to silence, and more useful for everyone on it. If you believe in what Hashiverse is trying to be, running a server is the most direct way to help.
The good news: it costs about as much as a cup of coffee a month. And if you want to contribute more, the right move is to run more servers, not a bigger one — ten $5 machines spread across different providers and regions are far more valuable to the network than one $50 machine.
What you need
Any cheap VPS from any provider will do — Hetzner, DigitalOcean, Vultr, Linode, and many others offer suitable machines for around $5/month. The minimum requirements are modest:
- Storage: 20 GB of disk space
- Bandwidth: 1 TB per month
- OS: Ubuntu/Debian or Fedora/RHEL (or any modern Linux with Docker)
CPU and RAM requirements are minimal — the server is written in Rust and is designed to run efficiently on the smallest available instance sizes.
Installing and running the server
An important point to note is that when you fire up a server, it has to do some significant Proof of Work before it is designated a trusted spot in the Hashiverse network. So don't be surprised if for the first few hours your CPU is at max and the logs keep talking about PoWs, iters, and ETA.
We recommend any standard linux server. Ubuntu works nicely, either 2024, or 2026. Paste the following into the startup script / user-data / cloud-init field when you create your server (the name varies by provider). It opens the firewall, adds the signed Hashiverse package repository, and installs the server, which starts straight away.
#!/usr/bin/env bash
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y curl ca-certificates ufw
ufw allow 22/tcp
ufw allow from 0.0.0.0/0 to any port 443 proto tcp
ufw --force enable
curl -fsSL https://www.hashiverse.com/packages/hashiverse-packages.asc -o /usr/share/keyrings/hashiverse-packages.asc
curl -fsSL https://www.hashiverse.com/packages/apt/hashiverse.sources -o /etc/apt/sources.list.d/hashiverse.sources
curl -fsSL https://www.hashiverse.com/packages/apt/hashiverse-mirrors.txt -o /etc/apt/hashiverse-mirrors.txt
apt-get update
apt-get install -y hashiverse-server
On Fedora, Rocky, Alma or RHEL, add the repository and install with dnf instead
(and open port 443 in firewalld):
curl -fsSL https://www.hashiverse.com/packages/hashiverse-packages.asc -o /etc/pki/rpm-gpg/RPM-GPG-KEY-hashiverse
curl -fsSL https://www.hashiverse.com/packages/rpm/hashiverse.repo -o /etc/yum.repos.d/hashiverse.repo
dnf install -y hashiverse-server
The server runs as the systemd service hashiverse-server and keeps itself up to
date: once a day, at a random time that differs from machine to machine so the network never
restarts all at once, it checks for a new version and restarts onto it. A few useful commands:
- Follow the logs:
journalctl -u hashiverse-server -f - Settings:
/etc/default/hashiverse-server, thensystemctl restart hashiverse-server - Data and server identity:
/var/lib/hashiverse-server - Turn off automatic updates:
systemctl disable --now hashiverse-server-updater.timer
The server's built-in DDoS protection uses ipset and iptables to drop
traffic from abusive IPs at the kernel level, so it runs as root, but in a systemd sandbox that
only grants it the networking capabilities it needs. /var/lib/hashiverse-server is
where the server persists its identity and stored encrypted posts — keep it safe if you care about
continuity, although Hashiverse is designed to heal itself if you destroy a server and fire up a new one.
Alternatively, with Docker
If you'd rather run the server in Docker, this startup script installs Docker, opens the firewall, writes the compose file, and brings the stack up.
#!/usr/bin/env bash
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y docker.io docker-compose-v2 ufw
ufw allow 22/tcp
ufw allow from 0.0.0.0/0 to any port 443 proto tcp
ufw --force enable
mkdir -p /opt/hashiverse && cd /opt/hashiverse
cat > docker-compose.yml <<"YAML"
services:
hashiverse-server:
image: ghcr.io/hashiverse/hashiverse-server:latest
restart: unless-stopped
stop_grace_period: 30s
ports:
- "0.0.0.0:443:443"
cap_add:
- NET_ADMIN
volumes:
- ./data:/data
logging:
driver: local
options:
max-size: 10m
max-file: "5"
watchtower:
image: nickfedor/watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600
YAML
docker compose pull
docker compose up -d
Watchtower will keep the server automatically updated as new versions are released.
The NET_ADMIN capability is required for the server's built-in DDoS protection,
and the ./data volume is where the server persists its identity and stored
encrypted posts.