Jump to content

Mastodon: Difference between revisions

m
Remove duplicate `streamingProcesses`
imported>Sefidel
(Since https://github.com/NixOS/nixpkgs/pull/203825, mastodon-env has been replaced with mastodon-tootctl.)
m (Remove duplicate `streamingProcesses`)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== Setup your own personal Mastodon instance on a dedicated server ==
[https://joinmastodon.org Mastodon] is a decentralized social media platform that allows users to create accounts, post content, and interact with others. It is an alternative to centralized social media platforms like Twitter and Facebook.


The <service>services.mastodon</service> service can be used to setup a Mastodon instance in [https://docs.joinmastodon.org/admin/config/#single_user_mode single user mode].
== Setup ==


It will setup all the necessary services (PostgreSQL, Redis, Nginx...) and setup a valid certificate to be used for the HTTPS connection:
The <code>services.mastodon</code> service can be used to setup a Mastodon instance in [https://docs.joinmastodon.org/admin/config/#single_user_mode single user mode]. It will setup all the necessary services (PostgreSQL, Redis, Nginx...) and setup a valid certificate to be used for the HTTPS connection:


<syntaxHighlight lang=nix>
<syntaxhighlight lang="nix">
   security.acme = {
   security.acme = {
     acceptTerms = true;
     acceptTerms = true;
Line 15: Line 15:
     configureNginx = true;
     configureNginx = true;
     smtp.fromAddress = "noreply@social.example.com"; # Email address used by Mastodon to send emails, replace with your own
     smtp.fromAddress = "noreply@social.example.com"; # Email address used by Mastodon to send emails, replace with your own
    streamingProcesses = 3; # Number of processes used. It is recommended to set to the number of CPU cores minus one
     extraConfig.SINGLE_USER_MODE = "true";
     extraConfig.SINGLE_USER_MODE = "true";
   };
   };
   networking.firewall.allowedTCPPorts = [ 80 443 ];
   networking.firewall.allowedTCPPorts = [ 80 443 ];
</syntaxHighlight>
</syntaxhighlight>
 
You can then create your account using the package <code>mastodon</code>:
Ignore any warnings about the ruby version, it should work anyways
 
<syntaxhighlight lang="console">
# mastodon-tootctl accounts create USERNAME --email=YOUR_EMAIL --confirmed --role=Owner
</syntaxhighlight>
 
and approve your new account
<syntaxhighlight lang="console">
# mastodon-tootctl accounts approve USERNAME
</syntaxhighlight>
 
Then you're ready to head to the domain you set up and start tooting away!


You can then create your account using <code>tootctl</code>: <code>mastodon-tootctl accounts create USERNAME --email=YOUR_EMAIL --confirmed --role=Owner'</code>
== Usage ==


== Automatic backups ==
Change password for user <code>my_user</code>


Mastodon uses postgreSQL as database. Luckily, Nixpkgs offers a useful service, [https://search.nixos.org/options?channel=unstable&show=services.postgresqlBackup.enable&from=0&size=50&sort=relevance&type=packages&query=postgresql <code>services.postgresqlBackup.enable</code>].
<syntaxhighlight lang="console">
# mastodon-tootctl accounts modify --reset-password my_user
</syntaxhighlight>


Example settings, assuming you have the default database settings:
== Tips and tricks ==
<syntaxHighlight lang=nix>
  services.postgresqlBackup = {
    enable = true;
    databases = [ "mastodon" ];
  };
</syntaxHighlight>


== Using Caddy as a server  ==
=== Using Caddy as a server  ===


Use the following template:
Use the following template:
Line 87: Line 98:
# Caddy requires file and socket access
# Caddy requires file and socket access
users.users.caddy.extraGroups = [ "mastodon" ];
users.users.caddy.extraGroups = [ "mastodon" ];
# Caddy systemd unit needs readwrite permissions to /run/mastodon-web
systemd.services.caddy.serviceConfig.ReadWriteDirectories = lib.mkForce [ "/var/lib/caddy" "/run/mastodon-web" ];


</syntaxHighlight>
</syntaxHighlight>


== Hints for running in your local network for testing ==
=== Automatic backups ===
 
Mastodon uses postgreSQL as database. Luckily, Nixpkgs offers a useful service, [https://search.nixos.org/options?channel=unstable&show=services.postgresqlBackup.enable&from=0&size=50&sort=relevance&type=packages&query=postgresql <code>services.postgresqlBackup.enable</code>].
 
Example settings, assuming you have the default database settings:
<syntaxHighlight lang=nix>
  services.postgresqlBackup = {
    enable = true;
    databases = [ "mastodon" ];
  };
</syntaxHighlight>
 
== Troubleshooting ==
 
=== Hints for running in your local network for testing ===


If you get a <code>Mastodon::HostValidationError</code> 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:
If you get a <code>Mastodon::HostValidationError</code> 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:
Line 96: Line 124:
This is also documented in the Mastodon admin guide[https://docs.joinmastodon.org/admin/config/].
This is also documented in the Mastodon admin guide[https://docs.joinmastodon.org/admin/config/].


[[Category:ActivityPub]]
[[Category:Applications]]
[[Category:Applications]]
[[Category:Web Applications]]
[[Category:Server]]
3

edits