Misskey 是一个开源、去中心化的社交媒体平台,发帖方式类似于微博和推特。去中心化则意味着一个 Misskey 实例可以与其他 Misskey 实例进行互联,甚至可以与其他 Fediverse (ActivityPub) 平台,例如 Mastodon、PixelFed、PeerTube 上的用户进行互动。
有关于 Misskey 的详细介绍,点这儿。Github 地址点这儿。
Never 是在18年透过 LALA 大佬的博客认识了这个平台,当初 Misskey 还没中文翻译,因为一时兴起,带着几个同学连夜把 Misskey 的中文翻译完成了哈哈哈。
话不多说,我们以分别以两种方式安装 Misskey — 手动安装 和 通过宝塔面板安装(稍后推出)。
本篇文章背景是 ubuntu 22.04 和在局域网条件下,跳过了申请 SSL 证书这一环节(手上还真没有闲置的机子了…)。这里推荐使用 2 核 CPU 和 2 GB 内存的机器,运行起来不是很吃力,但据说 1c1g也可以。
手动安装
首先,新建一个名为 misskey 的普通用户。官方文档阐明用 root 来部署 misskey 不是很合适:
adduser --disabled-password --disabled-login misskey
Misskey 支持的数据库只有 PostgreSQL,所需版本为 12.x 以上。输入以下命令安装 PostgreSQL:
apt install postgresql
如果需要自定义配置(例如端口,监听地址等),可以通过以下命令来修改配置文件:
nano /etc/postgresql/14/main/postgresql.conf
如果提示目录不存在,可能是因为安装版本不同。总目录(/etc/postgresql)是一样的,可以通过列举文件来确定下一目录(/14):
ls /etc/postgresql
下面我们来新建数据库。输入以下命令切换至 postgres 用户:
su postgres
输入以下命令进入数据库:
psql
输入以下命令来新建数据库及用户:
create database misskey with encoding = 'UTF8';
create user misskey with encrypted password '数据库用户missky的密码';
grant all privileges on database misskey to misskey;
其中,第二行中 create user misskey,misskey 可以替换为自己想要的用户名。
完成后,输入以下命令退出数据库:
\q
如果在建立数据库时出现以下错误:
可通过输入如下命令来解决:
update pg_database set datallowconn = TRUE where datname = 'template0';
update pg_database set datistemplate = FALSE where datname = 'template1';
drop database template1;
create database template1 with template = template0 encoding = 'UTF8';
update pg_database set datistemplate = TRUE where datname = 'template1';
update pg_database set datallowconn = FALSE where datname = 'template0';
然后,再重复创建数据库及用户的那三条命令即可,最后输入 \q 来退出数据库。
Redis 也是 Misskey 的一个依赖软件。输入以下命令来安装 redis:
su root #如果没在没有 root 权限的用户中(如 postgres 和 misskey)
apt install redis
如果需要修改 redis 的端口或监听地址等,输入以下命令修改其配置文件:
nano /etc/redis/redis.conf
接下来安装 Yarn:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt update
apt install yarn
完成后,输入以下命令查看 yarn 版本。若有回显,则安装正确:
yarn --version
然后安装和升级 Node. js:
apt install npm
npm install n -g
n stable
重启机器:
reboot
至此,Misskey 所须的必备环境依赖已经装完,现在我们来对 Misskey 本身下手。
切换回 misskey 用户,将 Misskey 项目克隆到本地并同步 master:
su misskey
cd ~
git clone --recursive https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
然后安装 Misskey 依赖组件:
yarn install
接下来编辑 Misskey 的配置文档:
cp .config/example.yml .config/default.yml
nano .config/default.yml
在配置文档中,需要修改以下内容:
# ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────
# Final accessible URL seen by a user.
url: https://example.tld/ #将域名替换为自己的域名
...
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
db:
host: localhost #数据库地址,若在本机保持默认即可
port: 5432 #数据库端口,若未修改配置则保持默认即可
# Database name
db: misskey #数据库名称
# Auth
user: example-misskey-user #数据库用户名
pass: example-misskey-pass #用户密码
# ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────
redis:
host: localhost #redis地址,若在本机保持默认即可
port: 6379 #redis端口,若未修改配置则保持默认即可
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
#pass: example-pass #访问redis的密码,若未设置则保持默认即可
#prefix: example-prefix
#db: 1
保存后,输入以下命令来构建 Misskey:
NODE_ENV=production yarn build
构建完成后,输入以下命令来初始化数据库:
yarn run init
至此,Misskey 就安装完成咯,运行以下命令来启动:
NODE_ENV=production npm start
但是用这种方式运行,断开ssh连接就会导致 Misskey 被终止。所以我们可以新建一个系统服务。切换回 root 用户,输入以下命令:
su root
nano /etc/systemd/system/misskey.service
将以下内容粘贴进去:
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/yarn start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
保存后,我们就可以用 systemd 启动 Misskey 了:
systemctl daemon-reload
systemctl enable misskey
systemctl start misskey
查看运行状态:
systemctl status misskey
由于 Misskey 需要 https 协议,所以我们还需要申请一个证书。这里我们用 acme.sh 来申请:
curl https://get.acme.sh | sh -s email=my@example.com
安装完成后,需要断开重连一下 ssh 。确保域名已解析到 VPS 上,且 VPS 的 80 端口没有被占用,然后输入以下命令申请 SSL 证书(把 mydomain.com 替换为你的域名):
acme.sh --issue -d mydomain.com --standalone
签发的证书文件在 /root/.acme.sh/你的域名/。其中,你的域名.cer 为公钥,你的域名.key 为私钥。
现在我们安装 Nginx,用于反向代理:
apt install nginx
新建站点配置文件。这里需要注意的是示例配置文件可能不会正常工作,需要依据个人情况进行修改:
nano /etc/nginx/conf.d/example.com.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen 443 ssl http2;
server_name 你的域名;
client_max_body_size 100m;
client_body_buffer_size 2048k;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
ssl_certificate SSL公钥位置;
ssl_certificate_key SSL私钥位置;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Proxy "";
proxy_pass_header Server;
proxy_pass http://127.0.0.1:3000;
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
tcp_nodelay on;
}
}
重新启动 nginx:
systemctl stop nginx
systemctl start nginx
现在,打开站点,应该可以进入 Misskey 实例了。第一件事就是创建管理员用户和密码:
然后就是主界面咯:
这个界面相较于 2018 年也是变化了不少。点击左边的“控制面板”即可查看服务器目前状态,还可自定义:
剩下的功能就等小伙伴们自己来探索了。等过段时间 Never 也搭一个公共的 Missky。
本来还想再写一下用宝塔安装,先鸽一下,回家就写哈哈哈。
感谢参考文献中的几位大佬的研究,得以让本次搭建顺利完成!
本篇文章可以转载,但须注明来源。
参考文献
Dogcraft (2020). 搭建Misskey——去中心化的社交网络(熟人茶馆). Available at: https://dogcraft.top/archives/145/. (Accessed: 6 Dec. 2022)
Johann150, Romanoff S. F., Johann150, Toromino & syuilo (2022). Misskey Setup and Installation Guide. Create your own Misskey instance – Manually. Available at: https://misskey-hub.net/en/docs/install/manual.html. (Accessed: 8 Dec. 2022)
Lala (2018). Misskey:一个日产开源SNS系统. Available at: https://lala.im/4291.html. (Accessed: 7 Dec. 2022)
QC 班长 (2022). PostgreSQL创建数据库报错ERROR: new encoding (UTF8) is incompatible with the encoding of the template datab. Available at: https://blog.csdn.net/qq_35624642/article/details/81985940. (Accessed: 5 Dec. 2022)
落溪残梦 (2022). Misskey12.108.1搭建的几个坑以及几个注意点. Available at: https://www.yateam.cc/archives/206. (Accessed: 6 Dec. 2022)
封面插图选自 加茂nasus. (2020). 陽春. Available at: https://www.pixiv.net/artworks/80636372.
Copyright secured by Digiprove © 2022 Never.