目录
建议直接在服务器上部署,不用在自己笔记本电脑本地部署后再去尝试,博主在这里踩了很多坑,下面介绍使用Docker Compose在服务器上构建MissKey项目的步骤以及注意事项!(ps:下面的指令,需一行一行执行,方便排错)
前提工作
一台安装了 Docker 和 Docker Compose的服务器
一个域名**(选定之后一定不要进行更换)**,并且该域名配置了DNS解析,建立了域名和服务器IP地址的映射
拉取docker库
bash
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
复制配置文件
cpA B:将A位置的文件复制一份到B位置,现在我们复制了三份配置文件,下面对文件的解释
bash
cp .config/docker_example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
cp ./compose_example.yml ./compose.yml
compose.yml
文件中的3000:3000,前者表示web端口,如果3000被占用了,可以更改其他的空闲端口号,后者为Misskey项目在docker容器中监听的端口,可以不用修改。特别值得注意的是,更改web端口号只需要更改这一个文件即可

default.yml
这里用自己准备的域名去更换example.tld/

在这份文件当中,你也可以进行数据库的配置,包括数据库名称、用户名和密码等

docker.env
如果你在default.yml中修改了数据库的名称、用户名和密码,在该份文件中,你也应该进行修改!建议不到万不得已,不去修改数据库的配置,我们秉承着多一事不如少一事的原则!

项目构建和镜像资源获取
bash
sudo docker compose build
使用这个指令之后,会进行项目的构建和所需镜像资源的下载,是一个边构建项目边拉取所需镜像的过程,第一次总体大概耗时10分钟上下,这取决于你的网速和服务器等多方面因素制约,如果出现了以下的图片,则表明你已经构建完成!(图片来源于开篇提及的参考帖子)

注意事项
1.如果在构建的过程中,进度条一直没有往下走,卡住了,你可以终止指令的执行,并重新执行sudo docker compose build指令,它不会重新从头开始构建,而是快速到达卡住的部分继续往下执行!这是由于在项目构建的过程中是存在着类似于缓存的机制!
2.如果在项目构建的过程中出现了,由于镜像资源拉取不下了,而终止项目构建进程的情况!可以使用docker命令去单独拉取哪个镜像资源,并重新构建项目,如此往复!直到项目构建完毕!
bash
sudo docker pull node:18-alpine #以Node.js的18-alpine版本为例
sudo docker images #查看镜像是否拉取成功
sudo docker compose build #重新构建项目
数据库初始化
bash
sudo docker compose run --rm web pnpm run init

数据库的初始化时间非常短,如果出现了上面这张图片(来源于开篇提及的参考帖子),则说明你已经数据库初始化成功了!
**特别提醒:**数据库初始化指令只能执行一次,如果你在使用了一段时间Misskey项目之后,重新执行了这条指令,可能有数据库重置的风险!
运行Misskey
bash
sudo docker compose up -d
项目成功运行之后就可以通过https://域名:端口号的形式,启动Misskey项目!在第一次使用Misskey项目的时候,需要进行初始化!这你可以根据自己的需求进行配置!

项目当中有许多可玩性的东西等你发掘!

项目Bug以及修复策略(持续更新ing)
如果你修改了本地代码,想使其在线上生效!需要执行以下步骤!
bash
sudo docker compose down #停止容器服务
sudo docker compose build #重新构建项目,这因为不是第一次构建,所以会快很多
sudo docker compose up -d #启动容器服务
头像图片上传失败

产生原因:项目没有对文件的读写权限
总体思路:停止容器服务➙修改权限➙重启容器服务
解决方案如下:



无法上传PDF等主流文件类型

产生原因:项目从代码层面对文件的上传类型进行了限制
解决方案:停止容器服务➙使用大模型对文件类型数组进行添加➙重新构建项目➙重启容器服务

我给大家打个样,添加了一个PDF文件类型~

停止容器服务➙重新构建项目➙重启容器服务
bash
sudo docker compose down
sudo docker compose build
sudo docker compose up -d

频道和页面的热门展示功能(待解决)
问题描述:当用户A发布频道之后,必须里面有帖子才能被其他用户所看见;当用户A发布页面之后,必须被至少一个其他用户点赞之后,才能够在页面的热门展示!