For all containers running on my infra, seafile are the top usage when IDLE, the users are only me and my wife and this is my usage for the stack:
My log after a redeploy:
*** Running /etc/my_init.d/01_create_data_links.sh...
*** Booting runit daemon...
*** Runit started as PID 16
*** Running /scripts/enterpoint.sh...
2026-01-18 18:28:50 Waiting Nginx
nginx: [warn] conflicting server name "" on 0.0.0.0:80, ignored
2026-01-18 18:28:50 Nginx ready
2026-01-18 18:28:50 This is an idle script (infinite loop) to keep container running.
nginx: [warn] conflicting server name "" on 0.0.0.0:80, ignored
[2026-01-18 18:28:51] Skip running setup-seafile-mysql.py because there is existing seafile-data folder.
[01/18/2026 18:28:51][upgrade]: The container was recreated, start fix the media symlinks
mv: not replacing '/shared/seafile/seahub-data/avatars/default-non-register.jpg'
mv: not replacing '/shared/seafile/seahub-data/avatars/default.png'
mv: not replacing '/shared/seafile/seahub-data/avatars/groups'
[01/18/2026 18:28:51][upgrade]: Done
Starting seafile server, please wait ...
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(75): fileserver: web_token_expire_time = 3600
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(87): fileserver: max_index_processing_threads= 3
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(100): fileserver: fixed_block_size = 8388608
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(112): fileserver: max_indexing_threads = 1
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(125): fileserver: max_upload_size = -1
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(140): fileserver: put_head_commit_request_timeout = 10
[seaf-server] [2026-01-18 18:28:51] [INFO] seafile-session.c(152): fileserver: skip_block_hash = 0
[seaf-server] [2026-01-18 18:28:51] [INFO] ../common/seaf-utils.c(572): Use database Mysql
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(243): fileserver: worker_threads = 10
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(256): fileserver: backlog = 32
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(267): fileserver: verify_client_blocks = 1
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(289): fileserver: cluster_shared_temp_file_mode = 600
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(336): fileserver: check_virus_on_web_upload = 0
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(362): fileserver: enable_async_indexing = 0
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(374): fileserver: async_indexing_threshold = 700
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(386): fileserver: fs_id_list_request_timeout = 300
[seaf-server] [2026-01-18 18:28:51] [INFO] http-server.c(399): fileserver: max_sync_file_count = 100000
[seaf-server] [2026-01-18 18:28:51] [WARNING] ../common/license.c(716): License file /opt/seafile/seafile-license.txt does not exist, allow at most 3 trial users
License file /opt/seafile/seafile-license.txt does not exist, allow at most 3 trial users
[seaf-server] [2026-01-18 18:28:51] [INFO] filelock-mgr.c(1397): Cleaning expired file locks.
[2026-01-18 18:28:53] Start Monitor
[2026-01-18 18:28:53] Start fileserver
[fileserver] [2026-01-18 18:28:53] [INFO] use the default log level: info
[fileserver] [2026-01-18 18:28:53] [INFO] Seafile file server started.
Seafile server started
Done.
[2026-01-18 18:28:54] Start seafevents.main
Starting seahub at port 8000 ...
WARNING:root:Memcached has not been set up
[2026-01-18 18:28:55] Start wsgidav.server.server_cli
WARNING:root:Memcached has not been set up
Running without configuration file.
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.dc.seahub_db:19 Init seahub database...
[seafdav] [2026-01-18 18:28:56] [WARNING] wsgidav.dc.seahub_db:27 Failed to init seahub db: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'.
[seafdav] [2026-01-18 18:28:56] [WARNING] wsgidav.wsgidav_app:271 App wsgidav.mw.cors.Cors(None).is_disabled() returned True: skipping.
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:280 WsgiDAV/4.3.0 Python/3.12.3 Linux-6.8.0-83-generic-x86_64-with-glibc2.39
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:294 Lock manager: LockManager(LockStorageDict)
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:295 Property manager: None
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:296 Domain controller: SeafileDomainController()
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:306 Registered DAV providers by route:
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:316 - '/:dir_browser': FilesystemProvider for path '/opt/seafile/seafile-pro-server-13.0.15/seahub/thirdpart/wsgidav/dir_browser/htdocs' (Read-Only)
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav.wsgidav_app:316 - '/webdav': SeafileProvider for Seafile (Read-Write)
[seafdav] [2026-01-18 18:28:56] [WARNING] wsgidav.wsgidav_app:319 Basic authentication is enabled: It is highly recommended to enable SSL.
[seafdav] [2026-01-18 18:28:56] [INFO] wsgidav:720 Running WsgiDAV/4.3.0 gunicorn/23.0.0 Python 3.12.3 ...
[2026-01-18 18:28:56 +0100] [182] [INFO] Starting gunicorn 23.0.0
[2026-01-18 18:28:56 +0100] [182] [INFO] Listening at: http://0.0.0.0:83 (182)
[2026-01-18 18:28:56 +0100] [182] [INFO] Using worker: gthread
[2026-01-18 18:28:56 +0100] [185] [INFO] Booting worker with pid: 185
INFO:virus_scan:[virus_scan] scan_command option is not found in seafile.conf, disable virus scan.
WARNING:root:Can not start work weixin notice sender: it is not enabled!
WARNING:root:Can not start ldap syncer: it is not enabled!
WARNING:root:Can not start virus scanner: it is not enabled!
WARNING:root:Can not start content scanner: it is not enabled!
WARNING:root:Can not scan repo old files auto del days: it is not enabled!
WARNING:root:Can not start seasearch file index updater: it is not enabled!
WARNING:root:Can not start seasearch wiki index updater: it is not enabled!
Seahub is started
Done.
My docker compose:
services:
seafile:
image: seafileltd/seafile-pro-mc:13.0-latest
container_name: app-drive
env_file: ../seafile/.env
deploy:
resources:
limits:
cpus: '2.00'
memory: 2G
logging:
driver: "json-file"
options:
mode: "non-blocking"
max-size: "1m"
max-file: "3"
ports:
- 82:80
- 83:83 # webdav
volumes:
- /data/docker/seafile/data:/shared
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
networks:
- seafile
- seafile-db
labels:
wud.watch: false
restart: unless-stopped
db:
image: mariadb:11.4
container_name: db-mariadb-drive
command:
- '--log-warnings=0'
- '--innodb_use_native_aio=0'
env_file: ../seafile/.db.env
deploy:
resources:
limits:
cpus: '2.00'
memory: 4G
logging:
driver: "json-file"
options:
mode: "non-blocking"
max-size: "1m"
max-file: "3"
networks:
- seafile-db
volumes:
- /data/docker/seafile/db:/var/lib/mysql
healthcheck:
test: [
"CMD",
"healthcheck.sh",
"--connect",
"--innodb_initialized"
]
start_period: 10s
interval: 10s
timeout: 10s
retries: 100
labels:
wud.watch: false
restart: unless-stopped
redis:
image: redis:7
container_name: db-redis-seafile
deploy:
resources:
limits:
cpus: '2.00'
memory: 256M
logging:
driver: "json-file"
options:
mode: "non-blocking"
max-size: "1m"
max-file: "3"
networks:
- seafile-db
volumes:
- /data/docker/seafile/redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 10s
retries: 10
labels:
wud.watch: false
restart: unless-stopped
networks:
seafile:
name: seafile
seafile-db:
name: seafile-db
My .env:
TIME_ZONE=Europe/Rome
JWT_PRIVATE_KEY=REDACTED
SITE_ROOT=/
NON_ROOT=false
SEAF_SERVER_STORAGE_TYPE=disk
SEAFILE_LOG_TO_STDOUT=true
ENABLE_SEADOC=false
ENABLE_NOTIFICATION_SERVER=false
## Database
SEAFILE_MYSQL_DB_HOST=db
SEAFILE_MYSQL_DB_USER=REDACTED
SEAFILE_MYSQL_DB_PASSWORD=REDACTED
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=REDACTED
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=REDACTED
## Scheme
SEAFILE_SERVER_HOSTNAME=REDACTED
SEAFILE_SERVER_PROTOCOL=https
# redis
CACHE_PROVIDER=redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
For instance, this is all docker on the same VM:
3 hours window:
24 hours window:
7 days:
30 days:
There something that I can do to reduce the CPU usage?






