注意

Misskey 在这个版本(12.119.0)的更新中加入了 nsfwjs,其中依赖了 TensorFlow,所以在部署时构建所耗费时间和性能消耗会比较大,建议使用配置至少为 2 核 2G 的服务器进行部署。

本篇教程基于 官方文档 翻译而来,并加入了一些调整。

拉取模板

1
2
3
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master

设定

使用下面列出的命令创建你的实例配置文件。

1
2
cp .config/example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env

并使用你喜欢的文本编辑器对你刚才创建的两个配置文件进行编辑。

正常部署建议更改的内容是:

.config/default.yml

根据 糖喵的部署教程,在两处数据库的 host 应该不是 localhost,而是 dbredis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
db:
host: db # 第 37 行

redis:
host: redis # 第 58 行

url: https://example.tld/ # 第 9 行,你的实例域名

pass: example-misskey-pass # 第 45 行,pgsql数据库密码,如果改了建议也把上面那行数据库用户名也改了

# 以下是推荐配置,如果你准备在硬盘不大的服务器上搭建个人实例的话,强烈建议开启。

# Proxy remote files (default: false)
proxyRemoteFiles: true # 第 139 行,注释去掉

# Sign to ActivityPub GET request (default: false)
signToActivityPubGet: true # 第 142 行,注释去掉

.config/docker.env

1
2
3
4
# db settings
POSTGRES_PASSWORD=example-misskey-pass #跟刚才那个文件第 45 行对应
POSTGRES_USER=example-misskey-user #跟刚才那个文件第 44 行对应
POSTGRES_DB=misskey

构建容器

按需求调整 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
version: "3"

services:
web:
build: .
restart: always # 可用选项 always, unless-stopped, no 建议设置成 on-failure:3,遇到故障自动重启。除非你对你的服务器性能有自信那就 always 吧。
links:
- db
- redis
# - es
ports:
- "3000:3000"
networks:
- internal_network
- external_network
volumes:
- ./files:/misskey/files
- ./.config:/misskey/.config:ro

redis:
restart: always # 同上
image: redis:4.0-alpine
networks:
- internal_network
volumes:
- ./redis:/data

db:
restart: always # 同上
image: postgres:12.2-alpine
networks:
- internal_network
env_file:
- .config/docker.env
volumes:
- ./db:/var/lib/postgresql/data

# es:
# restart: always
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
# environment:
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# - "TAKE_FILE_OWNERSHIP=111"
# networks:
# - internal_network
# volumes:
# - ./elasticsearch:/usr/share/elasticsearch/data

networks:
internal_network:
internal: true
external_network:

确认上面内容正确无误,然后构建

1
docker-compose run --rm web yarn run init

运行

1
docker-compose up -d

若你没有在 docker-compose.yml 中更改端口,那么网站应该运行在 http://localhost:3000

设置反代或者直接通过端口连接到你的实例,根据 Misskey 的提示创建第一个管理员与成员账户。

更新

手动更新

1
2
docker-compose pull
docker-compose up -d

或者使用 crontab 定时执行以下脚本来自动更新。

1
2
3
docker-compose -f /root/misskey/docker-compose.yml pull
docker-compose -f /root/misskey/docker-compose.yml up -d
docker system prune -f

个人设置优化

关闭媒体缓存

媒体缓存默认开启,你的实例会缓存所有上传,以及其他联邦宇宙发出中实例传来的图片,这会占用大量的硬盘空间。如果你的硬盘空间不足,那么你应该关闭媒体缓存。

关闭方法是:使用你实例的管理员账号登陆实例,在左侧边栏找到控制面板,点击进入,然后在二级右侧边栏找到常规设置,开关在页面下方,如图所示,将其关闭即可。