nixpkgs/nixos/modules/services/web-apps/gotosocial.md
misuzu 45ffb33514 nixos/gotosocial: init
Co-authored-by: Peder Bergebakken Sundt <pbsds@hotmail.com>
2023-06-05 09:07:34 +03:00

2 KiB

GoToSocial

GoToSocial is an ActivityPub social network server, written in Golang.

Service configuration

The following configuration sets up the PostgreSQL as database backend and binds GoToSocial to 127.0.0.1:8080, expecting to be run behind a HTTP proxy on gotosocial.example.com.

services.gotosocial = {
  enable = true;
  setupPostgresqlDB = true;
  settings = {
    application-name = "My GoToSocial";
    host = "gotosocial.example.com";
    protocol = "https";
    bind-address = "127.0.0.1";
    port = 8080;
  };
};

Please refer to the GoToSocial Documentation for additional configuration options.

Proxy configuration

Although it is possible to expose GoToSocial directly, it is common practice to operate it behind an HTTP reverse proxy such as nginx.

networking.firewall.allowedTCPPorts = [ 80 443 ];
services.nginx = {
  enable = true;
  clientMaxBodySize = "40M";
  virtualHosts = with config.services.gotosocial.settings; {
    "${host}" = {
      enableACME = true;
      forceSSL = true;
      locations = {
        "/" = {
          recommendedProxySettings = true;
          proxyWebsockets = true;
          proxyPass = "http://${bind-address}:${toString port}";
        };
      };
    };
  };
};

Please refer to for details on how to provision an SSL/TLS certificate.

User management

After the GoToSocial service is running, the gotosocial-admin utility can be used to manage users. In particular an administrative user can be created with

$ sudo gotosocial-admin account create --username <nickname> --email <email> --password <password>
$ sudo gotosocial-admin account confirm --username <nickname>
$ sudo gotosocial-admin account promote --username <nickname>