每日分享20:cloudron安装的mastodon添加elastic search搜索

折腾了一下午,终于搞定了搜索的初步功能。至于要不要启用外部存储,我觉得可以等等,毕竟硬盘还有70个G够我挥霍,等到硬盘只有30个G的空间了,我再整外部存储。

解决过程:

1、用docker安装elastic search

# 新建文件夹,并进入
mkdir es && cd es
# 编辑docker compose文件
vim compose.yml

compose.yml文件的内容:

services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4
    container_name: mastodon-elasticsearch
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true"
      - "xpack.license.self_generated.type=basic"
      - "xpack.security.enabled=false"
      - "xpack.watcher.enabled=false"
      - "xpack.graph.enabled=false"
      - "xpack.ml.enabled=false"
      - "bootstrap.memory_lock=true"
      - "cluster.name=es-mastodon"
      - "discovery.type=single-node"
      - "thread_pool.write.queue_size=1000"
    volumes:
      - ./elasticsearch_data:/usr/share/elasticsearch/data
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    networks:
      - cloudron
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

networks:
  cloudron:
    external: true
# 启动docker容器
docker compose up -d

2、中间可能会涉及到的坑:

  • 文件夹权限问题:
# 更改es数据文件夹权限
chown -R 1000:1000 ./elasticsearch_data
  • 内核参数问题
#  使用 vim 编辑 /etc/sysctl.conf 文件
vim /etc/sysctl.conf

#  增加最大内存映射数量
vm.max_map_count=262144

#  使配置生效
sysctl -p

整完了,再运行以下命令,重建elastic search容器

# 重建elastic search容器
docker compose down && docker compose up -d

3、进入cloudron的mastodony应用terminal

# 编辑mastodon环境变量
vim .env.production

# 添加以下内容
ES_ENABLED=true
ES_HOST=mastodon-elasticsearch
ES_PORT=9200
ES_PRESET=single_node_cluster

# 强制保存退出
:wq!

紧接着在cloudron的mastodon应用页面关闭app,接着再启动app。

4、最后建立elastic search索引。

# 部署搜索索引
/app/code/bin/tootctl search deploy

5、参考资料