使用 Docker 部署 Misskey 实例
注意
Misskey 在这个版本(12.119.0
)的更新中加入了 nsfwjs,其中依赖了 TensorFlow,所以在部署时构建所耗费时间和性能消耗会比较大,建议使用配置至少为 2 核 2G 的服务器进行部署。
本篇教程基于 官方文档 翻译而来,并加入了一些调整。
拉取模板
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
设定
使用下面列出的命令创建你的实例配置文件。
cp .config/example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
并使用你喜欢的文本编辑器对你刚才创建的两个配置文件进行编辑。
正常部署建议更改的内容是:
.config/default.yml
根据 糖喵的部署教程,在两处数据库的 host 应该不是 localhost
,而是 db
和 redis
。
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
# db settings
POSTGRES_PASSWORD=example-misskey-pass #跟刚才那个文件第 45 行对应
POSTGRES_USER=example-misskey-user #跟刚才那个文件第 44 行对应
POSTGRES_DB=misskey
构建容器
按需求调整 docker-compose.yml
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:
确认上面内容正确无误,然后构建
docker-compose run --rm web yarn run init
运行
docker-compose up -d
若你没有在 docker-compose.yml
中更改端口,那么网站应该运行在 http://localhost:3000
。
设置反代或者直接通过端口连接到你的实例,根据 Misskey 的提示创建第一个管理员与成员账户。
更新
手动更新
docker-compose pull
docker-compose up -d
或者使用 crontab 定时执行以下脚本来自动更新。
docker-compose -f /root/misskey/docker-compose.yml pull
docker-compose -f /root/misskey/docker-compose.yml up -d
docker system prune -f
个人设置优化
关闭媒体缓存
媒体缓存默认开启,你的实例会缓存所有上传,以及其他联邦宇宙发出中实例传来的图片,这会占用大量的硬盘空间。如果你的硬盘空间不足,那么你应该关闭媒体缓存。
关闭方法是:使用你实例的管理员账号登陆实例,在左侧边栏找到控制面板,点击进入,然后在二级右侧边栏找到常规设置,开关在页面下方,如图所示,将其关闭即可。