I'm on the socials!! GoToSocial is my private portal to the Fediverse!
The fastest way to a self-hosted fediverse instance is GoToSocial. Follow me on https://social.kastanis.gr/@alexk7110
I've been looking into hosting my own Mastodon instance for the longest time now, and it always felt a bit of a challenge and a resource hungry hobby to follow. A few weeks ago Martin Wimpress of Linux Matters Podcast fame suggested that GoToSocial is a great answer to the need for a self controlled, one-man-show, lightweight, fediverse hub, so I spun up my own instance to try it out.
social.kastanis.gr is where I will be posting snippets of my small tech projects, cool AliExpress finds, docker apps that I never get around to reviewing on this very blog, along with old man yelling at cloud ramblings.
You can visit the informational instance of GoToSocial and deploy it with a single docker-compose file. It uses sane defaults so there's no need for extensive configuration. A few environment variables on the compose file, and you're done.
services:
gotosocial:
image: superseriousbusiness/gotosocial:latest
container_name: gotosocial
user: 1000:1000
networks:
- nginx
environment:
# Change this to your actual host value.
GTS_HOST: social.kastanis.gr
GTS_DB_TYPE: sqlite
# Path in the GtS Docker container where
# the sqlite.db file will be stored.
GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
# Change this to true if you're not running
# GoToSocial behind a reverse proxy.
GTS_LETSENCRYPT_ENABLED: "false"
# Set your email address here if you
# want to receive letsencrypt notices.
GTS_LETSENCRYPT_EMAIL_ADDRESS: ""
# Path in the GtS Docker container where the
# Wazero compilation cache will be stored.
GTS_WAZERO_COMPILATION_CACHE: /gotosocial/.cache
## For reverse proxy setups:
# GTS_TRUSTED_PROXIES: "172.x.x.x"
## Set the timezone of your server:
TZ: Europe/Athens
GTS_CONFIG_PATH: /gotosocial/config.yml
# ports:
# - "443:8080"
## For letsencrypt:
#- "80:80"
## For reverse proxy setups:
#- "127.0.0.1:8080:8080"
volumes:
# Your data volume, for your
# sqlite.db file and media files.
- /docker/gotosocial/data:/gotosocial/storage
# OPTIONAL: To mount volume for the WAZERO
# compilation cache, for speedier restart
# times, uncomment the below line:
- /docker/gotosocial/.cache:/gotosocial/.cache
- /docker/gotosocial/config.yml:/gotosocial/config.yml:ro
restart: "unless-stopped"
networks:
nginx:
external: true
I use the above compose file that you can use as reference but keep in mind that I pass the traffic through a reverse proxy defined in networks so that's why port mapping is disabled. I use a very short external config.yml file that I map in volumes and will expand upon in the future in order to fine-tune the instance features.
Do also keep in mind that you need a Mastodon compatible client in order to interact with your instance. I chose Tusky for that. You will need to make your user admin in order to access some gui settings available server side. Everything is laid out in the documentation.