nixfiles/hosts/hetzner-arm/profiles/gotosocial.nix
2024-07-21 20:40:28 +01:00

80 lines
2 KiB
Nix

{config, ...}: let
inherit (config.services.secrets) secrets;
in {
services.gotosocial = {
enable = true;
setupPostgresqlDB = false;
environmentFile = secrets.gotosocial_env.path;
settings = {
application-name = "chaos-gts";
host = "gts-02.owo.monster";
bind-address = "0.0.0.0";
log-level = "info";
log-client-ip = true;
db-type = "sqlite";
db-address = "/var/lib/gotosocial/sqlite.db";
trusted-proxies = [
"127.0.0.1/32"
"::1"
];
port = 8080;
letsencrypt-enabled = false;
accounts-registration-open = false;
smtp-host = "mail.owo.monster";
smtp-port = 587;
smtp-from = "gotosocial@owo.monster";
smtp-username = "gotosocial@owo.monster";
smtp-password = ""; # set via env variables
instance-languages = ["en" "de"];
media-image-max-size = "64MB";
media-video-max-size = "1024MB";
media-description-max-chars = 4000;
media-emoji-local-max-size = "4MB";
media-emoji-remote-max-size = "2MB";
media-remote-cache-days = 1;
media-cleanup-every = "6h";
statuses-poll-max-options = 10;
statuses-media-max-files = 8;
advanced-rate-limit-requests = 0;
# only enable when testing out mastodon-api applications
# that use instance version for api compatibility checks
# instance-inject-mastodon-version = true;
cache = {
memory-target = "128MiB";
};
};
};
services.nginx.virtualHosts."gts-02.owo.monster" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8080";
proxyWebsockets = true;
extraConfig = ''
# uncomment if running nginx without recommendedProxySettings
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
'';
};
extraConfig = ''
client_max_body_size 128M;
'';
};
}