Appearance
全文搜索
Mastodon 的全文搜索通过 Elasticsearch 实现。 UnivTown Mastodon 对使用的全文搜索方案添加了中文优化。
安装 Elasticsearch
从容器镜像安装
若使用 Docker Compose,在配置文件中取消 es 服务的注释,并将使用的镜像改为 UnivTown 的预购建的 Elasticsearch 镜像或其它装有 analysis-ik 和 analysis-stconvert 的镜像(需要在 7.0 以上)
若使用 Podman Quadlet,可以参考以下配置:
ini
[Unit]
Description=Mastodon Elasticsearch
After=network-online.target
Wants=network-online.target
[Container]
ContainerName=es
Image=git.univ.town/univtown/elasticsearch:9
Network=external_network
Network=internal_network
Volume=es-data.volume:/usr/share/elasticsearch/data
PublishPort=127.0.0.1:9200:9200
Environment=ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true
Environment=xpack.license.self_generated.type=basic
Environment=xpack.security.enabled=false
Environment=xpack.watcher.enabled=false
Environment=xpack.graph.enabled=false
Environment=xpack.ml.enabled=false
Environment=bootstrap.memory_lock=true
Environment=cluster.name=es-mastodon
Environment=discovery.type=single-node
Environment=thread_pool.write.queue_size=1000
Ulimit=memlock=-1:-1
Ulimit=nofile=65536:65536
HealthCmd=/bin/sh -lc "curl --silent --fail localhost:9200/_cluster/health >/dev/null"
[Service]
Restart=always
[Install]
WantedBy=default.targetini
[Unit]
Description=Mastodon Elasticsearch data
[Volume]
Driver=local随后重载配置并尝试启动。如果启动失败,参照报错和启动检查文档进行核对修改。
手动安装
假设我们使用 Debian Trixie。
在支持矩阵中检查自己使用的操作系统和发行版是否受到支持
导入 Elastic APT 源的 GPG 公钥
bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg此处为方便起见列出公钥,可在 Elasticsearch 官方文档自行核对
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4- 安装前置依赖
bash
sudo apt install apt-transport-https- 导入 Elastic APT 源
bash
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-9.x.list- 安装 Elasticsearch
bash
sudo apt update && sudo apt install elasticsearch在 Mastodon 中配置 Elasticsearch
编辑 Mastodon 的环境变量配置文件:
ini
ES_ENABLED=true
# Mastodon 为容器安装的,需要填写 Elasticsearch 相对于容器的地址
ES_HOST=localhost
ES_PORT=9200
# single_node_cluster - 单节点无冗余的集群,small_cluster - 在节点数少于 6 个时,会配置 1 个副本,large_cluster - 在节点数多于 6 个时,会视情况配置更多分片
ES_PRESET= # single_node_cluster, small_cluster or large_cluster
# 如果启用了验证,此处需要填写 Mastodon 能够使用的 Elasticsearch 账户和密码
# ES_USER=
# ES_PASS=
# 如果配置了相关前缀规则,需要一并在此填写
# ES_PREFIX=随后,重启所有 Mastodon 服务(若为容器安装,可能需要重新创建容器),以 Mastodon 服务用户身份,在 Mastodon 目录执行 RAILS_ENV=production bin/tootctl search deploy,若无报错则配置成功。