xmpp, gemini, web, and akkoma on a raspberry pi

i took a raspberry pi 3b+ from someone who never used it, cause i wanted to self-host some stuff :3

and here i'll try to document a bit of the process i guess? cause it was fun, uwu

(these links are all HTTP, by the way, oh and a lot of this is from memory, sorry if it's fucked up rn)

openbsd

there's a port of openbsd to arm64, so i was like "niiiice"

i installed it by putting the live disk on the microsd card, then i installed it to an external usb ssd

first i needed to install a uefi bootloader to the pi though

OpenBSD arm64 homepage

RPi3, a raspberry pi uefi firmware (latest version worked fine)

uhh i think this site was helpful

website

i started off hosting web content by using the caddy webserver, because it has a very easy way of dealing with ssl (https) certificates, uwu

i had to install it from source, though, which wasn't too hard. mostly just followed the guide.

caddy tutorial

helpful list of GOOS and GOARCH variables

i used the environment variables:

export GOOS=openbsd
export GOARCH=arm64
export GOARM=8

my config file (/etc/caddy/Caddyfile) is short and looks like this:

cipay.ca {
  tls my.mail@example.com
  root * /var/www/htdocs/html
  file_server browse

  log {
    output file /var/log/caddy/my-caddysite.log
  }
}

i forwarded ports 443 and 80 on my pi from my router's admin panel.

https://caddyserver.com/

xmpp

for xmpp i installed prosody from the package manager. i barely changed any settings in the config (/etc/prosody/prosody.cfg.lua), except for:

admins = { "linen@cipay.ca" }
modules_enabled {
 "bosh";
}
VirtualHost = "cipay.ca"

i forwarded ports 5222 and 5296

prosody server

akkoma

uhhh i just followed the guide on the akkoma website

akkoma openbsd guide

but i served it over caddy, so i EXPANDED my Caddyfile to look like this:

# this is my website (unchanged)
cipay.ca {
  tls my.mail@example.com
  root * /var/www/htdocs/html
  file_server browse

  log {
    output file /var/log/caddy/my-caddysite.log
  }
}

# this is the new block i added, for akkoma
amisk.cipay.ca {
  log {
    output file /var/log/caddy/pleroma.log
  }
  encode gzip
  reverse_proxy 127.0.0.1:4000
}

following the rest of the guide worked.

gemini

for gemini i installed molly-brown, which is smooth and actually works. to generate tls key/cert i used the following line

openssl req -new -subj "/CN=cipay.ca" -x509 -addext "subjectAltName = DNS:cipay.ca" -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 365 -nodes -out cert.pem -keyout key.pem

then i pointed "/etc/molly.conf" to the location of cert.pem and key.pem. :D

conclusion

i wanna make this article easier to read in the future. just kinda braindumping right now.

i was drunk / stoned / tired / depressed / other stuff when i did all of this so please be cautious cause i have no idea what i'm doing and i barely remember the steps i took to properly do any of it, but i wanted to be somewhat helpful for now <3

march 7, 2023