随着时间的推移,我自用的一个Misskey实例的数据库也来到了将近5GB的大小:
随之而来的问题就是搜索功能不太好用,在搜索的时候偶尔会占用非常高的CPU,另外搜索的速度也很一般。
不过好在Misskey在之前的版本中支持了Meilisearch,这样的话我们就可以把所有的内容都导入到Meilisearch中,也就可以解决上面遇到的问题了。
Misskey不像FireFish那样自带一个创建索引的功能,这里需要用到一个第三方的工具aminome:
https://github.com/dev-hato/aminome
[重要]请注意所有的外站(远程)内容是没有导入的,aminome只导入本地的内容。
我当前测试可用的环境配置如下:
Debian11 (Python3.9.2)、Debian12 (Python3.11.2)
Misskey 2024.3.1 (aid) (aidx)
Postgres 15
Meilisearch 1.6.1
我目前正在使用的compose配置:
version: '3.9'
services:
  web:
    image: misskey/misskey:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    ports:
      - "127.0.0.1:16888:3000"
    networks:
      - internal_network
      - external_network
    volumes:
      - ./files:/misskey/files
      - ./config:/misskey/.config:ro
  redis:
    image: redis:7-alpine
    restart: unless-stopped
    networks:
      - internal_network
    volumes:
      - ./redis:/data
    healthcheck:
      test: "redis-cli ping"
      interval: 5s
      retries: 20
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    networks:
      - internal_network
    environment:
      - 'POSTGRES_DB=misskey'
      - 'POSTGRES_USER=misskey'
      - 'POSTGRES_PASSWORD=hidden'
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
      interval: 5s
      retries: 20
networks:
  internal_network:
    internal: true
  external_network:
我们需要对这个compose文件进行修改,增加Meilisearch的配置:
...
  meilisearch:
    image: getmeili/meilisearch:v1.6.1
    restart: unless-stopped
    environment:
      - MEILI_NO_ANALYTICS=true
      - MEILI_ENV=production
      - MEILI_MASTER_KEY=setyourapikey // openssl rand -hex 16
    ports:
      - "127.0.0.1:7700:7700"
    networks:
      - internal_network
      - external_network // 添加到外部网络,否则即便配置了ports也无法暴露端口
    volumes:
      - ./meili_data:/meili_data
...
然后把Postgres容器的端口暴露出来:
...
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    networks:
      - internal_network
      - external_network // 添加到外部网络,否则即便配置了ports也无法暴露端口
    ports:
      - "127.0.0.1:5432:5432"
...
编辑Misskey的配置文件,添加Meilisearch的连接信息:
nano config/default.yml
示例配置:
... meilisearch: host: meilisearch port: 7700 apiKey: 'setyourapikey' ssl: false index: 'meows-lol' # scope: local ...
[备注1]注意index的格式,misskey的版本发布记录有介绍:https://misskey-hub.net/ja/docs/releases/#_13122
[备注2]scope可以修改为global,这样是搜索全部内容,包括外站(远程)内容。
重新启动:
docker compose down docker compose up -d
这样的话Meilisearch就配置完成了,但你会发现只能搜索新发布的内容,旧的内容是无法搜索到的。所以接下来我们还需要导入旧的内容到Meilisearch。首先我们需要安装Python环境:
apt -y update apt -y install python3-full python3-pip
克隆aminome的源码:
cd /opt git clone https://github.com/dev-hato/aminome.git cd aminome
创建Python虚拟环境并启用:
python3 -m venv aminome-env source aminome-env/bin/activate
安装依赖包:
pip install -r requirements.txt
编辑aminome.py:
nano aminome.py
配置Postgres的连接信息:
db = psycopg2.connect(
    host='127.0.0.1',
    user='misskey',
    password='hidden',
    database='misskey',
    port=5432,
    cursor_factory=psycopg2.extras.DictCursor
)
配置Meilisearch的连接信息:
api_key = "hidden"
index = "meows-lol"
url = f"http://127.0.0.1:7700/indexes/{index}---notes/documents?primaryKey=id"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}
运行:
python3 ./aminome.py
如果正常的话会有类似回显:
这样就把所有本地的内容导入到Meilisearch了。
[可选]导入完成后可以将Postgres和Meilisearch容器的外部网络删除:
...
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    networks:
      - internal_network
      - external_network 
    ports:
      - "127.0.0.1:5432:5432"
...
...
  meilisearch:
    image: getmeili/meilisearch:v1.6.1
    restart: unless-stopped
    environment:
      - MEILI_NO_ANALYTICS=true
      - MEILI_ENV=production
      - MEILI_MASTER_KEY=setyourapikey // openssl rand -hex 16
    ports:
      - "127.0.0.1:7700:7700"
    networks:
      - internal_network
      - external_network
    volumes:
      - ./meili_data:/meili_data
...
重新启动:
docker compose down docker compose up -d
 荒岛
荒岛


 
			










![陈一发歌曲合集[45G]-荒岛](https://lala.im/wp-content/uploads/2019/02/37809906_871038629751743-220x150.jpg)





没想到lala还在源源不断更新
大佬你好,我创建了misskey 但是上传图片不显示,是模糊隐藏的也无法裁剪
可能是这个原因:https://github.com/misskey-dev/misskey/pull/9560
试试这里面的解决办法:https://github.com/misskey-dev/misskey/issues/9564