Mastodon: Difference between revisions
imported>Nix m add Software/Applications subcategory |
imported>Cab404 Added instructions for Caddy |
||
Line 1: | Line 1: | ||
== Using Caddy as a server == | |||
Use the following template: | |||
<syntaxHighlight lang=nix> | |||
services = { | |||
caddy = { | |||
enable = true; | |||
virtualHosts = { | |||
# Don't forget to change the host! | |||
"<your-server-host>" = { | |||
extraConfig = '' | |||
handle_path /system/* { | |||
file_server * { | |||
root /var/lib/mastodon/public-system | |||
} | |||
} | |||
handle /api/v1/streaming/* { | |||
reverse_proxy unix//run/mastodon-streaming/streaming.socket | |||
} | |||
file_server * { | |||
root ${pkgs.mastodon}/public | |||
pass_thru | |||
} | |||
reverse_proxy * unix//run/mastodon-web/web.socket | |||
handle_errors { | |||
root * ${pkgs.mastodon}/public | |||
rewrite 500.html | |||
file_server | |||
} | |||
encode gzip | |||
header /* { | |||
Strict-Transport-Security "max-age=31536000;" | |||
} | |||
header /emoji/* Cache-Control "public, max-age=31536000, immutable" | |||
header /packs/* Cache-Control "public, max-age=31536000, immutable" | |||
header /system/accounts/avatars/* Cache-Control "public, max-age=31536000, immutable" | |||
header /system/media_attachments/files/* Cache-Control "public, max-age=31536000, immutable" | |||
''; | |||
}; | |||
}; | |||
}; | |||
# Caddy requires files and socket access | |||
users.users.caddy.extraGroups = [ "mastodon" ]; | |||
</syntaxHighlight> | |||
== Hints for running in your local network for testing == | == Hints for running in your local network for testing == |
Revision as of 15:44, 13 November 2022
Using Caddy as a server
Use the following template:
services = {
caddy = {
enable = true;
virtualHosts = {
# Don't forget to change the host!
"<your-server-host>" = {
extraConfig = ''
handle_path /system/* {
file_server * {
root /var/lib/mastodon/public-system
}
}
handle /api/v1/streaming/* {
reverse_proxy unix//run/mastodon-streaming/streaming.socket
}
file_server * {
root ${pkgs.mastodon}/public
pass_thru
}
reverse_proxy * unix//run/mastodon-web/web.socket
handle_errors {
root * ${pkgs.mastodon}/public
rewrite 500.html
file_server
}
encode gzip
header /* {
Strict-Transport-Security "max-age=31536000;"
}
header /emoji/* Cache-Control "public, max-age=31536000, immutable"
header /packs/* Cache-Control "public, max-age=31536000, immutable"
header /system/accounts/avatars/* Cache-Control "public, max-age=31536000, immutable"
header /system/media_attachments/files/* Cache-Control "public, max-age=31536000, immutable"
'';
};
};
};
# Caddy requires files and socket access
users.users.caddy.extraGroups = [ "mastodon" ];
Hints for running in your local network for testing
If you get a Mastodon::HostValidationError
when trying to federate with another ActivityPub instance in your local network you need to allow Mastodon to access local ip addresses in outgoing http (federation) requests. To do this set the following environment variable:
ALLOWED_PRIVATE_ADDRESSES
to a comma-separated list of allowed ip addresses with the format specified in https://ruby-doc.org/stdlib-2.5.1/libdoc/ipaddr/rdoc/IPAddr.html.
This is also documented in the Mastodon admin guide[1].