grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / web-apps / gotosocial.md
blobb3540f0d5811fa0ef332efef059702232317a74c
1 # GoToSocial {#module-services-gotosocial}
3 [GoToSocial](https://gotosocial.org/) is an ActivityPub social network server, written in Golang.
5 ## Service configuration {#modules-services-gotosocial-service-configuration}
7 The following configuration sets up the PostgreSQL as database backend and binds
8 GoToSocial to `127.0.0.1:8080`, expecting to be run behind a HTTP proxy on `gotosocial.example.com`.
10 ```nix
12   services.gotosocial = {
13     enable = true;
14     setupPostgresqlDB = true;
15     settings = {
16       application-name = "My GoToSocial";
17       host = "gotosocial.example.com";
18       protocol = "https";
19       bind-address = "127.0.0.1";
20       port = 8080;
21     };
22   };
24 ```
26 Please refer to the [GoToSocial Documentation](https://docs.gotosocial.org/en/latest/configuration/general/)
27 for additional configuration options.
29 ## Proxy configuration {#modules-services-gotosocial-proxy-configuration}
31 Although it is possible to expose GoToSocial directly, it is common practice to operate it behind an
32 HTTP reverse proxy such as nginx.
34 ```nix
36   networking.firewall.allowedTCPPorts = [ 80 443 ];
37   services.nginx = {
38     enable = true;
39     clientMaxBodySize = "40M";
40     virtualHosts = with config.services.gotosocial.settings; {
41       "${host}" = {
42         enableACME = true;
43         forceSSL = true;
44         locations = {
45           "/" = {
46             recommendedProxySettings = true;
47             proxyWebsockets = true;
48             proxyPass = "http://${bind-address}:${toString port}";
49           };
50         };
51       };
52     };
53   };
55 ```
57 Please refer to [](#module-security-acme) for details on how to provision an SSL/TLS certificate.
59 ## User management {#modules-services-gotosocial-user-management}
61 After the GoToSocial service is running, the `gotosocial-admin` utility can be used to manage users. In particular an
62 administrative user can be created with
64 ```ShellSession
65 $ sudo gotosocial-admin account create --username <nickname> --email <email> --password <password>
66 $ sudo gotosocial-admin account confirm --username <nickname>
67 $ sudo gotosocial-admin account promote --username <nickname>
68 ```