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
