乐呵呵、欢的博客

lehhair's Blog

如何部署一个自己的misskey实例

243
2023-09-15

如何部署一个misskey实例以及注意事项

一、官网介绍

misskey的特点:

  1. 开源:Misskey 是一个开源的项目,任何人都可以自由使用,也可以贡献自己的一份力量来修补源码
  2. 分布式:Misskey 是一个去中心化的分布式社交平台,不同服务器的 Misskey 实例可以连结在一起,共享帖子。
  3. 功能强大:Misskey 拥有多种独特功能,新手可以快速上手,开发者可以开发更多进阶功能。
  4. 高度自定化:Misskey 拥有高度可自定义的前段页面,可以制作自己喜欢的布局和主题。

二、部署misskey

注意事项

  1. 确保 docker 和 docker-compose 已经安装
  2. 在部署之前想好域名,一旦部署完成,域名就不能更改了

正式安装

将 Misskey 克隆至本地并同步 master

cd /home
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master

创建配置文件

cp .config/docker_example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
cp ./docker-compose.yml.example ./docker-compose.yml

修改配置文件

一般来说,只需要修改 .config/default.yml 文件即可,文件内有详细的注释。
这里修改的是docker-compose.yml文件

version: "3"

services:
  web:
    build: .
    restart: always
    links:
      - db
      - redis
#     - meilisearch
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    ports:
      - "127.0.0.1:外部端口:容器内部端口"
    networks:
      - internal_network
      - external_network
    volumes:
      - ./files:/misskey/files
      - ./.config:/misskey/.config:ro

  redis:
    restart: always
    image: redis:7-alpine
    ports:
      - "127.0.0.1:6379:6379"
    networks:
      - internal_network
      - external_network
    volumes:
      - ./redis:/data
    healthcheck:
      test: "redis-cli ping"
      interval: 5s
      retries: 20

  db:
    restart: always
    image: postgres:15-alpine
    ports:
      - "127.0.0.1:5432:5432"
    networks:
      - internal_network
      - external_network
    env_file:
      - .config/docker.env
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
      interval: 5s
      retries: 20

#  meilisearch:
#    restart: always
#    image: getmeili/meilisearch:v1.1.1
#    environment:
#      - MEILI_NO_ANALYTICS=true
#      - MEILI_ENV=production
#    env_file:
#      - .config/meilisearch.env
#    networks:
#      - internal_network
#    volumes:
#      - ./meili_data:/meili_data

networks:
  internal_network:
    internal: true
  external_network:

注意:这里的端口设置要和default.yml文件中的端口设置一致,外部端口则是你自定义的

编译、初始化和启动

sudo docker compose build
sudo docker compose run --rm web pnpm run init
sudo docker compose up -d

到这里,misskey就部署完成了,但是还不能直接使用,还需要配置nginx,这里就不再赘述了

三、misskey的使用

接入中继服务器

这里就不直接放出地址了,自行谷歌

清理冗余数据

在接入中继后,服务器上会产生大量的冗余数据,这些数据会占用大量的磁盘空间,所以需要定期清理

我找了很久,最后找到了一个脚本mkcl,可以定期清理冗余数据

cd /home/misskey
git clone https://github.com/ybw2016v/mkcl.git
cd mkcl
pip3 install -r requirements.txt
python3 mkcl.py -d 5 -c /home/misskey/.config/default.yml -s 2020-12-01

这里 -d 参数的意思是结束时间距离现在的天数,-s 参数的意思是开始时间,这里的时间格式是年-月-日

由于是使用容器部署的,所以脚本运行其实是不能直接使用default.yml文件的,因为端口号不一样,所以需要修改一下,端口号可以改为前面docker-compose.yml文件中的外部端口号。可以拷贝一份default.yml文件,命名为cl.yml,然后修改端口号,然后将脚本中的default.yml文件改为新的文件名即可

最后

非常感谢@Dogcraft@糖菓·部落两位大佬的帮助,让我也可以有一个属于自己的misskey