静看光阴荏苒
不管不顾不问不说也不念

NixOS配置Mastodon

还是老样子先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吧:

赞(15)
未经允许不得转载:荒岛 » NixOS配置Mastodon
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