其实我曾经想用宝塔上的docker进行配置,但是奈何折腾半天就是有问题,便放弃了
misskey是个啥?
一个去中心化开源社交平台啦,作者是日本人(似乎很喜欢二次元),界面很好看。
因此,每个Misskey间账号不互通,但是可以互相交互
有兴趣可以去Misskey的官方实例注册个账号体验一下:https://misskey.xyz/ ,不需要邮箱之类的东西
我的一个实例: https://m.xn–8qvt52h.top/
此外,有一篇关于Misskey的介绍,写的很不错查看链接
材料
- 内存≥2G的limux服务器,不够的不用折腾了(此处使用Centos__
- 一个域名,必须要SSL(https),本文使用宝塔来获得SSL
正文
1.准备环境
安装一些必要软件
apt install curl git nginx -y
安装docker
bash <(curl -L -s https://get.docker.com)
这个官方指令能够自动安装docker,但是不会安装docker-compose,使用下方命令安装
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose && ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.安装misskey
2.1.配置docker设置
假设我们把misskey的docker镜像放在 ~/misskey 目录下
进入 ~/misskey ,参照以下样例新建 docker-compose.yml
文件( vim docker-compose.yml
)。一般来说,不需要改动
version: "3"
services:
web:
restart: always # 自动重启,请注意如果您对您的配置没有信心,请不要开启这个选项(把这一行注释即可),以避免进程崩溃反复重启耗费大量资源!
image: misskey/misskey:latest # 我们使用misskey提供的官方镜像
container_name: misskey_web # 容器名,就是个名字,方便辨认
links:
- db
- redis
ports:
- "127.0.0.1:3000:3000" #默认映射到3000端口上
networks:
- internal_network
- external_network
volumes:
- ./config:/misskey/.config:ro # 用于映射配置文件,请根据您的实际配置来决定文件夹名称,设定为只读即可
- ./files:/misskey/files # 用户上传到本地的文件,如果您一开始就接入外部存储(如wasabi或是AWS S3)您可以忽略这块配置
redis:
restart: always
image: redis:latest
container_name: misskey_redis
networks:
- internal_network
volumes:
- ./redis:/data # redis数据库的数据文件夹映射,创建后默认在 ./redis 文件夹中
db:
restart: always
image: postgres:12.2-alpine
container_name: misskey_db
networks:
- internal_network
env_file:
- ./config/docker.env # 需要使用配置文件中设置的 Docker 环境变量
volumes:
- ./db:/var/lib/postgresql/data # 主数据库的数据文件夹映射,创建后默认在 ./db 文件夹中
networks:
internal_network: # 内部网络
internal: true
external_network: # 外部网络
2.2.配置misskey
在 ~/misskey 创建目录 config
mkdir config
创建 default.yml
文件,该文件来自于 example.yml。源文件注释非常详细,且有很多功能,此教程只是为了让你运行起来misskey,所以删减了很多
内容如下,需要修改的地方已注明
# 修改成你的网站网址,一旦启用misskey,请勿更改
url: https://example.tld/
port: 3000
db:
host: db # 在docker环境下,此处应为db
port: 5432
db: misskey
# 数据库用户名和密码(需要修改)
user: example-misskey-user
pass: example-misskey-pass
redis:
host: redis # 在docker环境下,此处应为redis
port: 6379
id: 'aid'
创建docker.env
文件,用于记录环境变量。源文件来自于docker_example.env
修改example-misskey-pass
为你上方文件中的数据库密码;修改example-misskey-user
为你上方文件中的数据库用户名
POSTGRES_PASSWORD=example-misskey-pass
POSTGRES_USER=example-misskey-user
POSTGRES_DB=misskey
3.启动容器
回到~/misskey目录,初始化数据库
docker-compose run --rm web yarn run init
如果提示 yaml: line : mapping values are not allowed in this context 请检查配置文件里格式是否正确,我就在此死了几次…
启动容器
docker-compose up -d
此时我们还需要进行反向代理,此处使用宝塔更方便
不使用宝塔的话,可以参考 搭建一只Misskey实例–Candinya
添加一个站点,域名为你的网址,确保它已经解析到你的服务器!申请Let’s Encrypt证书,点击强制https
[warn]注意,Let’s Encrypt证书有效期3个月,请及时再次申请证书,否则网站无法再次访问。宝塔防火墙要放行端口3000[/warn]
配置以下反向代理,不出意外的话,就会在你的网址上看到Misskey啦!按照网页提示创建管理员即可
不知道为啥,在我一个原神服务器上,反向代理是不生效的…
可用 docker-compose stop
停止容器
4.更新容器
- 在 ~/misskey 下,运行
docker-compose pull
docker-compose up -d
请不要使用docker-compose stop来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
- 删除旧数据
docker system prune
要求确认时输入y并回车确认即可
- 进阶操作
例如我们可以编写一个脚本,配合crontab每天定时尝试拉取最新数据并更新;如果已经是最新版本了的话,那就无事发生
docker-compose -f /root/misskey/docker-compose.yml pull
docker-compose -f /root/misskey/docker-compose.yml up -d
docker system prune -f
参考资料
使用Docker最小化部署Misskey–Candinya–糖菓·部落
搭建一只Misskey实例–Candinya–糖菓·部落
更多推荐