还是老样子先import:
{ imports = [ ./hardware-configuration.nix ./lnmp.nix ./mastodon.nix ]; }
新建一个mastodon.nix:
nano /etc/nixos/mastodon.nix
我的配置如下:
{ config, pkgs, ... }: { security.acme = { acceptTerms = true; defaults = { email = "mastodon@example.com"; }; }; nixpkgs.config.allowUnfree = true; services.elasticsearch = { enable = true; package = pkgs.elasticsearch7; }; services.mastodon = { enable = true; configureNginx = true; localDomain = "mastodon.example.com"; elasticsearch = { host = "127.0.0.1"; port = 9200; }; extraConfig = { SINGLE_USER_MODE = "true"; }; }; }
如果security.acme在别的位置申明过了这里就不用配置了,这是services.mastodon.configureNginx依赖的。
services.mastodon.configureNginx可以自动帮你配置好mastodon所需要的nginx规则。
如果不需要全文搜索可以删掉services.elasticsearch和services.mastodon.elasticsearch相关的配置,毕竟这货是真的吃内存。
另外目前版本的全文搜索有点问题,具体看这里:https://github.com/mastodon/mastodon/issues/18625
我配置的是单用户实例,如果要多用户可以删掉SINGLE_USER_MODE的配置,另外你还得配置好smtp,因为用户注册的时候是强制要验证邮箱的。这里我就省略smtp相关的配置了。
这里稍微提一下,实际上有一个services.mastodon.smtp.createLocally的选项可以帮你自动配置一个本地的smtp服务器,如果你的服务器支持对外发信的话也可以试试,但是我发现这个选项会和某些其他程序里面的选项产生冲突,所以看情况使用吧。
有人可能觉得有点奇怪,mastodon不是还需要用到postgresql数据库吗,为啥没有数据库相关的配置?因为这个包的维护者实在是太贴心了,有一个选项services.mastodon.database.createLocally可以帮你自动配置一个本地的postgresql数据库,而且这个选项默认是启用的,所以数据库的配置就可以直接省略了:
配置完成后重建系统:
nixos-rebuild switch
一个mastodon实例就配置好了,现在来创建管理员账号。从root用户切换到mastodon用户:
su -s /run/current-system/sw/bin/bash mastodon
从普通用户切换到mastodon用户,前提是普通用户在sudo的wheel组里面:
sudo su -s /run/current-system/sw/bin/bash mastodon
使用下面的命令创建管理员账号:
mastodon-env tootctl accounts create imlala --email mastodon@example.com --confirmed --role=admin
由于我们没有配置smtp服务,务必加上confirmed参数,这将可以跳过邮件验证。
登录你的管理员账号,开始使用mastodon吧: