Home Explore Blog Models CI



nixpkgs

nixos/modules/services/web-apps/gotosocial.md
435c118e166fea475db4b342773e4022a2448d397807678f0000000300000851
# GoToSocial {#module-services-gotosocial}

[GoToSocial](https://gotosocial.org/) is an ActivityPub social network server, written in Golang.

## Service configuration {#modules-services-gotosocial-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`.

```nix
{
  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](https://docs.gotosocial.org/en/latest/configuration/general/)
for additional configuration options.

## Proxy configuration {#modules-services-gotosocial-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.

```nix
{
  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 [](#module-security-acme) for details on how to provision an SSL/TLS certificate.

## User management {#modules-services-gotosocial-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

```ShellSession
$ 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>
```

Chunks
dff5a2be (1st chunk of `nixos/modules/services/web-apps/gotosocial.md`)
Title: GoToSocial Service Configuration and Management
Summary
This document outlines the configuration and management of GoToSocial, an ActivityPub social network server written in Golang. It provides Nix configuration examples for setting up GoToSocial with PostgreSQL as a database backend and binding it to a specific local address and port. It also includes instructions for configuring an Nginx reverse proxy with SSL/TLS (ACME) to operate in front of GoToSocial. Finally, it details the command-line steps using `gotosocial-admin` to create, confirm, and promote an administrative user after the service is running.