romanzolotarev.com is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.
This server runs the snac software and there is no automatic sign-up process.
It has been suggested it is time to detail a bit about the configuration of this beast. Let's start with the basics: This is a straight-up #NetBSD 11rc2 installation on a stock #Nintendo #Wii. Many people have detailed how to install it, but one useful source of information is Alex Haydock's blog[2], and of course the NetBSD release documentation. The kernel config[3] is modified slightly from the default WII in an attempt to save a bit of memory.
Building #snac2 was straight forward; no difference from building on i486 or i686. Simply make and make install, with the -f Makefile.NetBSD (the NetBSD-specific makefile is included with the snac sources).
Since snac won't do TLS for inbound connections, a TLS proxy is needed. My go-to nginx isn't in the 11rc2 PPC package repository at the time of writing, so I built it from pkgsrc myself. This only took a couple of hours.. But alas, it's a bit too memory hungry for my taste, even with a minimal configuration.
Next up, I found ttp[4]. It is a very small and simple proxy server, which works fine but cannot serve static files, nor does it support TLS 1.3. It is also incapable of dropping privileges, and since I want to run it as nobody I had to find a different way to pass port 443 traffic to it.
Luckily, NetBSD has npf, a built-in firewall that can do NAT and which is fairly easy to configure (at least with the usual good documentation and examples included). Picking up port 443 and NATing it to a high port for ttp to handle worked fine - and allows me to easily move traffic from one TLS proxy to another while I experiment.
TTP wasn't without problems - but they turned out to not be entirely its fault. I kept getting connection failures and snac kept exiting for no obvious reason.
After some fiddling around, the snac author suggested[5] that I was running out of file handles, which is indeed the case. Adding ulimit -n 1024 to /etc/rc.d/snac solved that issue as well.
Then my thoughts landed on an old acquaintance of mine - pound[6]. This is a reverse proxy with good TLS support, and recent versions can even serve static files in a fairly simple way. After a couple of bug reports, lots of help by the current maintainer, and some more fiddling, I got the most recent versions to build. Once the next release drops (4.21), I'll have a go at doing my first pkgsrc port update :)
The pound configuration[7] now seems to be fairly complete, even keeping out most random scanning attacks (yes, they have already started).
[1] https://wii.cafe/ltning/p/1773014130.033156
[2] https://blog.infected.systems/posts/2025-04-21-this-blog-is-hosted-on-a-nintendo-wii/
[3] https://anduin.net/~ltning/WII_TINY
[4] https://github.com/Theldus/ttp
[5] https://codeberg.org/grunfink/snac2/issues/576
[6] https://www.gnu.org.ua/software/pound/manual/index.html
[7] https://anduin.net/~ltning/pound/wiicafe_pound.tgz
from the first to last, excluding timeouts (they get requeued for later)
Mar 13 13:15:53 s2 snac[69343]: 13:15:00 output message: sent to inbox ... (202 Accepted)
...
Mar 13 13:15:53 s2 snac[69343]: 13:15:53 output message: sent to inbox ... (202 Accepted)
rcctl restart snac in crontab for now)OpenBSD wasn't able to run snac stable on this machine, it crashed after a few requests with "illegal instruction".
#snac #snac2 #fediverse #activitypub #NetBSD #OpenBSD #retrocomputing #retroserver #retrohardware #pentiumii #pentium2 #oldhardware
number of files generated by snac is huge, but i don't care that much anymore.
$ du -hd0 /var/snaci like snac a lot: i run my own server and client, i can modify css (and i do tweak it often, i can modify the source code---didn't get to that yet ;)
133M /var/snac
$ find /var/snac | wc -l
35603
sometimes i use snac command line, but mostly snac web ui and nothing else.
someday maybe i'll try to build some minimalist #activitypub server, but looks like a lot of work :)
see also
activitypub-single-php-file by @Edent@mastodon.social
html { font: 20px sans-serif; max-width: 40rem; padding: 0.4rem; }
img { max-width: 100%; border-radius: 0.4rem; }
for #snac2 i still have like a hundred lines of css, but i think i can ditch at least a half of iti understand you need to generate a new keypair and then sign your new public key with old one and propagate to the network... how do you practically do that?
heavy traffic caused by people updating their #snac2 instances :)
@grunfink@comam.es, thanks again for snac ❤️
updated /var/snac/data/server.json
"cssurls": [ "/style.css", "/snac.css" ],while keeping
/var/snac/data/styles.css empty, otherwise snac re-creates it with default styles... :)+260% file count
+16% space
$ du -hd0 /var/snac/data && find /var/snac | wc -lstill okayish for a #selfhosting project
71.5M /var/snac/data
26230
i use shell scripts to configure and deploy a few #openbsd servers:
@hi ah, I question I just cannot resist!
I have my own instances of #Gotosocial, #snac2, and... #honk, all for my own use.
All running as jails on a FreeBSD box with an 8 core Ryzen 7 and 32GB memory, but those 3 jails, plus a couple of others only really utilise about 4-5GB.
https://romanzolotarev.com/pub/hi
becomes
https://romanzolotarev.com/pub/hi.rss
how cool is that? 😎
$ du -hd0 /var/snac && find /var/snac | wc -lmeanwhile #rss feed is just 9999 bytes
61.8M /var/snac
9532
$
$ curl -s https://romanzolotarev.com/pub/hi.rss | wc -cthanks #snac2 for great defaults and working perfectly out of the box ❤️
9999
The time is probably right.
Back in 2022, when I was still using iOS, I wasn’t completely happy with the Fediverse apps that were available. I was mostly using Akkoma, and the interface I liked the most was actually its web UI, even on mobile. So I started playing with Xcode and put together the foundations of an app tailored to my needs.
A lot has changed since then and today we have great alternatives like IceCubes, Mona, Ivory, etc. Each one has strengths and weaknesses though, so I picked up my old project again and kept pushing it forward.
So I’m happy to announce that my app will finally see the light: I’ve been using it for the past few days and, in my spare time, I’m fixing bugs and adding missing features. I’m building it around my own needs, so it doesn’t have to “appeal to everyone”. I wouldn’t call it opinionated, but it’s definitely targeted.
The app will have one key trait: #snac2 support will be a first-class feature, not an incidental one. Many apps, especially on iOS, support snac as a side effect, but the experience is often not optimal. In this case, the choice is deliberate and it strictly follows the Mastodon API support implemented by snac. So snac will work properly (within the limits of the platform, of course).
Among the features already implemented: the app is minimal and lightweight (under 10 MB, including debug code), easy on RAM, and privacy-first (for example it strips EXIF data from media before posting, so the server will never see it). On snac it also cleans up the "Boosted by Aoderelay" messages that appear when using a relay, removes the character limit, and supports posting in Markdown.
I also added support for Apple Intelligence to generate alt text, both for the media I post and for media posted by others that is missing alt text.
Everything is processed locally through Apple APIs and only on supported devices. The results aren't amazing, Apple Intelligence is extremely limited, but in my opinion it's the only privacy-friendly and ethical way to approach it. And of course, you can disable it.
On Mastodon it supports all the main features: lists, quote posts, granular notifications (you can choose what you want for each category), notification grouping, multi-account support, and it works.
It's still missing a few things (block, etc.) and has some bugs, which I’m spotting as I keep using it.
As soon as it's stable enough, I'll invite a few people to test it. I still haven't fully decided how I'll distribute it: an Apple Developer account has a yearly cost, and I hope to reuse it for other projects too. So this app might be paid, with a trial period, but if possible (I still need to check what’s feasible) I'd like it to be free if you connect to one of the BSD Cafe instances, illumos Cafe, or any snac instance, including your own.
I don't know how long it will take before it's ready... but I can already tell you what it will be called.
It already has a name, and it's... MastoBlaster.
This name was chosen for personal reasons, and also because of its similarity to Master Blaster by Stevie Wonder, which even today feels relevant and fitting for the Fediverse.
Stay tuned!
#MastoBlaster #Fediverse #Mastodon #iOS #FediverseApp #Announcement #Apple #snac #snac2 #BSDCafe #illumosCafe
# rcctl stop snacthen restore:
# cd /var/snac
# tar -cpf /tmp/snac data
# rcctl start snac
# rcctl stop snacor is there a way to backup/restore while it's running?
# cd /var/snac
# tar -xpf /tmp/snac.tgz
# rcctl start snac
any plans to use sqlite or some other database?
also thank you for creating #snac2. i love it!