Setting up Snac in OpenBSD
A simple, minimalistic microblogging ActivityPub instance that allows you to post in such of lightweight interface.
Features
- Lightweight, minimal dependencies
- Multiuser
- Simple web interface
- No database, javascript, or even cookies needed.
- Supports
unveil()
in OpenBSD - Backend is completely written in C
- Support FastCGI, Allowing setup with only OpenHTTPd
Configuring httpd.conf
Edit /etc/httpd.conf
:
# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $ server "snac.example.com" { listen on * port 80 location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } location * { fastcgi socket tcp "127.0.0.1" 8001 } gzip-static connection { max request body 104857600 } }
Replace snac.example.com
with your hostname.
Save the file, Then enable and start httpd (as root):
# rcctl enable httpd # rcctl start httpd
Get SSL Certificate with acme-client. Once successfully obtained SSL certs, Edit /etc/httpd.conf
and add the following lines after listen on * port 80
:
server "snac.example.com" { listen on * port 80 listen on * tls port 443 # for TLS tls { certificate "/etc/ssl/snac.example.com.crt" key "/etc/ssl/private/snac.example.com.key" } location * { fastcgi socket tcp "127.0.0.1" 8001 } connection { max request body 104857600 } }
Replace snac.example.com
with your hostname, and finally reload httpd by rcctl reload httpd
and https should works.
Installation
Install required packages:
# pkg_add curl git nano
Clone the repository, then start installing.
$ git clone https://codeberg.org/grunfink/snac2 $ cd snac2 $ make $ doas make install
Let's copy the examples/snac_openbsd
to /etc/rc.d/
, then start editing
# cp examples/snac_openbsd /etc/rc.d/snac # chmod +x /etc/rc.d/snac # nano /etc/rc.d/snac
Then you will see the code as the following:
#!/bin/ksh daemon_args="httpd /PATH/TO/SNAC/BASEDIR" daemon_logger="daemon.info" daemon_user="SNACUSER" daemon="/usr/local/bin/snac ${daemon_args}" . /etc/rc.d/rc.subr pexp="${daemon}.*" rc_reload=NO rc_bg=YES rc_cmd $1 # this is an OpenBSD /etc/rc.d startup script. Edit and run as root: # # install snac_openbsd /etc/rc.d/snac # rcctl enable snac # rcctl start snac
Change /PATH/TO/SNAC/BASEDIR
to /var/snac/data
, and SNACUSER
as snac
Save it by doing CTRL + S, Then close nano
editor with CTRL + X.
Now, We will set up the user & the datadir.
# useradd -m -d /var/snac snac # doas -u snac snac init /var/snac/data Network address [127.0.0.1]: Network port [8001]: Host name: snac.example.com URL prefix: Admin email address (optional): Done.
Replace snac.example.com
with your domain.
Edit /var/snac/data/server.json
(as root
/ snac
user):
{ "prefix": "", "address": "127.0.0.1", "port": 8001, "dbglevel": 0, "queue_retry_minutes": 2, "queue_retry_max": 10, "cssurls": [ "" ], "max_timeline_entries": 128, "timeline_purge_days": 120, "local_purge_days": 0, "admin_account": "", "title": "", "short_description": "", "fastcgi": false, "layout": 2.7, "host": "snac.example.com", "admin_email": "" }
Change "fastcgi": false
to "fastcgi": true
Save the server.json file,
Now, create an user.
$ doas -u snac snac adduser /var/snac/data yourname Creating RSA key... Done. User password is abcdefg1234567 Go to https://snac.example.com/yourname and continue configuring your user there.
Start the snac
daemon, and visit your snac website.
# rcctl enable snac # rcctl start snac