There's been a recent trend of people turning from Twitter to the Fediverse, mostly mastodon, but since it's an open ecosystem centered around the ActivityPub protocol, there are other options, like plemora.
Mastodon is a Rails app with lots of dependencies, Plemora is an Elixir app that's not much better.
GoToSocial is a project that covers just the server side of ActivityPub, exposing client side communications via a Mastodon compatible API. Deployment is easy-ish, a single binary + web assets.
fly.io takes your container image and runs it as a firecracker-based vm. It's an interesting halfway point in between VMs and containers in terms of deployment. What's more attractive though is their 3x 256MB shared cpu vm free tier.
To run GoToSocial, we're taking their prebuilt docker image, and deploying it.
Create the fly.io app and volume
1$ fly apps create estherian
2$ fly volumes create gotosocial_data -s 1 -r lhr
Flip GTS_LETSENCRYPT_ENABLED
to false
in the below config,
then run fly deploy
.
Get the IP address, set the DNS A
/AAAA
records,
flip the GTS_LETSENCRYPT_ENABLED
back to true
and redeploy.
1app = "estherian"
2
3[build]
4 image = "superseriousbusiness/gotosocial:latest"
5
6[env]
7 GTS_PORT = "8443"
8 GTS_HOST = "estherian.liao.dev"
9 GTS_ACCOUNT_DOMAIN = "liao.dev"
10 GTS_DB_TYPE = "sqlite"
11 GTS_DB_ADDRESS = "/gotosocial/storage/db.sqlite"
12 GTS_ACCOUNTS_REGISTRATION_OPEN = "false"
13 GTS_LETSENCRYPT_ENABLED = "true"
14 GTS_LETSENCRYPT_PORT = "8080"
15 GTS_LETSENCRYPT_EMAIL = "estherian@liao.dev"
16
17[mounts]
18 source = "gotosocial_data"
19 destination = "/gotosocial/storage"
20
21[[services]]
22 internal_port = 8080
23 protocol = "tcp"
24 [[services.ports]]
25 port = 80
26[[services]]
27 internal_port = 8443
28 protocol = "tcp"
29 [[services.ports]]
30 port = 443
Once it's running, create your user following the standard documentation.
1$ fly ssh console
2# gotosocial admin account create --username some_username --email someone@example.org --password 'some_very_good_password'
3# gotosocial admin account confirm --username some_username
4# gotosocial admin account promote --username some_username
And done. Find a frontend, use the actual hosting domain to login.