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'm on the socials!! GoToSocial is my private portal to the Fediverse!

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.