mastodon: initial deployment
This commit is contained in:
parent
c3ec689b9a
commit
91b65a04f9
72
profiles/mastodon.nix
Normal file
72
profiles/mastodon.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# NixOps configuration for the hosts running a Mastodon server
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services = {
|
||||||
|
mastodon = {
|
||||||
|
enable = true; # Enable the Mastodon service
|
||||||
|
localDomain = "mcwhirter.io"; # Domain serving Mastodon
|
||||||
|
configureNginx = false; # Configure Nginx as a reverse proxy
|
||||||
|
smtp = {
|
||||||
|
fromAddress = "social@mcwhirter.io";
|
||||||
|
user = "social";
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
WEB_DOMAIN = "social.mcwhirter.io";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true; # Enable Nginx
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
virtualHosts = {
|
||||||
|
# Required to redirect requests to the mastodon service
|
||||||
|
"mcwhirter.io" = {
|
||||||
|
locations."/.well-known/host-meta".extraConfig = "return 301 $scheme://social.mcwhirter.io$request_uri;";
|
||||||
|
};
|
||||||
|
"social.mcwhirter.io" = {
|
||||||
|
enableACME = true; # Use ACME certs
|
||||||
|
forceSSL = true; # Force SSL
|
||||||
|
root = "${pkgs.mastodon}/public/";
|
||||||
|
locations."/system/".alias = "/var/lib/mastodon/public-system/";
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
tryFiles = "$uri @proxy";
|
||||||
|
};
|
||||||
|
|
||||||
|
locations."@proxy" = {
|
||||||
|
proxyPass = "http://unix:/run/mastodon-web/web.socket";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
locations."/api/v1/streaming/" = {
|
||||||
|
proxyPass = "http://unix:/run/mastodon-streaming/streaming.socket";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.mastodon.members = [
|
||||||
|
"nginx"
|
||||||
|
];
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
certs = {
|
||||||
|
"social.mcwhirter.io" = {
|
||||||
|
group = "mastodon";
|
||||||
|
postRun = "systemctl reload nginx.service; systemctl restart mastodon.service";
|
||||||
|
email = "acme@mcwhirter.io";
|
||||||
|
webroot = "/var/lib/acme/acme-challenge";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue