This commit is contained in:
Junxiang Huang 2025-01-02 17:01:40 +08:00
parent 27f786ff62
commit 9a21cad7a6
3 changed files with 138 additions and 0 deletions

View File

@ -0,0 +1,52 @@
services:
seasearch:
image: ${SEASEARCH_IMAGE:-seafileltd/seasearch:latest}
container_name: seasearch
volumes:
- ${SS_DATA_PATH:-./data}:/opt/seasearch/data
ports:
- "4080:4080"
environment:
- ZINC_FIRST_ADMIN_USER=${INIT_SS_ADMIN_USER:-}
- ZINC_FIRST_ADMIN_PASSWORD=${INIT_SS_ADMIN_PASSWORD:-}
- GIN_MODE=${GIN_MODE:-release}
- ZINC_WAL_ENABLE=${SS_WAL_ENABLE:-true}
- ZINC_STORAGE_TYPE=${SS_STORAGE_TYPE:-}
- ZINC_SHARD_NUM=${SS_SHARD_NUM:-}
- ZINC_MAX_OBJ_CACHE_SIZE=${SS_MAX_OBJ_CACHE_SIZE:-}
- ZINC_S3_ACCESS_ID=${SS_S3_ACCESS_ID:-}
- ZINC_S3_USE_V4_SIGNATURE=${SS_S3_USE_V4_SIGNATURE:-}
- ZINC_S3_ACCESS_SECRET=${SS_S3_ACCESS_SECRET:-}
- ZINC_S3_ENDPOINT=${SS_S3_ENDPOINT:-}
- ZINC_S3_USE_HTTPS=${SS_S3_USE_HTTPS:-}
- ZINC_S3_PATH_STYLE_REQUEST=${SS_S3_PATH_STYLE_REQUEST:-}
- ZINC_S3_AWS_REGION=${SS_S3_AWS_REGION:-}
- ZINC_SERVER_MODE=${SS_SERVER_MODE:-}
- ZINC_CLUSTER_ID=${SS_CLUSTER_ID:-}
- ZINC_ETCD_USERNAME=${SS_ETCD_USERNAME:-}
- ZINC_ETCD_PASSWORD=${SS_ETCD_PASSWORD:-}
- ZINC_CLUSTER_PROXY_LOG_DIR=${SS_CLUSTER_PROXY_LOG_DIR:-/opt/seasearch/data/log}
- ZINC_CLUSTER_PROXY_HOST=${SS_CLUSTER_PROXY_HOST:-0.0.0.0}
- ZINC_CLUSTER_PROXY_PORT=${SS_CLUSTER_PROXY_PORT:-4082}
- ZINC_ETCD_ENDPOINTS=${SS_ETCD_ENDPOINTS:-127.0.0.1:2379}
- ZINC_ETCD_PREFIX=${SS_ETCD_PREFIX:-/zinc}
- ZINC_MAX_DOCUMENT_SIZE=${SS_MAX_DOCUMENT_SIZE:-1m}
- ZINC_CLUSTER_MANAGER_ADDR=${SS_CLUSTER_MANAGER_ADDR:-127.0.0.1:4081}
- ZINC_CLUSTER_MANAGER_LOG_DIR=${SS_CLUSTER_MANAGER_LOG_DIR:-/opt/seasearch/data/log}
- ZINC_CLUSTER_MANAGER_HOST=${SS_CLUSTER_MANAGER_HOST:-0.0.0.0}
- ZINC_CLUSTER_MANAGER_PORT=${SS_CLUSTER_MANAGER_PORT:-4081}
- ZINC_CLUSTER_MANAGER_ETCD_ENDPOINTS=${SS_CLUSTER_MANAGER_ETCD_ENDPOINTS:-127.0.0.1:2379}
- ZINC_CLUSTER_MANAGER_ETCD_PREFIX=${SS_CLUSTER_MANAGER_ETCD_PREFIX:-/zinc}
- ZINC_LOG_OUTPUT=${SS_LOG_OUTPUT:-true}
- ZINC_LOG_DIR=${SS_LOG_DIR:-/opt/seasearch/data/log}
- ZINC_LOG_LEVEL=${SS_LOG_LEVEL:-debug}
- ZINC_PLUGIN_GSE_ENABLE = ${SS_PLUGIN_GSE_ENABLE:-false}
- ZINC_PLUGIN_GSE_DICT_EMBED = ${SS_PLUGIN_GSE_DICT_EMBED:-}
- ZINC_PLUGIN_GSE_DICT_PATH = ${SS_PLUGIN_GSE_DICT_PATH:-}
networks:
- seafile-net
networks:
- seafile-net:
name: seafile-net

