Skip to content

Enable search and background tasks in a cluster

In the seafile cluster, only one server should run the background tasks, including:

  • indexing files for search
  • email notification
  • office documents converts service (Start from 9.0 version, office converts service is moved to a separate docker component)
  • LDAP sync
  • virus scan

Let's assume you have three nodes in your cluster: A, B, and C.

  • Node A is backend node that run background tasks.
  • Node B and C are frontend nodes that serving requests from clients.

cluster-nodes

Configuring Node A (the backend node)

If you following the steps on settings up a cluster, node B and node C should have already be configed as frontend node. You can copy the configuration of node B as a base for node A. Then do the following steps:

Since 9.0, ElasticSearch program is not part of Seafile package. You should deploy ElasticSearch service seperately. Then edit seafevents.conf, add the following lines:

[INDEX FILES]
enabled = true
es_host = <ip of elastic search service>
es_port = 9200
interval = 10m
highlight = fvh  # this is for improving the search speed

Edit seafile.conf to enable virus scan according to virus scan document

Configure Other Nodes

On nodes B and C, you need to:

Edit seafevents.conf, add the following lines:

[INDEX FILES]
enabled = true
es_host = <ip of elastic search service>
es_port = 9200

Start the background node

Type the following commands to start the background node (Note, one additional command seafile-background-tasks.sh is needed)

export CLUSTER_MODE=backend
./seafile.sh start
./seafile-background-tasks.sh start

To stop the background node, type:

./seafile-background-tasks.sh stop
./seafile.sh stop

You should also configure Seafile background tasks to start on system bootup. For systemd based OS, you can add /etc/systemd/system/seafile-background-tasks.service:

[Unit]
Description=Seafile Background Tasks Server
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/opt/seafile/seafile-server-latest/seafile-background-tasks.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile-background-tasks.sh stop
User=root
Group=root

[Install]
WantedBy=multi-user.target

Then enable this task in systemd:

systemctl enable seafile-background-tasks.service

The final configuration of the background node

Here is the summary of configurations at the background node that related to clustering setup.

For seafile.conf:

[cluster]
enabled = true

[memcached]
memcached_options = --SERVER=<you memcached server host> --POOL-MIN=10 --POOL-MAX=100

For seafevents.conf:

[INDEX FILES]
enabled = true
es_host = <ip of elastic search service>
es_port = 9200
interval = 10m
highlight = fvh  # this is for improving the search speed