GoToSocial v0.20

I want to run a fediverse server on my FreeBSD host. I don’t want to bother setting up Jails and I don’t really need to run ruby or nodejs on my server when ActivityPub is a standardized protocol. I decided to look around and found GoToSocial. It runs as a single Go binary and, if you don’t want to install postgresql, can even host a low number of users on sqlite.

What’s not to love?

Well, there are a very few things not to love. The most recent issue was that my sqlite-backed instance decided to stop updating / receiving updates from peer instances. I can’t quite pin down why that was an issue except that, for some reason, the instance started declaring that my proxy no longer passed on the real IP address of my client to the instance.

As a bit of background, I had to change over my network hardware due to frequent restarts and failures with the Eero Pro kit. Now, I have a Dream Router 7, an 8-port 2.5Gbps switch, and new access points in the house. Because my switch is only a Layer-2 switch, I wouldn’t expect it to be able to short-circuit the routing table and forward my request directly to the server… but the DR7 could. That is easily remedied by adding an exception for my local IPv4 network range, but I still find it weird that I had to do it in the first place.

Still, that did not fix my no-update problem, so I elected to migrate from Sqlite to PostreSQL as the backing database. At the very least, I could poke around in the DB without risking a strange multi-writer issue or some other problem. Setting it up was easy – migrating my older data is what caused problems. The export/import function explicitly doesn’t support moving over favorites, saved posts, and a half dozen other objects. Suffice to say, until GoToSocial actively supports export/import of those particular functions, I will recommend everyone just install and use postgres as the backing DB. It’s not worth losing data to try sqlite.


Since I know Go, I should be able to write my own fixes and propose them in the main repo, so this is my way of complaining publicly while I look at what I can do fix it privately. I won’t be a hypocrite – OpenSource means “you got fingers, you go fix it.”