View File

@ -0,0 +1,85 @@
# Use SeaSearch as files indexer (Pro)
!!! success "New features"
[SeaSearch](https://haiwen.github.io/seasearch-docs/), a file indexer with more lightweight and efficiency than *Elasticsearch*, is supported from Seafile 12.
!!! note "For Seafile deploy from binary package"
We currently **only support Docker-based** deployment for SeaSearch Server, so this document describes the configuration with the situation of using Docker to deploy Seafile server.
If your Seafile Server deploy from binary package, please refer [here](../setup_binary/installation_pro.md#starting-seafile-server) to start or stop Seafile Server.
!!! tip "For Seafile cluster"
Theoretically, **at least** the backend node has to restart, if your Seafile server deploy in cluster mode, but we still suggest you configure and restart **all node** to make sure the consistency and synchronization in the cluster
## Stop Seafile Server
```sh
docker compose down
```
!!! tip
After shutdown Seafile server, we suggest you disable `elasticsearch` service **if it is not used by other services**. For [Seafile deploy in single node](./setup_pro_by_docker.md), you just need to remove or note whole section of `elasticsearch` in `seafile-server.yml`:
```yml
services:
... # no change
#elasticsearch: # note or remove
# ... # and it's contents
... # no change
```
## Download `seasearch.yml`
```sh
wget https://manual.seafile.com/12.0/docker/pro/seasearch.yml
```
## Modify `.env`
```sh
COMPOSE_FILE='...,seasearch.yml' # ... means other docker-compose files
SEASEARCH_IMAGE=seafileltd/seasearch:latest
SS_DATA_PATH=<persistent-volume-path-of-seasearch>
INIT_SS_ADMIN_USER=<admin-username>
INIT_SS_ADMIN_PASSWORD=<admin-password>
```
!!! tip
For other available variables in `.env`, please refer [SeaSearch confgurations document](https://haiwen.github.io/seasearch-docs/config/)
## Modify `seafevents.conf`
```conf
# if your SeaSearch server dose not deploy on the same host as Seafile, please replace `seasearch` to your SeaSearch host address
es_host = seasearch
es_port = 4080
```
## Restart Seafile Server
```sh
docker compose up -d
```
!!! success "You can browse SeaSearch services in [http://127.0.0.1:4080/](http://127.0.0.1:4080/)"
!!! danger "Important note"
By default, the SeaSearch server **will accept all connection** by listening `4080` port. We suggest you to set firewall to set and enable only the Seafile server can connect:
=== "SeaSearch is deployed on the same machine as Seafile"
1. Remove the exposed ports in the `seasearch.yml`
2. Set `es_host` to `seasearch` in `seafevents.conf`
=== "SeaSearch is deployed on a different machine with Seafile"
```sh
sudo iptables -A INPUT -p tcp -s <your seafile server host> --dport 4080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 4080 -j DROP
```

View File

@ -94,6 +94,7 @@ nav:
- OpenStack Swift Backend: setup/setup_with_swift.md
- Multiple Storage Backends: setup/setup_with_multiple_storage_backends.md
- Data migration: setup/migrate_backends_data.md
- Use SeaSearch as files indexer (Pro): setup/use_seasearch.md
- Seafile Docker autostart: setup/seafile_docker_autostart.md
- Deploy with an existing MySQL server: setup/setup_with_an_existing_mysql_server.md
- Use other reverse proxy: setup/use_other_reverse_proxy.md