This service is still in Alpha release but is already deployable and usable, and federates with other Fediverse servers.

However, there is no “main” instance you go to join. The intention really is that you host your own instance for yourself and a few friends and family. To this end, it is designed to be very lightweight and will happily run on a Raspberry Pi or even a $5/pm VPS.

This is taking a very different approach from say Mastodon which has one main instance everyone could join, but then it sits with the issue that everyone joins there, and it becomes a bit “centralised”. GoToSocial has been designed as lightweight for self-hosting, and also has a Docker image installation, so it makes it really easy for (and encourages) most people to host their own instance.

It seems to also be focussed very much around privacy (defaults to unlisted posts) and permission controls (for example, you have an option to post to mutual-only where both people follow each other). Also, by hosting your own service you set the rules, and you are also your own admin. You can choose to turn off likes, replies, boosts, etc as well. Being your own admin also means you can easily adjust the post length as well.

It does conform to the Mastodon API so apparently some Mastodon clients will also work fine with it.

See https://github.com/superseriousbusiness/gotosocial/

#technology #ActivityPub #GoToSocial

  • @TheRealCharlesEames
    link
    English
    922 days ago

    So if I wanted to host my own mastodon for friends and family but found the installation process too difficult, does that make this the best route forward for me?

    • GadgeteerZAOP
      link
      fedilink
      English
      521 days ago

      They say it is less complex than Mastodon as well as lighter weight requirements. A Docker install is usually also easiest. So I’d say it is a better option to try for friends and family.

      • Falken
        link
        fedilink
        220 days ago

        Setting up an app in docker is the easiest option, even more than just simply installing the binary?

        • GadgeteerZAOP
          link
          fedilink
          English
          120 days ago

          Yes, as there is full control over what is exposed or mapped for the app including network ports, and future updates don’t get broken by inconsistent dependencies. I suppose if you run only one service on a machine and stick to standard ports for reverse proxying then maybe a binary install can be simpler. But if you want to install multiple apps ona server containers does become easier to manage and update.

    • @mbirth@lemmy.mbirth.uk
      link
      fedilink
      English
      121 days ago

      Pretty much, I think. I have it running on a Raspberry Pi 4 with docker-compose:

      version: '3'
      
      services:
        gotosocial:
          image: superseriousbusiness/gotosocial:latest
          restart: unless-stopped
          networks:
            - traefik-public
          environment:
            TZ: Europe/London
            GTS_HOST: xyz.example.com
            GTS_CONFIG_PATH: /gotosocial/storage/config.yaml
            GTS_DB_TYPE: sqlite
            GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
            GTS_LETSENCRYPT_ENABLED: "false"
            GTS_LETSENCRYPT_EMAIL_ADDRESS: ""
          volumes:
            - smb-gotosocial-data:/gotosocial/storage
          labels:
            traefik.enable: "true"
            traefik.http.routers.gotosocial.rule: Host(`xyz.example.com`)
            traefik.http.routers.gotosocial.entrypoints: websecure
            traefik.http.routers.gotosocial.tls: "true"
            traefik.http.routers.gotosocial.tls.certresolver: le
            traefik.http.services.gotosocial.loadbalancer.server.port: "8080"
      
      volumes:
        smb-gotosocial-data:
          driver_opts:
            type: "smb3"
            device: "//mynas/docker/gotosocial/data"
            # Use nobrl to mitigate SQLite3 byte range locking issue on CIFS/SMB mounts
            o: "rw,nobrl,vers=3.1.1,addr=172.16.254.1,username=xxx,password=xxx,cache=loose,iocharset=utf8,noperm,hard"
      
      networks:
        traefik-public:
          external: true