Skip to content

mongo DB premission issus on WSL 2 during initial setup #400

@TKMYing

Description

@TKMYing

Steps to Reproduce

New deployment with overleaf-toolkit using WSL 2 Ubuntu+Docker Desktop for Windows
My user is the administrator of windows.

  1. clone overleaf-toolkit into the directory and rename it.
  2. C:\srv\Overleaf>wsl
:/mnt/c/srv/Overleaf$ tree -L 1
.
├── CHANGELOG.md
├── LICENSE
├── README.md
├── bin
├── config
├── data
├── doc
└── lib
  1. :/mnt/c/srv/Overleaf$ ./bin/init
  2. :/mnt/c/srv/Overleaf$ ./bin/up

Expected Behaviour

I have experience in using docker-compose.yml to self-host overleaf.
I expect the new deployment work the same as deploying with docker-compose.yml,
which is compose stack up with all 3 containers also up: mongo, redis, sharelatex

Observed Behaviour

Only mongo 6.0 is showing in the compose stack in docker desktop, shown but seems keeps up and stop.
other containers did't show as expected.

Context

Compose stack did not work as expected, tried to acqiure logs of mongo DB by docker logs mongo

Technical Info

  • Windows 10 22H2 10.0.19045.6456
  • Docker version 28.5.1, build e180ab8
  • Ubuntu 24.04.3 LTS
C:\srv\Overleaf>wsl -l
适用于 Linux 的 Windows 子系统分发:
Ubuntu (默认值)
docker-desktop
Logs of mongo DB↓

