其实我曾经想用宝塔上的docker进行配置,但是奈何折腾半天就是有问题,便放弃了

misskey是个啥?

看板娘-蓝
一个去中心化开源社交平台啦,作者是日本人(似乎很喜欢二次元),界面很好看。
因此,每个Misskey间账号不互通,但是可以互相交互

界面图
界面很好看!

有兴趣可以去Misskey的官方实例注册个账号体验一下:https://misskey.xyz/ ,不需要邮箱之类的东西
我的一个实例: https://m.xn–8qvt52h.top/
此外,有一篇关于Misskey的介绍,写的很不错查看链接

材料

  1. 内存≥2G的limux服务器,不够的不用折腾了(此处使用Centos__
  2. 一个域名,必须要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.更新容器

  1. ~/misskey 下,运行
docker-compose pull
docker-compose up -d

请不要使用docker-compose stop来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

  1. 删除旧数据
docker system prune

要求确认时输入y并回车确认即可

  1. 进阶操作

例如我们可以编写一个脚本,配合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–糖菓·部落

Logo

秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

更多推荐