Some technical details for those interested:
The entire FediMeteo setup runs on a FreeBSD VM costing around 4 euros per month. It supports almost all major EU countries (plus the UK), with just a few left to complete. Currently, there are 25 separate jails, each running its own instance of snac, totaling 25 instances. The VM load typically stays around 10%, which increases to 30% when updates are published for countries with larger numbers of cities (currently Germany and Italy). The only time the load spikes is when new countries are announced; during that time, all remote instances connect to all cities to download their details.
As for RAM usage, excluding the ZFS cache, it's currently a total of 213 MB. Yes, MB.
snac
Snac2 is an excellent software solution for accessing the Fediverse. It is lightweight, very easy to compile and install, has minimal dependencies, and the development is progressing along a clear, clean, and logical path - thank you, @grunfink
Since last December, BSD Cafe has had, among its services, a snac instance - https://snac.bsd.cafe - which has been used sparingly, mainly by some for testing purposes. I’ve kept it as a 'testing' option.
In light of the interest it is generating (we now have stable users) and given that development is evolving to allow for both inbound and outbound movement, I have decided to designate it as a stable solution for accessing the Fediverse and to consider it a primary service of the BSD Cafe.
It has always received the utmost attention, I have consistently updated it promptly, and it has always been accessible, but I have also modified all the descriptions to clarify that it is a stable and definitive solution.
For more information, there is always a dedicated page on our wiki: https://wiki.bsd.cafe/snac.bsd.cafe
Stay Tuned!
#BSDCafe #BSDCafeServices #BSDCafeAnnouncements #snac #snac2 #Fediverse #Mastodon
Fixed memory leak (contributed by inz).
Fixed crash.
https://comam.es/what-is-snac
If you find #snac useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/
#snacAnnounces
https://weirdr.net/snac/ltning/p/1736896934.000000
It gives a daily report of those asteroids with a reasonable probability of crashing into Earth, in case you are not already afraid enough of the future. Of course, using #snac, what else.
It takes its data from a very cool NASA site, so (again) in these days of uncertanty, I'm not sure how long will it work.
Everyone, take care, and have a great week.
Migration from a Mastodon account to a snac one has been implemented. Please see snac(8) (the administrator manual) for more information.
Mastodon API: fixed timelines/public (it was showing less posts that it should).
Fixed over-zealous caching to the public timeline.
Some HTML tweaks and fixes to the web interface.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink
#snacAnnounces
This release has been inspired by the painting The Hands Resist Him by #BillStoneham.
snac2 - frontendin' alien toots
(Using snac2 and links2 to display mastodon toots from foreign instances.)
https://automa.triapul.cz/snac2-vol1/
Super special thanks to @grunfink , the author of snac, for returning sanity into web software.
Possibly dumb #snac #snac2 question, but what is the best way to install the latest version without affecting the existing users and posts, etc.? I thought I needed to use the command line option "snac upgrade" but looking at the manuals again, I don't think that's actually what that option is for? Is there a write up for just updating to the latest version out there anywhere?
#FediMeteo #FediMeteoStatus #FediMeteoAnnouncements #snac #snac2
#CrazyFediverseAnalogies
Just published a guide on setting up Snac on an Ubuntu VM using NGINX Proxy Manager. Snac is an incredibly lightweight #ActivityPub server. A true nom nom among fediverse platforms.
If you're curious about minimal fediverse instances, check it out:
anyone have a #snac instance and want to give me an account on for some good old fashion fediverse compatibility testing? excited to see how it now handles gancio and mobilizon events
https://comam.es/snac/grunfink/p/1737710445.095224
I tried it last evening and it was failing but I think it was just a caching issue.
And now, let's start!
#Fediverse #snac #snac2 #NewWeekNewInstance
This happened because, for every remote instance, Nginx was requesting the multimedia file from snac. However, due to saturated connections, it took several seconds, leading to thread exhaustion in snac.
I resolved this issue by caching the multimedia files myself using Nginx, which significantly improved performance.
This matter will be covered in a subsequent (simple) blog post.
#snac #snac2 #OwnYourData #SelfHosting
https://it-notes.dragas.net/2025/01/29/improving-snac-performance-with-nginx-proxy-cache/
Notifications are now shown in a more compact way (i.e. all reactions are shown just above your post, instead of repeating the post ad nauseam for every reaction).
New command-line option unmute to, well, no-longer-mute an actor.
The private timeline now includes an approximate mark between new posts and "already seen" ones.
Fixed a spurious 404 error in the instance root URL for some configurations.
https://comam.es/what-is-snac
If you find #snac useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/
#snacAnnounces
This release has been inspired by the song The Answers to the Questions by #Christabell and #DavidLynch.
Thank you @grunfink ❤️
https://codeberg.org/grunfink/snac2
Each post can have more than one attachment from the web UI. The maximum number can be configured in server.json via the max_attachments value (default: 4).
Each notification includes a link labelled Context, that leads to a page with the full conversation tree the post is a part of.
Each followed hashtag has now a directly accesible link.
Fixed a search bug (some matches were missed).
Fixed more crashes (contributed by inz).
Fixed link detection in posts (contributed by inz).
Allow multiple editors for command-line posts (contributed by inz).
Separated maximum and default timeline entry count, allowing larger timelines to be requested without having to increase the default (contributed by lxo).
Turned message date into a link to the local post, so that it can be loaded into a separate tab for interacting with (contributed by lxo).
Special thanks to fellow developer inz for bringing my attention to code places where I should have been more careful.
https://comam.es/what-is-snac
If you find #snac useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/
#snacAnnounces
This release has been inspired by the song Songe d'un ange by #KyrieKristmanson and #BrendanPerry.
Looking for nice software to selfhost on very moderate hardware these days is like:
"add this to your kubernetes cluster // terraform something....// This is your docker compose file..."
I just want an efficient program, bare metal, also not three reverse proxys in a row.
And also I'm not running some supercluster in the "cloud".
Seems everyone virtualizes everything and abstracts everything, containers in containers in VMs. Even "normal" mastodon hosters, I mean I understand if people use it for running something like running Instagram, OK.
And then many still have quite often some downtime because (I guess?) in all this complexity, that exists to add reliability, there are config errors or incompatibilities.
[/rant]
I Love I've found snac and the prosody xmpp server, they run on a potato, snac only since this year, prosody since 10y, started on a raspberrypi1b. And they have no downtime. I want more like that. I don't know the right Hashtags. Is this #permacomputing? I guess that's even much more basic and closer to the hardware?
#keepitsimple
#snac #prosody #xmpp #tinyweb #tinyfedi #rant #shitpost
ingin cerita soal relay. Di #snac ane pasang dan subscribe ke beberapa relay. Kemudian langganan toot's melalui hashtags. Dengan ini instance ane yang sepi (karena tidak follow banyak akun) menjadi ramai dengan tema/topik yang ane subscribe tadi.
salah satu hal yang ane suka dari fediverse setelah sekian lama.
job fifo size (cur): 655
job fifo size (peak): 1291
thread #0 state: waiting
thread #1 state: output
thread #2 state: output
thread #3 state: output
I assume it is my instance delivering this to all subscribers, is that correct?
And the last thread will stay idle to maybe wait for incoming requests, so that they can be answered too?
I've never seen another status then waiting or output so far.
I guess if I post a picture that might then happen and all workers will be busy? Maybe even too busy to keep up?
Is that assumption about how the waiting worker and what it is for correct?
If yes I guess I'll increase the threads, if they are intentional low for low ram systems, that's not my issue with snac. (I've not much ram, but I assume snac is by default tuned to be very very very conservative?)
(adding Pic to simultaneously test my theory)
#snac2
I already wrote about caching here.
Now I extended what I cache a bit.
This was because after enabling the option to proxy media, I've seen access to the file paths /x/ and /y/ in addition to the path were snac stores the media that I include in my own posts ( /s/ ).
There are two locations to proxy media, depending if you requests the media via the mastodon api or via the web. (/x/ and /y/), oh and I added the nodeinfo2.0 path too, because I've noticed it was queried all the time by a lot of instances and it gives me pleasure to see something cached handed out in the access logs. 🙂 (I guess it is actually irrelevant for the system resources)
This is the updated setup:
Enable the relevant modules:
a2enmod expires cache cache_disk
Be sure "htcacheclean" is running to clean up the old disk cache. (under debian see /etc/default/apache-htcacheclean or else the relevant systemd service or whatever)
Then add this to the httpd Virtualhost config:
<LocationMatch "^/social/[^/]+/[xys]/|^/social/nodeinfo_2_0">
CacheEnable disk
Header set Cache-Control "max-age=86400, public" "expr=%{REQUEST_STATUS} == 200"
ExpiresActive On
ExpiresDefault "access plus 86400 seconds"
</LocationMatch>
Further reading and all options are explained under https://httpd.apache.org/docs/2.4/caching.html (and ff)
The Header that I set here, on the condition of Status code 200, is needed for the path /y/, because snac set no-cache on that location and mod_expires will honor that if we don't override it. I set it to the same Cache-Control value as mod_expires would. (I use mod_expires because it will additionally calculate the date and put that in the expires header. (hence the name I guess 😀 )
#Fediverse #Hosting #ITNotes #apache2 #httpd #Ownyourdata #Server #Snac #Snac2 #Tipsandtricks #Tutorial #Debian #caching
