Why?
我一直没有使用社交媒体的习惯,像是Twitter, Weibo之类。但是经常看到大家在聊天里分享链接,难免会想尝试一下。 我很喜欢Misskey的UI,好看。但是移动客户端很重要,如果没有的话就基本等于不会习惯性的访问。 简单的尝试之后 Mastodon 满足了大多数我的要求。
NixOS configuration
在NixOS上部署很简单,只需要将DNS解析到相应的机器并填好设置,没有其他的步骤。
需要做的域名只有 WEB_DOMAIN
。
services.mastodon = {
enable = true;
streamingProcesses = 1; # 推荐处理器核心-1
localDomain = "ocfox.me";
smtp.fromAddress = "[email protected]";
extraConfig = {
WEB_DOMAIN = "mastodon.ocfox.me";
SINGLE_USER_MODE = "true";
};
};
在最好的情况下,localDomain应该和WEB_DOMAIN保持一致,也就是并不需要单独设置WEB_DOMAIN。 但是我相信,你应该已经在它上面提供了别的内容吧,比如homepage之类的,不过mastodon允许我们这么做1。 只需要在localDomain上提供webfinger就好。
接下来是Caddy的配置,记得替换email and WEB_DOMAIN。
# 保证caddy具有mastodon web socket的读写权限
systemd.services.caddy.serviceConfig.SupplementaryGroups = [ "mastodon" ];
services.caddy = {
enable = true;
email = "<email for acme>";
virtualHosts = {
"<WEB_DOMAIN>" = {
extraConfig = ''
handle_path /system/* {
file_server * {
root /var/lib/mastodon/public-system
}
}
handle /api/v1/streaming/* {
reverse_proxy unix//run/mastodon-streaming/streaming-1.socket
}
route * {
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;"
}
'';
};
};
nixos-rebuild之后,你就可以通过域名访问你的mastodon server啦。 接下来需要为自己创建一个用户。
mastodon-tootctl accounts create USERNAME --email=YOUR_EMAIL --confirmed --role=Owner
你将会看到生成的密码打印在下面。
Something needed
如果使用了不同的localDomain,那么还需要在 localDomain 上提供webfinger。(只是单用户或者几个用户的话可以这么做), 不然请参考manual1。
https://<WEB_DOMAIN>/.well-known/webfinger?resource=acct:<USERNAME>@<localDomain>
提供的json 复制到下面的路径就好。
https://<localDomain>/.well-known/webfinger
如果是github pages并且部署后无法访问这个路径,可以在根目录添加空白文件.nojekyll
解决。
如果你之前在其他mastodon兼容的服务器注册过账户,那么也可以简单的迁移到新的账户。 在设置里找到 账户->从其它账号迁入。接下来按照说明做就好,迁移完成后旧账户就不能正常使用了(大概)。