i would like to install fulltextsearch on Unraid seafile 13.022 pro-mc. I installed the Community App first and later updated to the pro version. Instructions on activating Search refer to the .env and yml file which I don’have due to the CA install (not via docker-compose).
I hope someone in a similar situation or a team member can help me find an alternative solution to activate search.
thank you!
Since Seafile version 13, the recommended search engine for the Pro edition is SeaSearch, which is much more lightweight than Elasticsearch. Because you are using the Unraid CA installation, you can manually set this up by adding the SeaSearch container and editing your configuration files directly.
Here are the steps to enable it:
1. Deploy the SeaSearch Container
In Unraid, go to the Docker tab and click Add Container. Configure it with these settings:
- Name:
seafile-seasearch - Repository:
seafileltd/seasearch:1.0-latest - Network Type: Bridge (or the same network your Seafile container is on)
- Fixed IP (Optional): If you use a custom docker network, ensure Seafile can reach this container by its name or IP.
- Port Mapping: Map host port
4080to container port4080. - Path Mapping: Create a path for
/opt/seasearch-data(e.g.,/mnt/user/appdata/seasearch).
2. Configure seafevents.conf
Locate your Seafile configuration files on your Unraid host (usually in /mnt/user/appdata/seafile/conf/). Edit seafevents.conf and add the following section:
[SEASEARCH]
enabled = true
seasearch_url = http://<seasearch-container-ip>:4080
# Your token is a base64 encoded 'username:password' string
seasearch_token = <your-base64-token>
interval = 10m
index_office_pdf = true
How to generate the token:
SeaSearch requires an admin account. If you haven’t set one yet via environment variables in the container template, you can use a default or generate a token using this command in the Unraid terminal:
echo -n 'admin:yourpassword' | base64
Then paste the resulting string into seasearch_token.
Note: If there is an existing [INDEX FILES] section pointing to Elasticsearch, set enabled = false within that section to avoid conflicts.
3. Restart and Index
- Restart your Seafile container from the Unraid Docker dashboard.
- Open the console for your Seafile container and run the following commands to start the initial indexing:
cd /opt/seafile/seafile-server-latest ./pro/pro.py search --clear ./pro/pro.py search --update
For more detailed information on SeaSearch configuration options, you can refer to the Seafile Admin Manual.
Dear Daniel, thank you very much for your welcome message and this wonderful help and instruction.
I am overwhelmed and extremely pleased to get this help from you personally. Let me express my admiration appreciation for you, your phantastic seafile product line and your philosophy behind all this. I am happy and proud of being a part of this great endeavor and community now. THANK YOU !
I will install the SeaSearch as soon as I find a little time. My path is /mnt/user/seafile/seafile/conf. Never used /opt/. I am not sure howto Create a path for /opt/seasearch-data (e.g., /mnt/user/appdata/seasearch)?
Hi again and good morning over there!
I managed to follow thru with everything as indicated but I don´t know if SeaSearch is running. In Seafile logs I only see SeaHub started, no SeaSearch started. Howto know if SeaSearch started and is indexing? in the log I only get This is a idle script (infinite loop) to keep container running.
The server load is not especially high.
in the seafevents.log I found:
[2026-05-31 18:42:33] [WARNING] root:86 Can not start seasearch file index updater: it is not enabled!
[2026-05-31 18:42:33] [WARNING] root:87 Can not start seasearch wiki index updater: it is not enabled!
The warnings in your seafevents.log indicate that the Seafile backend isn’t recognizing the SeaSearch configuration you added. This usually happens for one of a few reasons:
- Trailing Comments: There is a known issue where comments added to the end of a line in
seafevents.conf(likeinterval = 10m # some comment) can cause the configuration parser to fail or ignore the setting. Ensure your configuration lines have no text after the values. - Conflicting Indexers: Even if SeaSearch is enabled, you must explicitly disable the default Elasticsearch indexer. Check if you have an
[INDEX FILES]section and ensure it is set toenabled = false. - Section Header Typos: Double-check that the section header is exactly
[SEASEARCH](all caps, square brackets).
Please try updating your seafevents.conf to look exactly like this, ensuring there are no spaces or comments at the end of the lines:
[INDEX FILES]
enabled = false
[SEASEARCH]
enabled = true
seasearch_url = http://<seasearch-container-ip>:4080
seasearch_token = <your-base64-token>
interval = 10m
index_office_pdf = true
After saving the file, restart your Seafile container.
To verify if it’s working, you can manually trigger an index update from the Seafile container’s console:
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./pro/pro.py search --update
If the configuration is active, this command should start the indexing process. If it still says it’s not enabled, please check the seafevents.log again for any ValueError or parsing errors.
Regarding the “idle script (infinite loop)” message: that is actually normal for the SeaSearch container’s entrypoint—it just means the container has finished its startup routine and is staying alive to serve requests.
Supporting references:
thank you, Daniel. I had trailing spaces from formating into lines. Everything else seemed ok, just my onlyoffice again has the editing page greyed out. But that is another topic.
The output of the command you gave for checking if search is working exceeds my capacity. I will send in the next reply as the size is too big:
docker exec -it seafile bash
sh: 1: docker: not found
cd /opt/seafile/seafile-server-latest
./pro/pro.py search --update
Updating seasearch file index, this may take a while…
2026-06-01 22:20:55,808 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/blocks
2026-06-01 22:20:55,808 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/fs
2026-06-01 22:20:55,809 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/commits
2026-06-01 22:20:56,162 storage: using filesystem storage backend
Traceback (most recent call last):
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 788, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connection.py”, line 571, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 1448, in getresponse
response.begin()
File “/usr/lib/python3.12/http/client.py”, line 336, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 297, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/socket.py”, line 707, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/adapters.py”, line 644, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 842, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/util/retry.py”, line 498, in increment
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/util/util.py”, line 38, in reraise
raise value.with_traceback(tb)
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 788, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connection.py”, line 571, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 1448, in getresponse
response.begin()
File “/usr/lib/python3.12/http/client.py”, line 336, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 297, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/socket.py”, line 707, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.ProtocolError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “”, line 198, in _run_module_as_main
File “”, line 88, in _run_code
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/repo_file_index_local.py”, line 308, in
main()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/repo_file_index_local.py”, line 258, in main
args.func()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/repo_file_index_local.py”, line 167, in start_index_local
repo_status_file_index = RepoStatusIndex(seasearch_api, REPO_STATUS_FILE_INDEX_NAME)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/index_store/repo_status_index.py”, line 47, in init
self.create_index_if_missing()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/index_store/repo_status_index.py”, line 50, in create_index_if_missing
if not self.seasearch_api.check_index_mapping(self.index_name).get(‘is_exist’):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/utils/seasearch_api.py”, line 108, in check_index_mapping
response = requests.get(url, headers=self.headers, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/api.py”, line 73, in get
return request(“get”, url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/api.py”, line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/sessions.py”, line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/sessions.py”, line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/adapters.py”, line 659, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
Updating seasearch wiki index, this may take a while…
2026-06-01 22:20:56,394 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/blocks
2026-06-01 22:20:56,395 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/fs
2026-06-01 22:20:56,395 Load disk config: storage_dir=/opt/seafile/seafile-data/storage/commits
2026-06-01 22:20:56,562 storage: using filesystem storage backend
Traceback (most recent call last):
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 788, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connection.py”, line 571, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 1448, in getresponse
response.begin()
File “/usr/lib/python3.12/http/client.py”, line 336, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 297, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/socket.py”, line 707, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/adapters.py”, line 644, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 842, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/util/retry.py”, line 498, in increment
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/util/util.py”, line 38, in reraise
raise value.with_traceback(tb)
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 788, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connectionpool.py”, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/urllib3/connection.py”, line 571, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 1448, in getresponse
response.begin()
File “/usr/lib/python3.12/http/client.py”, line 336, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/http/client.py”, line 297, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.12/socket.py”, line 707, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.ProtocolError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
During handling of the above exception, another exception occurred: followed next answer
Traceback (most recent call last):
File “”, line 198, in _run_module_as_main
File “”, line 88, in _run_code
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/wiki_index_local.py”, line 294, in
main()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/wiki_index_local.py”, line 244, in main
args.func()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/script/wiki_index_local.py”, line 154, in start_index_local
wiki_status_index = WikiStatusIndex(seasearch_api, WIKI_STATUS_INDEX_NAME)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/index_store/wiki_status_index.py”, line 43, in init
self.create_index_if_missing()
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/index_store/wiki_status_index.py”, line 46, in create_index_if_missing
if not self.seasearch_api.check_index_mapping(self.index_name).get(‘is_exist’):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/pro/python/seafevents/seasearch/utils/seasearch_api.py”, line 108, in check_index_mapping
response = requests.get(url, headers=self.headers, timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/api.py”, line 73, in get
return request(“get”, url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/api.py”, line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/sessions.py”, line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/sessions.py”, line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/opt/seafile/seafile-pro-server-13.0.22/seahub/thirdpart/requests/adapters.py”, line 659, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
the greyed out edit page happens when VPN is active on my client laptop where I am editing.
The “Connection aborted” error (ConnectionResetError: [Errno 104] Connection reset by peer) encountered by the user indicates a networking failure between the Seafile container and the SeaSearch container. Specifically, the Seafile backend attempted to reach the SeaSearch API, but the connection was abruptly closed by the remote side or the network stack.
Analysis of the Error
The traceback shows the failure occurs in seasearch_api.py during the check_index_mapping call. This is the initial handshake where Seafile checks if the search index exists.
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
Potential Causes
- Incorrect
seasearch_url:
Inseafevents.conf, theseasearch_urlmust point to the reachable IP or container name of the SeaSearch instance. If the user followed the template literally (http://<seasearch-container-ip>:4080) without replacing the placeholder with the actual Unraid Docker IP or the container name, the connection will fail. - Docker Network Isolation:
On Unraid, if the Seafile container and theseafile-seasearchcontainer are on different Docker networks (e.g., one on “Bridge” and one on a custom “proxynet”), they may not be able to communicate via container names or internal IPs. - SeaSearch Container Not Ready:
The SeaSearch container might be running but not yet listening on port 4080, or it might be crashing immediately after a request is received. The user noted the log “This is a idle script (infinite loop),” which is normal, but it doesn’t guarantee the API service inside is healthy. - Firewall or Port Mapping:
If using the Host IP to connect, the Unraid firewall or an incorrect port mapping (mapping host 4080 to something other than 4080 inside the container) could cause the peer to reset the connection.
Recommended Troubleshooting Steps
- Verify Connectivity: Run a
curlcommand from inside the Seafile container to see if the SeaSearch API is reachable:
(Replacedocker exec -it seafile curl -v http://<seasearch-container-ip>:4080/<seasearch-container-ip>with the actual value used in the config). - Check SeaSearch Logs: Examine the logs of the
seafile-seasearchcontainer for any errors or “Panic” messages that occur when the indexing command is run. - Use Container Names: If both containers are on the same custom Docker network, use the container name in
seafevents.conf:seasearch_url = http://seafile-seasearch:4080 - Validate Token (unlikely the cause): Ensure the
seasearch_tokenis a valid Base64 string ofusername:password. While an auth error usually returns a401or403, some Go-based services may drop connections if the header is malformed.
thx Daniel, I am desperate. checked everything. worth mentioning my seafile container was automatically named seafile-13 and all my confs are in /mnt/user/seafile/seafile/conf.
Curl connection drop:
docker exec -it seafile-13 curl -v http://192.168.9.242:4080/
- Trying 192.168.9.242:4080…
- Connected to 192.168.9.242 (192.168.9.242) port 4080
GET / HTTP/1.1
Host: 192.168.9.242:4080
User-Agent: curl/8.5.0
Accept: /
- Recv failure: Connection reset by peer
- Closing connection
curl: (56) Recv failure: Connection reset by peer
also I want to mention: in /opt there is no seafile folder. Only an empty /opt/seasearch-data folder.
The fact that your /opt/seasearch-data folder is empty is the key to the problem. It indicates that the SeaSearch service has failed to initialize.
When the initialization is successful, you should see at least a data and a log directory inside that folder. Here is how to resolve this on Unraid:
1. Missing Initialization Variables
Because you are using the Unraid Community Apps (CA) install without a .env file, you must manually add the mandatory initialization variables to your SeaSearch container configuration in the Unraid Docker UI.
Ensure you have added the following as Variables:
INIT_SS_ADMIN_USER: (e.g., your admin email)INIT_SS_ADMIN_PASSWORD: (a strong password)SS_STORAGE_TYPE:disk(unless you are using S3)
Without these, the SeaSearch binary will not start the API service, leading to the “Connection reset by peer” error you saw earlier.
2. Verify Volume Mappings
If you are looking at /opt/seasearch-data on the Unraid host terminal, please double-check your Docker template mappings. Typically, on Unraid, these should point to a share, for example:
- Container Path:
/opt/seasearch-data→ Host Path:/mnt/user/appdata/seasearch-data
If the folder remains empty even after adding the variables and restarting, it may be a permissions issue. Unraid’s appdata usually requires specific permissions (often nobody:users).
3. Clarifying the Directory Structure
- In the SeaSearch Container: It is normal that there is no
/opt/seafilefolder. It only manages search data in/opt/seasearch-data. - In the Seafile Container: You should see
/opt/seafile(containing the server binaries) and/shared(where your config/logs are usually mapped).
4. Checking the Actual Service Log
The “idle script” message you see is just the container’s wrapper. To see why the search engine itself isn’t starting, look for the seasearch.log inside the container if it exists, or check the full output of:
docker logs seafile-seasearch
(Replace seafile-seasearch with the actual name of your search container). Look for any “Panic” or “Error” messages related to “ZincSearch” or “configuration”.
Reference: SeaSearch Configuration Guide
Dear Daniel, thank you so much for your help and patience. Still I did not succeed. After creating new password with the new environment variables, I recreated the token with this pair, but nothing. same errors. Folders sttay empty and I can´t locate the seafile-seasearch-latest folder.
Maybe I have to give up? Would it be a solution to reinstall seasearch via docker compose? Would it work with my CA seafile version? Or install the old Indexing version? I do not want to give up seafile asI already populated with a lot of files and finally got onlyoffice running, but without search it is useless. Maybe you have a script for a completely new installation for seafile, seasearch and onlyoffice working together well?
It sounds like you are very close, but there is a specific behavior of the SeaSearch container that is likely blocking you: The initialization process (using those environment variables) only runs once, the very first time the container starts.
If the container was started before the variables were correctly set, it may have created an empty or incomplete state that prevents it from trying to initialize again. To fix this and trigger a fresh setup, please follow these steps:
- Stop the SeaSearch container in your Unraid UI.
- Clear the data folder on your host: Using the Unraid terminal, delete everything inside the folder you mapped to
/opt/seasearch-data(e.g.,/mnt/user/appdata/seasearch-data/). This is necessary to force a “first run” state. - Verify Variables: Ensure
INIT_SS_ADMIN_USER,INIT_SS_ADMIN_PASSWORD, andSS_STORAGE_TYPE=diskare still present in your Unraid Docker template for the SeaSearch container. - Start the container: It should now see the empty folder and run the initialization script.
Regarding your other questions:
-
Reinstalling via Docker Compose: Yes, this is often more reliable than manual CA templates because it manages the network and environment variables automatically. Your current Seafile version will work perfectly with a compose-based SeaSearch as long as they can talk over the network.
-
Old Indexing Version: You can also try to use Elasticsearch.
Dear Daniel ! This was the crucial analysis and fix. SeafileSearch indexed and is working now!
You made me very happy ! I really appreciate your phantastic support and once again your phantastic Seafile products. THANK YOU!
That’s great news! I’m glad to hear that clearing the data folder and re-triggering the initialization process resolved the issue with SeaSearch.
To summarize for any other Unraid users: the SeaSearch container’s initialization (where it sets up the admin user and internal data structures) only runs once. If the container starts without the required environment variables (INIT_SS_ADMIN_USER, INIT_SS_ADMIN_PASSWORD, SS_STORAGE_TYPE), it may create an incomplete state. Deleting the contents of the host’s mapped seasearch-data folder forces the container to re-run the initialization script on the next start.