Settare Istanza Betula / Betula Self-Hosted

Guida: https://betula.mycorrhiza.wiki/

Prerequisiti

  • VPS con:
    • Certbot
    • Caddy
  • PC in grado di eseguire Go

💁‍♂️ Testato su VPS Intel Xeon D-1531 @ 400MHz / 256Mb RAM / Debian GNU/Linux 12

📉 Esperimento perfetto se sei a corto di spazio, memoria, o hai una VPS davvero economica!

Procedura

  1. Scaricare e compilare https://betula.mycorrhiza.wiki su un computer in grado di eseguire e compilare Go, usando Linux o WSL

  2. Mettere il file betula appena compilato dentro la cartella /srv/betula/bin. Se queste cartelle non esistono vanno create.

  3. Acquistare un dominio o usarne uno già esistente; sarà dove la nostra istanza sarà disponibile.

  4. Settare i certificati usando certbot di let’s encrypt, con l’opzione DNS. Se l’opzione HTTP-01 è disponibile, ignorare questo passaggio.

certbot certonly --preferred-challenge dns -d <dominio>

Da questo punto in poi il deploy è stato fatto con l’utente root: non fatelo!

  1. Nella directory /srv/betula/ scrivere un Caddyfile con il seguente contenuto:
betula.<dominio>:<porta-esterna-da-esporre> {
  tls /etc/letsencrypt/live/betula.<dominio>/fullchain.pem /etc/letsencrypt/live/betula.<dominio>/privkey.pem

  log {
    output file /var/log/caddy/betula.<dominio>.log {
      roll_size 16MiB
      roll_keep 16
    }
  }

  route /* {
    reverse_proxy http://127.0.0.1:1738
  }

  encode zstd gzip
}
  1. Accedere al pannello di controllo del dominio e cambiare il DNS facendolo puntare alla macchina dove sta girando Caddy e la porta esposta

  2. Dopo aver testato manualmente che funzioni, scrivere una unit di systemd che avvii Betula.

Salvare in /etc/systemd/system/betula.service:

[Unit]
Description=Betula
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/srv/betula/bin/betula /srv/betula/database

[Install]
WantedBy=multi-user.target

NB: /srv/betula/database puo assumere il valore di un file scrivibile in una qualunque posizione del sistema

Digitare systemctl enable betula per eseguirlo ad ogni avvio della macchina.

  1. Scrivere una unit di systemd che avvii il server Caddy.

Salvare in /etc/systemd/system/caddy.service:

[Unit]
Description=Caddy OLEOLEs
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
WorkingDirectory=/srv/betula
ExecStart=/usr/bin/caddy run --config /srv/betula/Caddyfile --adapter caddyfile

[Install]
WantedBy=multi-user.target

NB: /srv/betula/database puo assumere il valore di un file scrivibile

Digitare systemctl enable caddy per eseguirlo ad ogni avvio della macchina.