I toyed with a version of GoToSocial a few weeks ago, but as a much more stable version 0.6.0 was released a few days ago, I decided to install GoToSocial and attempt to use it productively for posting DNS tidbits as https://txt.udp53.org/@rr. Who knows: I might integrate it with dnssexy.net.

Why GoToSocial and not Mastodon? The latter scares me: it has too many moving parts for my taste, and the former is one of these lovely single Go binaries – sufficient reason to chose it in spite of the project’s warning:

GoToSocial is still ALPHA SOFTWARE. It is already deployable and useable, and it federates cleanly with many other Fediverse servers (not yet all). However, many things are not yet implemented, and there are plenty of bugs!

System requirements and installation are described well. This time around I selected to use a PostgreSQL back-end instead of SQLite3 thinking the combination might have more testing.

I am also not yet fronting the installation with a reverse proxy: as can be seen by my configuration, GTS listens on port 443 (thanks to CAP_NET_BIND_SERVICE) and has automatically obtained a certificate via Let’s Encrypt – so far so good.

GTS post as seen on Mastodon

GTS doesn’t provide its own Web client, but it does implement the Mastodon client API, so I use the Web client called Pinafore which is simple but sufficient. On mobile, Toot! works well with GTS, and I got the Python toot client logged in so I can toot from the command-line.

$ toot post "Do any of you run DNSviz locally, for monitoring, say? ..."

GoToSocial implements a rudimentary settings page for the user (at /settings/user/profile) where I can upload an avatar, set a name and a bio, and toggle follow requests approval and whether or not I want to enable an RSS feed of public posts (https://txt.udp53.org/@rr/feed.rss).

All the bits and pieces I think I want for this “application” are there.

After 24 hours and a dozen followers I see this resource consumption:

$ free
               total        used        free      shared  buff/cache   available
Mem:         2030444      394272      239944       23616     1396228     1447012
Swap:        1048572         780     1047792

$ du -sh storage/
154M    storage/

The latter is a directory which contains full-sized and small avatars of people who have seen posts by this instance:

gts=# SELECT COUNT(*) FROM accounts;

Color me surprised; I still have a lot to learn about federation.

The server / admin utility can also export data from my GTS instance into a file for backup / storage, but it does not export statuses, media, bookmarks, and tokens (documentation).

$ ./gotosocial --config-path config.yaml admin export --path p
$ jq -r .type < p | sort -u


This is a list of things I found “missing” in GoToSocial, but I could imagine they’re still on the “toto” list:

  • Bookmarks. Upon setting a bookmark the client received a 404:
    Dec 13 23:32:25 txt.udp53.org gotosocial[4650]: timestamp="13/12/2022 23:32:25.045" func=router.loggingMiddleware.func1 level=INFO latency=3.435733ms clientIP=xxxx userAgent="Toot!/139 CFNetwork/1335.0.3 Darwin/21.6.0" method=POST statusCode=404 path=/api/v1/statuses/01GM3RE3WGSW0RYSF21GF2TF9F/bookmark msg="Not Found: wrote 883B"
fediverse :: 10 Dec 2022 :: e-mail