Hoe bij te dragen

Hashiverse heeft geen bedrijf erachter en geen eigen servers. Zijn veerkracht, beschikbaarheid en weerstand tegen censuur zijn volledig een functie van hoeveel onafhankelijke servers er in het netwerk bestaan. Elk knooppunt dat je toevoegt maakt het netwerk moeilijker aan te vallen, moeilijker tot zwijgen te brengen en nuttiger voor iedereen erop. Als je gelooft in wat Hashiverse probeert te zijn, is een server draaien de meest directe manier om te helpen.

Het goede nieuws: het kost ongeveer evenveel als een kop koffie per maand. En als je meer wilt bijdragen, is de juiste zet om meer servers te draaien, niet een grotere — tien machines van $5 verspreid over verschillende providers en regio's zijn voor het netwerk veel waardevoller dan één machine van $50.

Wat je nodig hebt

Een willekeurige goedkope VPS van een willekeurige provider voldoet — Hetzner, DigitalOcean, Vultr, Linode en vele anderen bieden geschikte machines voor ongeveer $5/maand. De minimumvereisten zijn bescheiden:

De CPU- en RAM-vereisten zijn minimaal — de server is in Rust geschreven en is ontworpen om efficiënt te draaien op de kleinste beschikbare instance-formaten.

De server installeren en draaien

Een belangrijk punt om te noteren is dat wanneer je een server opstart, deze eerst flink wat Proof of Work moet uitvoeren voordat hij een vertrouwde plek in het Hashiverse-netwerk krijgt aangewezen. Wees dus niet verbaasd als je CPU de eerste paar uur op het maximum draait en de logs blijven praten over PoWs, iters en ETA.

We raden een standaard linux-server aan. Ubuntu werkt prima, of het nu 2024 of 2026 is. Plak het volgende in het opstartscript / user-data / cloud-init-veld wanneer je je server aanmaakt (de naam varieert per provider). Het opent de firewall, voegt de ondertekende Hashiverse-pakketrepository toe en installeert de server, die meteen start.

#!/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

Op Fedora, Rocky, Alma of RHEL voeg je in plaats daarvan de repository toe en installeer je met dnf (en open je poort 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

De server draait als de systemd-service hashiverse-server en houdt zichzelf up-to-date: eenmaal per dag, op een willekeurig tijdstip dat per machine verschilt zodat het netwerk nooit in één keer herstart, controleert hij op een nieuwe versie en herstart hij daarop. Een paar handige commando's:

De ingebouwde DDoS-bescherming van de server gebruikt ipset en iptables om verkeer van misbruikende IP's op kernel-niveau te laten vallen, dus hij draait als root, maar in een systemd-sandbox die hem alleen de netwerk-capabilities geeft die hij nodig heeft. In /var/lib/hashiverse-server persisteert de server zijn identiteit en opgeslagen versleutelde berichten — bewaar dit veilig als je om continuïteit geeft, hoewel Hashiverse ontworpen is om zichzelf te herstellen als je een server vernietigt en een nieuwe opstart.

Als alternatief: met Docker

Draai je de server liever in Docker, dan installeert dit opstartscript Docker, opent het de firewall, schrijft het het compose-bestand en start het de stack op.

#!/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 houdt de server automatisch up-to-date naarmate er nieuwe versies worden uitgebracht. De NET_ADMIN-capability is vereist voor de ingebouwde DDoS-bescherming van de server, en het ./data-volume is waar de server zijn identiteit en opgeslagen versleutelde berichten persisteert.