【Arch Linux】misskey 手动部署和配置
misskey 是一款开源的“跨星际”(interplanetary)社交平台,以微博为主要形式,界面美观,内含元素丰富。本文即针对该平台在 Arch Linux 的手动安装方式作说明。
笔者:为什么不用 docker 安装(这是官方认定 recommended 的安装方式)?只是不怎么想用 docker(
注意:基于 Arch Linux 发行版的特殊性(非开箱即用),笔者会尽可能多地补充安装过程,尽可能让读者能从头到尾依照本文操作。但若存在疏漏,敬请谅解。
检查系统配置
misskey 对服务端的性能配置要求较高,建议配置至少 2 核 CPU 和 4GB RAM。笔者使用的服务器部分配置如下(多人共有,但对 misskey 来说也已足够):
1 | $ neofetch |
安装
依赖
系统
安装所有依赖(这里假设读者已经安装了 sudo
并配置好相关权限):
1 | sudo pacman -Syu # 更新系统 |
在打开的编辑器 nano
中去除 #%wheel ALL=(ALL:ALL) ALL
一行前的注释,依次按 Ctrl+X
、y
、Enter
保存。
同时考虑到 pip 用户配置下 $PATH
环境变量问题,使用编辑器打开当前终端配置(例如 ~/.bashrc
),添加如下行:
1 | PATH=~/.local/bin:$PATH |
misskey
官方文档中给出的 misskey 需要的依赖有:
- Node.JS(16.x)
- PostgreSQL(建议 12.x 或 13.x)
- Redis
- yarn(可选,若不安装,后续安装过程中
yarn
应替换为npx yarn
) - FFmpeg
考虑到大部分软件的向后兼容性,可以直接安装所有依赖:
1 | sudo pacman -S nodejs npm postgresql redis yarn ffmpeg --needed |
用户
因笔者服务器环境中存在多用户、多管理情况,此处的操作与官方文档不同——创建了一个有 sudo
权限、可登录、有家目录的用户。
1 | useradd -m -G wheel -s /bin/bash misskey |
并使用 sudo passwd misskey
设置登录密码。
若依照官方文档,仅需:
1 | useradd -r -s /usr/bin/nologin misskey |
之后切换入该用户继续操作:su - misskey
。
下载源码
根据上文中用户创建方式,目录的路径可能不能完全如文中所述。请读者根据自身情况合理选择安装路径。
在终端中执行:
1 | mkdir .opt |
注意:截至本文编写时,misskey 源码库克隆大小 88.22MB,子库(misskey-assets)克隆大小 69.76MB。请自行选择是否“科学上网”或使用镜像站。
安装依赖库
在终端中执行:
1 | yarn |
注意:请自行选择是否“科学上网”或使用镜像站。
注意:该过程耗时较长。若无人值守,建议使用 tmux
或 screen
防止 ssh 连接中断导致安装过程中断。
编译
在终端中执行:
1 | NODE_ENV=production yarn build |
注意:该过程耗时较长。若无人值守,建议使用 tmux
或 screen
防止 ssh 连接中断导致安装过程中断。
初始化数据库
Postgresql
在终端中执行:
1 | sudo -iu postgres # 切换到 postgres 用户 |
进入 Postgresql 操作界面,执行:
1 | create database misskey; |
其中上面的 '{YOUR_PASSWORD}'
可以任意配置,但需要和后面的 misskey 配置文件保持一致。
Redis
在终端中执行:
1 | sudo systemctl enable redis --now |
前置配置
从 .config
文件夹中复制 example.yml
到 default.yml
:
1 | cp .config/{example,default}.yml |
然后使用编辑器编辑后者,例如 nano .config/default.yml
。其中最重要的配置(不修改就会直接导致 misskey 跑不通)是:
1 | # ┌──────────────────────────┐ |
将其中的 user
配置项改为 user: misskey
,pass
配置项根据上面的配置保持一致。
初始化
在终端中执行:
1 | yarn run init |
若在终端中看到类似如下的输出:
1 | INFO * [core boot] Welcome to Misskey! |
则表示 misskey 部署成功。
配置
systemd 服务
可以配置 systemd 服务让其管理 misskey 的运行。新建 /etc/systemd/system/misskey.service
,在编辑器中打开并填入如下内容:
1 | [Unit] |
然后分别通过 sudo systemctl start misskey
和 sudo systemctl enable misskey
启动 misskey 并添加开机自启。
端口转发(反向代理)和 TLS
misskey 支持 HTTPS/SSL/TLS 。这需要配置相关证书,并设置端口转发(反向代理)。笔者使用的软件包是 nginx,并已在 Cloudflare 添加一个域名。
注意:部分免费二级域名(如 .cf、.tk)无法使用后文中提及的 Cloudflare API 自动更新 DNS 记录。请读者自行选用其他域名,或使用其他 DNS 服务。
证书
首先安装自动签发 Let’s Encrypt 证书的软件包 certbot:
1 | python -m pip install certbot certbot-cloudflare-dns |
为防止证书信息泄露(certbot 默认工作和日志目录均在 /etc
、/var
等文件夹中),先创建相关文件夹:
1 | # 工作目录、日志目录、配置目录(存放证书) |
再写入 Cloudflare API 的相关配置文件:
1 | mkdir -p ~/.secrets/certbot |
其中 {API_TOKEN}
表示 Cloudflare 账户的 API token。请参见 Cloudflare 和 Certbot 相关文档配置。
为保证安全性,建议为其重新配置权限:
1 | chmod -R 700 ~/.secrets |
最后,在终端中执行:
1 | # 此处使用 Cloudflare API 更新 DNS |
其中 '{domain}'
是为 misskey 分配的域名。certbot 运行过程中需要同意相关服务条款并输入邮箱注册。
DNS
在 DNS 服务商(如 Cloudflare)中添加一条 A/AAAA 记录,从域名指向服务器的 IP 地址。
端口转发(反向代理)
在终端中执行:
1 | sudo pacman -S nginx-mainline --needed |
再打开 /etc/nginx/nginx.conf
,添加如下类似的配置项:
1 | server { |
其中 '{domain}'
表示分配的域名。证书路径以实际情况为准。
最后重启 nginx 服务:
1 | sudo systemctl restart nginx |
misskey
打开 misskey 配置文件 ~/.opt/misskey/.config/default.yml
,修改如下配置项:
1 | # ┌─────┐ |
设置为先前分配的域名。
最后重启 misskey 服务:
1 | sudo systemctl restart misskey |
特别致谢
感谢一位朋友“梦可味”在撰写本文前提供的在 Ubuntu 发行版中安装 misskey 的教程,其上有对多处踩坑的详细记录,让笔者能更快速地完成安装。之后会发布 misskey 在 Ubuntu 下的安装及配置教程。
参考
【Arch Linux】misskey 手动部署和配置
1.Codeforces 1324B: Yet Another Palindrome Problem
2.Codeforces 363B: Fence & Rust for Competitive Programming
3.Codeforces 1327A: Sum of Odd Integers
4.LeetCode Problem 3: Longest Substring Without Repeating Characters
5.【文件格式探究】EP.2 WAV 音频文件格式
6.Codeforces 1399D: Binary String to Subsequences
7.Codeforces 1368B: Codeforces Subsequences
8.Codeforces 1430C: Numbers on Whiteboard
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort