Posts from November 2022

GoToSocial 0.6.0(rc1) upgrade

Flushed after the success of getting GoToSocial 0.5.2 working successfully, I was about to celebrate with a cup of tea when this post appeared in my timeline about the release of 0.6.0 (Release Candidate 1).

Good morning everyone! We just cut the first release candidate for v0.6.0 of GoToSocial: v0.6.0-rc1.

There's a preposterous amount of changes included in this one (we'll do a proper organized list when we do the release proper).

If you feel adventurous and up for helping us out with finding any bugs/regressions in the release, please have a go on the release candidate and let us know if you find any weirdness :)

Funnily enough, the upgrade process was one I had considered and was keen to understand so obviously, I just leapt in and attempted the upgrade.

# systemctl stop nginx
# systemctl stop gotosocial
# mv /opt/gotosocial /opt/gotosocial-0.5.2
# mkdir /opt/gotsocial
# cd /opt/gotosocial
# wget https://github.com/superseriousbusiness/gotosocial/releases/download/v0.6.0-rc1/gotosocial_0.6.0-rc1_linux_arm64.tar.gz
# tar xvf gotosocial_0.6.0-rc1_linux_arm64.tar.gz
# cp ../gotosocial-0.5.2/sqlite.db .
# cp ../gotosocial-0.5.2/config.yaml .
# mkdir storage
# cp -rv ../gotosocial-0.5.2/storage /opt/gotosocial
# chown -R gotosocial:gotosocial /opt/gotosocial
# systemctl start gotosocial
# systemctl status -l gotosocial
# systemctl start nginx

Then I examined the GoToSocial log file to see if the database migrations had been executed OK.

timestamp="29/11/2022 11:38:43.364" func=bundb.sqliteConn level=INFO msg="connected to SQLITE database"
timestamp="29/11/2022 11:40:01.473" func=bundb.doMigration level=INFO msg="MIGRATED DATABASE TO group #2 (20221006114842_add_rss_functionality, 20221011125732_refetch_updated_emojis, 20221031145649_emoji_c\
ategories, 20221108142419_create_account_tombstones)"
timestamp="29/11/2022 11:40:01.479" func=bundb.(*adminDB).CreateInstanceAccount level=INFO msg="instance account footy.social already exists"
timestamp="29/11/2022 11:40:01.479" func=bundb.(*adminDB).CreateInstanceInstance level=INFO msg="instance entry already exists"
timestamp="29/11/2022 11:40:01.479" func=concurrency.NewWorkerPool level=INFO msg="worker.Worker[messages.FromClientAPI] created with workers=4 queue=400"
timestamp="29/11/2022 11:40:01.479" func=concurrency.NewWorkerPool level=INFO msg="worker.Worker[messages.FromFederator] created with workers=4 queue=400"
timestamp="29/11/2022 11:40:01.487" func=concurrency.NewWorkerPool level=INFO msg="worker.Worker[*media.ProcessingMedia] created with workers=4 queue=40"
timestamp="29/11/2022 11:40:01.487" func=concurrency.NewWorkerPool level=INFO msg="worker.Worker[*media.ProcessingEmoji] created with workers=4 queue=40"

Login to the GTS Admin interface to check the version and, much to my surprise, success. The GTS version in the footer is 'GoToSocial 0.6.0-rc1 git-97f5453'.

GTS-0-6-0-RC1.png

self-hosting a GoToSocial instance

I like experimenting with software and technology.

Many years ago, I built a Laconica instance. Not because I needed a Laconica instance but because I was curious and any knowledge gleaned would be useful. Standard LAMP stack. Same as the WordPress blogging software which I had already built.

Plus Laconica releases were named after R.E.M songs by Evan.

Similarly, I got an account on mastodon.sdf.org in preference to Twitter because I favour OpenSource software and the underdog.

When I discovered there were self-hosted alternatives to Mastodon, I simply couldn't resist and acquired a domain name, commodity hosting with Digital Ocean and built a single-user Pleroma instance.

This was an interesting exercise as Pleroma is supposedly less resource heavy than Mastodon and is implemented in Elixir (a programming language unfamiliar to me).

I followed the documentation, installed and configured Pleroma. Then I occasionally monitored the system load and the Postgres database size. Pleroma was rock solid for 18 months. Much to my surprise, I even managed to upgrade the software with no issues.

However, when I discovered that Pleroma was unable to follow my old friend David Marsden's micro.blog using the standard ActivityPub protocol, serious action needed to be taken.

I work for Oracle who offer an AlwaysFree tier which includes an ARM instance (1 CPU, 6GB) running Ubuntu 22.1. I was curious to explore this avenue as, again, knowledge is useful.

Originally, I had lofty ambitions to host a Federated instance aimed at a community of folk interested in football so we could have endless, tedious discussions and banter without pestering everyone else.

The various stories about the moderation commitment and performance and scalability issues for large (or even medium sized) sites slightly made me pause for thought. If you make a commitment, you should honour it.

I use Hugo for this blog which is written in Go and a single executable so GoToSocial piqued my interest as this is a similar architecture. Single Go executable with decent documentation, helpful community and fairly straightforward configuration.

After a few glitches with the Nginx integration and failing to read the documentation carefully enough, I had a GoToSocial instance up and running !

GoToSocial doesn't include a front-end GUI but I soon got used to the Pinafore (clean, single column) interface.

It was a pity that GoToSocial doesn't currently support import of 'Friends'. However, as I was only following 100 people, it was an opportunity to manually review and trim that list.

Please remember that GoToSocial is 'Alpha' software and the current limitations are well documented but the pace of development is rapid.

It's early days but I'm enjoying my first experience of GoToSocial and I like the fact that GoToSocial supports both Postgres and sqlite for the database.