:/mnt/c/srv/Overleaf$ docker logs mongo
{"t":{"$date":"2025-10-24T14:22:25.013+00:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"-","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --s
slDisabledProtocols 'none'"}
{"t":{"$date":"2025-10-24T14:22:25.016+00:00"},"s":"I",  "c":"NETWORK",  "id":4915701, "ctx":"-","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalCli
ent":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInter
nalClient":true}}}
{"t":{"$date":"2025-10-24T14:22:25.018+00:00"},"s":"I",  "c":"NETWORK",  "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, s
et tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"Te
nantMigrationDonorService","namespace":"config.tenantMigrationDonors"}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"Te
nantMigrationRecipientService","namespace":"config.tenantMigrationRecipients"}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"REPL",     "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"Sh
ardSplitDonorService","namespace":"config.tenantSplitDonors"}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"CONTROL",  "id":5945603, "ctx":"main","msg":"Multi threading initialized"}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"CONTROL",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":1,"port":27017,"dbPath":
"/data/db","architecture":"64-bit","host":"b37e1ba3e8e5"}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"CONTROL",  "id":23403,   "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"6.0.26","git
Version":"0c4ec4b6005f75582ce208fc800f09f561b6c2e8","openSSLVersion":"OpenSSL 3.0.2 15 Mar 2022","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2204","
distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"CONTROL",  "id":51765,   "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version
":"22.04"}}}
{"t":{"$date":"2025-10-24T14:22:25.020+00:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"
bindIp":"*"},"replication":{"replSet":"overleaf"}}}}
{"t":{"$date":"2025-10-24T14:22:25.026+00:00"},"s":"I",  "c":"STORAGE",  "id":22315,   "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":"create,cache_size=
15511M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,remove=true,path=journal,compressor=snappy),builtin_ex
tension_config=(zstd=(compression_level=6)),file_manager=(close_idle_time=600,close_scan_interval=10,close_handle_minimum=2000),statistics_log=(wait=0),json_output=(error,m
essage),verbose=[recovery_progress:1,checkpoint_progress:1,compact_progress:1,backup:0,checkpoint:0,compact:0,evict:0,history_store:0,recovery:0,rts:0,salvage:0,tiered:0,ti
mestamp:0,transaction:0,verify:0,log:0],"}}
{"t":{"$date":"2025-10-24T14:22:25.200+00:00"},"s":"E",  "c":"WT",       "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error message","attr":{"error":1,"message":{"
ts_sec":1761315745,"ts_usec":199558,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_DEFAULT","category_id":9,"verbose_level":"ERROR","verbose_le
vel_id":-3,"msg":"__posix_open_file:812:/data/db/WiredTiger.wt: handle-open: open","error_str":"Operation not permitted","error_code":1}}}
{"t":{"$date":"2025-10-24T14:22:25.216+00:00"},"s":"E",  "c":"WT",       "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error message","attr":{"error":17,"message":{
"ts_sec":1761315745,"ts_usec":216473,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_DEFAULT","category_id":9,"verbose_level":"ERROR","verbose_l
evel_id":-3,"msg":"__posix_open_file:812:/data/db/WiredTiger.wt: handle-open: open","error_str":"File exists","error_code":17}}}
{"t":{"$date":"2025-10-24T14:22:25.219+00:00"},"s":"I",  "c":"WT",       "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":{"ts_sec":17613157
45,"ts_usec":218987,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_BLOCK","category_id":3,"verbose_level":"NOTICE","verbose_level_id":-1,"msg":
"unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.1"}}}
{"t":{"$date":"2025-10-24T14:22:25.220+00:00"},"s":"E",  "c":"WT",       "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error message","attr":{"error":1,"message":{"
ts_sec":1761315745,"ts_usec":220548,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_DEFAULT","category_id":9,"verbose_level":"ERROR","verbose_le
vel_id":-3,"msg":"__posix_open_file:812:/data/db/WiredTiger.wt: handle-open: open","error_str":"Operation not permitted","error_code":1}}}
{"t":{"$date":"2025-10-24T14:22:25.235+00:00"},"s":"E",  "c":"WT",       "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error message","attr":{"error":17,"message":{
"ts_sec":1761315745,"ts_usec":235436,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_DEFAULT","category_id":9,"verbose_level":"ERROR","verbose_l
evel_id":-3,"msg":"__posix_open_file:812:/data/db/WiredTiger.wt: handle-open: open","error_str":"File exists","error_code":17}}}
{"t":{"$date":"2025-10-24T14:22:25.238+00:00"},"s":"I",  "c":"WT",       "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":{"ts_sec":17613157
45,"ts_usec":238437,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_BLOCK","category_id":3,"verbose_level":"NOTICE","verbose_level_id":-1,"msg":
"unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.2"}}}
{"t":{"$date":"2025-10-24T14:22:25.239+00:00"},"s":"E",  "c":"WT",       "id":22435,   "ctx":"initandlisten","msg":"WiredTiger error message","attr":{"error":1,"message":{"
ts_sec":1761315745,"ts_usec":239837,"thread":"1:0x736e61c5acc0","session_name":"connection","category":"WT_VERB_DEFAULT","category_id":9,"verbose_level":"ERROR","verbose_le
vel_id":-3,"msg":"__posix_open_file:812:/data/db/WiredTiger.wt: handle-open: open","error_str":"Operation not permitted","error_code":1}}}
{"t":{"$date":"2025-10-24T14:22:25.242+00:00"},"s":"W",  "c":"STORAGE",  "id":22347,   "ctx":"initandlisten","msg":"Failed to start up WiredTiger under any compatibility ve
rsion. This may be due to an unsupported upgrade or downgrade."}
{"t":{"$date":"2025-10-24T14:22:25.242+00:00"},"s":"F",  "c":"STORAGE",  "id":28595,   "ctx":"initandlisten","msg":"Terminating.","attr":{"reason":"1: Operation not permitt
ed"}}
{"t":{"$date":"2025-10-24T14:22:25.242+00:00"},"s":"F",  "c":"ASSERT",   "id":23091,   "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":28595,"file":"src/mongo
/db/storage/wiredtiger/wiredtiger_kv_engine.cpp","line":708}}
{"t":{"$date":"2025-10-24T14:22:25.242+00:00"},"s":"F",  "c":"ASSERT",   "id":23092,   "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}
{"t":{"$date":"2025-10-24T14:22:25.816+00:00"},"s":"I",  "c":"NETWORK",  "id":4915701, "ctx":"-","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalCli
ent":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInter
nalClient":true}}}

Analysis

My kimiAI gave me the key infomation as follows:

{"t":{"$date":"2025-10-24T14:22:26.959+00:00"},"s":"F", "c":"STORAGE", "id":28595, "ctx":"initandlisten","msg":"Terminating.","attr":{"reason":"1: Operation not permitted"}}
{"t":{"$date":"2025-10-24T14:22:26.959+00:00"},"s":"F", "c":"ASSERT", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":28595,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp","line":708}}
{"t":{"$date":"2025-10-24T14:22:28.022+00:00"},"s":"W", "c":"STORAGE", "id":22347, "ctx":"initandlisten","msg":"Failed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade."}}

MongoDB 6’s WiredTiger engine requires chmod and mmap(MAP_SHARED) on its data files. When the data directory is mounted from Windows via WSL 2’s 9P filesystem (/mnt/c/...), these operations return “Operation not permitted”, causing the daemon to abort. Placing the directory inside WSL’s native ext4 (/home/...) avoids the 9P limitation and lets WiredTiger start normally.

Solution

change this line in overleaf.rc
MONGO_DATA_PATH=data/mongo
from NTFS directory to WSL’s native ext4 directory
MONGO_DATA_PATH=/home/<wsl_user>/mongo

The compose stack now works as expected.

(This is my first GitHub issue—documenting the deployment problems I ran into and how I solved them. Hope it helps future users:)
Feel free to correct anything that looks off.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions