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
snac
I can confirm that migrating from #Akkoma to #snac worked flawlessly.
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
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
Publishing a photo of approximately 4MB from my snac instance (at home with 20 Mbit/sec uplink) meant overwhelming everything.
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
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
Sysadmin extraordinaire Stefano Marinelli (@stefano) has written this great, concise article on how to tune #nginx to improve #snac performance while serving media like images or videos.
https://it-notes.dragas.net/2025/01/29/improving-snac-performance-with-nginx-proxy-cache/
https://it-notes.dragas.net/2025/01/29/improving-snac-performance-with-nginx-proxy-cache/
Edited 1y ago
I'm glad to announce the release of version 2.70 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
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.
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.
I like the new context link in the latest git version of #snac. It allows you to see what context the reply or like was referring too by showing the whole thread on your snac page instead of taking you to the other persons server feed.
Thank you @grunfink ❤️
https://codeberg.org/grunfink/snac2
Thank you @grunfink ❤️
https://codeberg.org/grunfink/snac2
I'm glad to announce the release of version 2.72 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
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.
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.
[rant]
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
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
Edited 1y ago
selamat pagi,
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.
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.
#snac / activitypub noob #question:
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
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
Updated Version of the apache http caching setup for snac, including proxy media
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:
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

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

Edited 361d ago
Minha primeira contribuição para o projeto SNAC, o sistema que equipa esta "instância" da federação da Web Social implementando o protocolo ActivityPub, está disponível há alguns dias: sua tradução para o idioma de Machado de Assis, no arquivo pt_BR.po que pode ser copiado do repositório para o subdiretório lang dentro do diretório de dados do SNAC. Após esse tipo de arquivo estar no local e o serviço reinicializado, o usuário pode escolher o idioma da inteface Web entre suas definições.
Acabo de solicitar a integração de mais uma versão do arquivo com novas sequências de caracteres traduzidas.
Estou escrevendo isto para incentivar você a também contribuir com o que puder para com os projetos de software livre que utiliza. O senso de comunidade nos permite fazer parte da construção de um mundo melhor a cada linha de código.
#snac2 #snac #SoftwareLivre #FreeAsInFreedom
Acabo de solicitar a integração de mais uma versão do arquivo com novas sequências de caracteres traduzidas.
Estou escrevendo isto para incentivar você a também contribuir com o que puder para com os projetos de software livre que utiliza. O senso de comunidade nos permite fazer parte da construção de um mundo melhor a cada linha de código.
#snac2 #snac #SoftwareLivre #FreeAsInFreedom
Edited 342d ago
Question about #snac: does snac send out Activitypub Deletes when one user's content is purged? So, is the content only deleted locally or also in the Fediverse?
Edited 238d ago
I've just updated my #Snac instance to version 2.79 👍 🎉
You don't know Snac? But you should: https://codeberg.org/grunfink/snac2
A simple, minimalistic and well documented #ActivityPub instance server written in C, no database needed, totally JavaScript-free, no cookies either, not much bullshit.
#snac2 #fediverse
You don't know Snac? But you should: https://codeberg.org/grunfink/snac2
A simple, minimalistic and well documented #ActivityPub instance server written in C, no database needed, totally JavaScript-free, no cookies either, not much bullshit.
#snac2 #fediverse
I have long planned to write a utility for synchronizing #Snac profiles with the #Nex blog, and I recently published its initial release:
https://codeberg.org/postscriptum/snac2nex
Additionally, I want to create a local copy of media data so that it can be accessed without going out into the HTTP space.
Edited 233d ago
If you’re looking to deploy #SNAC, the official repo contains example files for different scenarios, including a #DockerSwarm + #Traefik reverse proxy config I contributed that runs here.
If you’d like to test it without compiling and building your own image, the ready-made ones I keep for my own setup are always available at https://codeberg.org/daltux/-/packages/container/snac/versions

#selfHosting #fediAdmin #FreeSoftware
If you’d like to test it without compiling and building your own image, the ready-made ones I keep for my own setup are always available at https://codeberg.org/daltux/-/packages/container/snac/versions

#selfHosting #fediAdmin #FreeSoftware
Edited 24d ago
I'm glad to announce the release of version 2.74 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes a lot of web UI translations by lovely people and a bit of minor tweaks and fixes:
Added Spanish (default, Argentina and Uruguay) translation (contributed by gnemmi).
Added Czech translation (contributed by pmjv).
Added Brazilian Portuguese translation (contributed by daltux).
Added Finnish translation (contributed by inz).
Added French translation (contributed by Popolon).
Added Russian translation (contributed by sn4il).
Added Chinese translation (contributed by mistivia).
Added German translation (contributed by zen and Menel).
Added Greek translation (contributed by uhuru).
Added Italian translation (contributed by anzu).
Mastodon API: added support for /api/v1/custom_emojis (contributed by violette).
Improved Undo+Follow logic (contributed by rozenglass).
Reverted (temporarily) the Markdown code that converted text between underscores to italics, because it was causing more problems that what it was worth.
Fixed bug in bookmark CSV import.
Don't indent Twitter-like "threads" (i.e. chains of short posts from the same author that are self-replies).
https://comam.es/what-is-snac
If you find #snac useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/
#snacAnnounces
Added Spanish (default, Argentina and Uruguay) translation (contributed by gnemmi).
Added Czech translation (contributed by pmjv).
Added Brazilian Portuguese translation (contributed by daltux).
Added Finnish translation (contributed by inz).
Added French translation (contributed by Popolon).
Added Russian translation (contributed by sn4il).
Added Chinese translation (contributed by mistivia).
Added German translation (contributed by zen and Menel).
Added Greek translation (contributed by uhuru).
Added Italian translation (contributed by anzu).
Mastodon API: added support for /api/v1/custom_emojis (contributed by violette).
Improved Undo+Follow logic (contributed by rozenglass).
Reverted (temporarily) the Markdown code that converted text between underscores to italics, because it was causing more problems that what it was worth.
Fixed bug in bookmark CSV import.
Don't indent Twitter-like "threads" (i.e. chains of short posts from the same author that are self-replies).
https://comam.es/what-is-snac
If you find #snac useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/
#snacAnnounces
I've just published version 2.79 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:
Added a server-wide Webmention hook; this way, if somebody out there (that supports Webmention) links to a user or post in this instance, a notification is sent (this is the complementary of what was implemented in version 2.76).
Fixed regression while sending email via pipe on OpenBSD.
Fixed Markdown parsing when the URL has parenthesis.
Always show the 'pending follow confirmations' section if there are any (even if the toggle is off).
If a metadata value is an account handler, it's also tried to be validated (rel="me" links).
Another search by URL tweak (this time for Pixelfed links).
Mastodon API: fixed a bug that made some boosts disappear after being shown in apps like Tusky, added followed hashtags maintenance, other minor changes.
Renamed command-line actions create_list to list_create and delete_list to list_remove.
The default favicon URL can be changed from the server configuration.
New command-line option export_posts, to export all posts by a user in a JSON format compatible with the one generated by Mastodon.
The command-line options to send notes also allow an optional -r argument, to set the URL of a Fediverse post this note is a reply to.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces #FrugalFediverse
Added a server-wide Webmention hook; this way, if somebody out there (that supports Webmention) links to a user or post in this instance, a notification is sent (this is the complementary of what was implemented in version 2.76).
Fixed regression while sending email via pipe on OpenBSD.
Fixed Markdown parsing when the URL has parenthesis.
Always show the 'pending follow confirmations' section if there are any (even if the toggle is off).
If a metadata value is an account handler, it's also tried to be validated (rel="me" links).
Another search by URL tweak (this time for Pixelfed links).
Mastodon API: fixed a bug that made some boosts disappear after being shown in apps like Tusky, added followed hashtags maintenance, other minor changes.
Renamed command-line actions create_list to list_create and delete_list to list_remove.
The default favicon URL can be changed from the server configuration.
New command-line option export_posts, to export all posts by a user in a JSON format compatible with the one generated by Mastodon.
The command-line options to send notes also allow an optional -r argument, to set the URL of a Fediverse post this note is a reply to.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces #FrugalFediverse
I've just published version version 2.80 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It only includes one bugfix; if you use the Mastodon API, you may be interested in upgrading:
Mastodon API: fixed a regression (introduced in previous version in the "boosts disappear in Tusky" fix) that interrupted timelines.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces #FrugalFediverse
Mastodon API: fixed a regression (introduced in previous version in the "boosts disappear in Tusky" fix) that interrupted timelines.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces #FrugalFediverse
Update: All the #FediMeteo #snac instances have been upgraded to 2.89
#FediMeteoUpdates #FediMeteoAnnouncements
#FediMeteoUpdates #FediMeteoAnnouncements