@roomi-fields/notebooklm-mcp 1.5.2 → 1.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +219 -201
  3. package/deployment/INDEX.md +0 -0
  4. package/deployment/PACKAGE-FILES.txt +180 -180
  5. package/deployment/QUICK-START.md +0 -0
  6. package/deployment/docs/01-INSTALL.md +0 -0
  7. package/deployment/docs/02-CONFIGURATION.md +0 -0
  8. package/deployment/docs/03-API.md +99 -13
  9. package/deployment/docs/04-N8N-INTEGRATION.md +0 -0
  10. package/deployment/docs/05-TROUBLESHOOTING.md +0 -0
  11. package/deployment/docs/06-NOTEBOOK-LIBRARY.md +0 -0
  12. package/deployment/docs/07-AUTO-DISCOVERY.md +0 -0
  13. package/deployment/docs/08-DOCKER.md +303 -0
  14. package/deployment/docs/08-WSL-USAGE.md +0 -0
  15. package/deployment/docs/09-MULTI-INTERFACE.md +0 -0
  16. package/deployment/docs/10-CONTENT-MANAGEMENT.md +0 -0
  17. package/deployment/docs/11-MULTI-ACCOUNT.md +0 -0
  18. package/deployment/docs/README.md +9 -2
  19. package/deployment/scripts/README.md +0 -0
  20. package/deployment/scripts/install.ps1 +114 -114
  21. package/deployment/scripts/setup-auth.ps1 +217 -217
  22. package/deployment/scripts/start-server.ps1 +72 -72
  23. package/deployment/scripts/stop-server.ps1 +51 -51
  24. package/deployment/scripts/test-api.ps1 +651 -651
  25. package/deployment/scripts/test-auth.ps1 +0 -0
  26. package/deployment/scripts/test-auto-discovery.ps1 +295 -295
  27. package/deployment/scripts/test-cors.ps1 +398 -398
  28. package/deployment/scripts/test-errors.ps1 +581 -581
  29. package/deployment/scripts/test-server.ps1 +140 -140
  30. package/deployment/scripts/test-sessions.ps1 +426 -426
  31. package/deployment/scripts/test-validation.ps1 +299 -299
  32. package/dist/accounts/account-manager.d.ts +15 -0
  33. package/dist/accounts/account-manager.d.ts.map +1 -1
  34. package/dist/accounts/account-manager.js +104 -0
  35. package/dist/accounts/account-manager.js.map +1 -1
  36. package/dist/accounts/auto-login-manager.d.ts +0 -0
  37. package/dist/accounts/auto-login-manager.d.ts.map +1 -1
  38. package/dist/accounts/auto-login-manager.js +45 -28
  39. package/dist/accounts/auto-login-manager.js.map +1 -1
  40. package/dist/accounts/crypto.d.ts +0 -0
  41. package/dist/accounts/crypto.d.ts.map +0 -0
  42. package/dist/accounts/crypto.js +0 -0
  43. package/dist/accounts/crypto.js.map +0 -0
  44. package/dist/accounts/index.d.ts +0 -0
  45. package/dist/accounts/index.d.ts.map +0 -0
  46. package/dist/accounts/index.js +0 -0
  47. package/dist/accounts/index.js.map +0 -0
  48. package/dist/accounts/types.d.ts +0 -0
  49. package/dist/accounts/types.d.ts.map +0 -0
  50. package/dist/accounts/types.js +0 -0
  51. package/dist/accounts/types.js.map +0 -0
  52. package/dist/auth/auth-manager.d.ts +1 -1
  53. package/dist/auth/auth-manager.d.ts.map +1 -1
  54. package/dist/auth/auth-manager.js +33 -13
  55. package/dist/auth/auth-manager.js.map +1 -1
  56. package/dist/auto-discovery/auto-discovery.d.ts +0 -0
  57. package/dist/auto-discovery/auto-discovery.d.ts.map +0 -0
  58. package/dist/auto-discovery/auto-discovery.js +0 -0
  59. package/dist/auto-discovery/auto-discovery.js.map +0 -0
  60. package/dist/cli/accounts.d.ts +0 -0
  61. package/dist/cli/accounts.d.ts.map +0 -0
  62. package/dist/cli/accounts.js +0 -0
  63. package/dist/cli/accounts.js.map +0 -0
  64. package/dist/cli/de-auth.d.ts +0 -0
  65. package/dist/cli/de-auth.d.ts.map +0 -0
  66. package/dist/cli/de-auth.js +0 -0
  67. package/dist/cli/de-auth.js.map +0 -0
  68. package/dist/cli/help.d.ts +0 -0
  69. package/dist/cli/help.d.ts.map +0 -0
  70. package/dist/cli/help.js +0 -0
  71. package/dist/cli/help.js.map +0 -0
  72. package/dist/cli/setup-auth.d.ts +0 -0
  73. package/dist/cli/setup-auth.d.ts.map +0 -0
  74. package/dist/cli/setup-auth.js +18 -10
  75. package/dist/cli/setup-auth.js.map +1 -1
  76. package/dist/config.d.ts +1 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +15 -1
  79. package/dist/config.js.map +1 -1
  80. package/dist/content/content-generator.d.ts +0 -0
  81. package/dist/content/content-generator.d.ts.map +0 -0
  82. package/dist/content/content-generator.js +0 -0
  83. package/dist/content/content-generator.js.map +0 -0
  84. package/dist/content/content-manager.d.ts +0 -0
  85. package/dist/content/content-manager.d.ts.map +0 -0
  86. package/dist/content/content-manager.js +0 -0
  87. package/dist/content/content-manager.js.map +0 -0
  88. package/dist/content/content-templates.d.ts +0 -0
  89. package/dist/content/content-templates.d.ts.map +0 -0
  90. package/dist/content/content-templates.js +0 -0
  91. package/dist/content/content-templates.js.map +0 -0
  92. package/dist/content/index.d.ts +0 -0
  93. package/dist/content/index.d.ts.map +0 -0
  94. package/dist/content/index.js +0 -0
  95. package/dist/content/index.js.map +0 -0
  96. package/dist/content/types.d.ts +0 -0
  97. package/dist/content/types.d.ts.map +0 -0
  98. package/dist/content/types.js +0 -0
  99. package/dist/content/types.js.map +0 -0
  100. package/dist/errors.d.ts +0 -0
  101. package/dist/errors.d.ts.map +0 -0
  102. package/dist/errors.js +0 -0
  103. package/dist/errors.js.map +0 -0
  104. package/dist/http-wrapper.d.ts +0 -0
  105. package/dist/http-wrapper.d.ts.map +1 -1
  106. package/dist/http-wrapper.js +275 -7
  107. package/dist/http-wrapper.js.map +1 -1
  108. package/dist/i18n/en.json +0 -0
  109. package/dist/i18n/fr.json +0 -0
  110. package/dist/i18n/index.d.ts +0 -0
  111. package/dist/i18n/index.d.ts.map +0 -0
  112. package/dist/i18n/index.js +0 -0
  113. package/dist/i18n/index.js.map +0 -0
  114. package/dist/index.d.ts +0 -0
  115. package/dist/index.d.ts.map +0 -0
  116. package/dist/index.js +0 -0
  117. package/dist/index.js.map +0 -0
  118. package/dist/library/notebook-library.d.ts +0 -0
  119. package/dist/library/notebook-library.d.ts.map +0 -0
  120. package/dist/library/notebook-library.js +0 -0
  121. package/dist/library/notebook-library.js.map +0 -0
  122. package/dist/library/types.d.ts +0 -0
  123. package/dist/library/types.d.ts.map +0 -0
  124. package/dist/library/types.js +0 -0
  125. package/dist/library/types.js.map +0 -0
  126. package/dist/session/browser-session.d.ts +0 -0
  127. package/dist/session/browser-session.d.ts.map +1 -1
  128. package/dist/session/browser-session.js +215 -91
  129. package/dist/session/browser-session.js.map +1 -1
  130. package/dist/session/session-manager.d.ts +0 -0
  131. package/dist/session/session-manager.d.ts.map +0 -0
  132. package/dist/session/session-manager.js +0 -0
  133. package/dist/session/session-manager.js.map +0 -0
  134. package/dist/session/shared-context-manager.d.ts +0 -0
  135. package/dist/session/shared-context-manager.d.ts.map +1 -1
  136. package/dist/session/shared-context-manager.js +38 -5
  137. package/dist/session/shared-context-manager.js.map +1 -1
  138. package/dist/startup/startup-manager.d.ts +60 -0
  139. package/dist/startup/startup-manager.d.ts.map +1 -0
  140. package/dist/startup/startup-manager.js +468 -0
  141. package/dist/startup/startup-manager.js.map +1 -0
  142. package/dist/stdio-http-proxy.d.ts +0 -0
  143. package/dist/stdio-http-proxy.d.ts.map +0 -0
  144. package/dist/stdio-http-proxy.js +91 -16
  145. package/dist/stdio-http-proxy.js.map +1 -1
  146. package/dist/tools/index.d.ts +1 -0
  147. package/dist/tools/index.d.ts.map +1 -1
  148. package/dist/tools/index.js +55 -34
  149. package/dist/tools/index.js.map +1 -1
  150. package/dist/types.d.ts +0 -0
  151. package/dist/types.d.ts.map +0 -0
  152. package/dist/types.js +0 -0
  153. package/dist/types.js.map +0 -0
  154. package/dist/utils/citation-extractor.d.ts +6 -7
  155. package/dist/utils/citation-extractor.d.ts.map +1 -1
  156. package/dist/utils/citation-extractor.js +138 -303
  157. package/dist/utils/citation-extractor.js.map +1 -1
  158. package/dist/utils/cleanup-manager.d.ts +0 -0
  159. package/dist/utils/cleanup-manager.d.ts.map +0 -0
  160. package/dist/utils/cleanup-manager.js +0 -0
  161. package/dist/utils/cleanup-manager.js.map +0 -0
  162. package/dist/utils/logger.d.ts +0 -0
  163. package/dist/utils/logger.d.ts.map +0 -0
  164. package/dist/utils/logger.js +0 -0
  165. package/dist/utils/logger.js.map +0 -0
  166. package/dist/utils/page-utils.d.ts +0 -0
  167. package/dist/utils/page-utils.d.ts.map +1 -1
  168. package/dist/utils/page-utils.js +12 -13
  169. package/dist/utils/page-utils.js.map +1 -1
  170. package/dist/utils/stealth-utils.d.ts +0 -0
  171. package/dist/utils/stealth-utils.d.ts.map +0 -0
  172. package/dist/utils/stealth-utils.js +0 -0
  173. package/dist/utils/stealth-utils.js.map +0 -0
  174. package/docs/ADDING_A_LANGUAGE.md +0 -0
  175. package/docs/ARCHITECTURE_MIGRATION_STUDY.md +0 -0
  176. package/docs/CHROME_PROFILE_LIMITATION.md +0 -0
  177. package/docs/MULTI_ACCOUNT_SYSTEM.md +0 -0
  178. package/docs/archive/auto-discovery-complet.md +906 -0
  179. package/package.json +4 -2
  180. package/scripts/add-totp.ts +110 -0
  181. package/scripts/archive/add-and-activate-notebook.ps1 +0 -0
  182. package/scripts/archive/add-new-notebook.ps1 +0 -0
  183. package/scripts/archive/add-rom1pey.ps1 +0 -0
  184. package/scripts/archive/add-rpmonster.ps1 +0 -0
  185. package/scripts/archive/add-source-debug.ps1 +0 -0
  186. package/scripts/archive/add-source-e2e.ps1 +0 -0
  187. package/scripts/archive/add-source-visible.ps1 +0 -0
  188. package/scripts/archive/add-test-notebook.ps1 +0 -0
  189. package/scripts/archive/add-test-source.ps1 +0 -0
  190. package/scripts/archive/capture-screen.ps1 +0 -0
  191. package/scripts/archive/change-language.mjs +0 -0
  192. package/scripts/archive/change-language.ts +0 -0
  193. package/scripts/archive/check-account.ps1 +0 -0
  194. package/scripts/archive/check-notebook-2.ps1 +0 -0
  195. package/scripts/archive/check-test-notebook.ps1 +0 -0
  196. package/scripts/archive/create-notebook-auto.ps1 +0 -0
  197. package/scripts/archive/create-notebook.ps1 +0 -0
  198. package/scripts/archive/create-rom1pey-notebook.ps1 +0 -0
  199. package/scripts/archive/create-rom1pey.ps1 +0 -0
  200. package/scripts/archive/create-test-notebook-fresh.ps1 +0 -0
  201. package/scripts/archive/create-test-notebook.ps1 +0 -0
  202. package/scripts/archive/debug-add-source-auto.ps1 +0 -0
  203. package/scripts/archive/debug-add-source.ps1 +0 -0
  204. package/scripts/archive/debug-add-text-source.ps1 +0 -0
  205. package/scripts/archive/debug-home.ps1 +0 -0
  206. package/scripts/archive/debug-selectors.ps1 +0 -0
  207. package/scripts/archive/debug-sources-panel.ps1 +0 -0
  208. package/scripts/archive/debug-ui.ps1 +0 -0
  209. package/scripts/archive/discover-home.ps1 +0 -0
  210. package/scripts/archive/kill-automation-chrome.ps1 +0 -0
  211. package/scripts/archive/list-my-notebooks.ps1 +0 -0
  212. package/scripts/archive/navigate-home-visible.ps1 +0 -0
  213. package/scripts/archive/navigate-home.ps1 +0 -0
  214. package/scripts/archive/run-e2e-english.ps1 +0 -0
  215. package/scripts/archive/run-e2e-rom1pey-v2.ps1 +0 -0
  216. package/scripts/archive/run-e2e-rom1pey.ps1 +0 -0
  217. package/scripts/archive/setup-english-test.ps1 +0 -0
  218. package/scripts/archive/setup-test-notebook.ps1 +0 -0
  219. package/scripts/archive/simple-add-source.ps1 +0 -0
  220. package/scripts/archive/t10.ps1 +0 -0
  221. package/scripts/archive/t20.ps1 +0 -0
  222. package/scripts/archive/t30.ps1 +0 -0
  223. package/scripts/archive/t31.ps1 +0 -0
  224. package/scripts/archive/t32.ps1 +0 -0
  225. package/scripts/archive/t39.ps1 +0 -0
  226. package/scripts/archive/t40.ps1 +0 -0
  227. package/scripts/archive/t53.ps1 +0 -0
  228. package/scripts/archive/t54.ps1 +0 -0
  229. package/scripts/archive/t55.ps1 +0 -0
  230. package/scripts/archive/t9.ps1 +0 -0
  231. package/scripts/archive/test-access.ps1 +0 -0
  232. package/scripts/archive/test-add-delete-source.ps1 +0 -0
  233. package/scripts/archive/test-add-source-visible.ps1 +0 -0
  234. package/scripts/archive/test-add-source.ps1 +0 -0
  235. package/scripts/archive/test-add-text-debug.ps1 +0 -0
  236. package/scripts/archive/test-add-text-source.ps1 +0 -0
  237. package/scripts/archive/test-add-url-source.ps1 +0 -0
  238. package/scripts/archive/test-ask-ascii.ps1 +0 -0
  239. package/scripts/archive/test-ask-cnv.ps1 +0 -0
  240. package/scripts/archive/test-ask-headed.ps1 +0 -0
  241. package/scripts/archive/test-ask-ifs.ps1 +0 -0
  242. package/scripts/archive/test-ask-now.ps1 +0 -0
  243. package/scripts/archive/test-ask-real.ps1 +0 -0
  244. package/scripts/archive/test-ask-visible.ps1 +0 -0
  245. package/scripts/archive/test-create-notebook.ps1 +0 -0
  246. package/scripts/archive/test-create-then-add.ps1 +0 -0
  247. package/scripts/archive/test-delete-source.ps1 +0 -0
  248. package/scripts/archive/test-e2e-notebook.ps1 +0 -0
  249. package/scripts/archive/test-english-notebook.ps1 +0 -0
  250. package/scripts/archive/test-english.ps1 +0 -0
  251. package/scripts/archive/test-full-custom-instructions.ps1 +0 -0
  252. package/scripts/archive/test-full-infographic.ps1 +0 -0
  253. package/scripts/archive/test-full-language.ps1 +0 -0
  254. package/scripts/archive/test-full-presentation.ps1 +0 -0
  255. package/scripts/archive/test-full-report.ps1 +0 -0
  256. package/scripts/archive/test-full-source-selection.ps1 +0 -0
  257. package/scripts/archive/test-full-video-brief.ps1 +0 -0
  258. package/scripts/archive/test-full-video-explainer.ps1 +0 -0
  259. package/scripts/archive/test-full-video-styles.ps1 +0 -0
  260. package/scripts/archive/test-generate-report.ps1 +0 -0
  261. package/scripts/archive/test-generate-study-guide.ps1 +0 -0
  262. package/scripts/archive/test-headed-ask.ps1 +0 -0
  263. package/scripts/archive/test-headed-now.ps1 +0 -0
  264. package/scripts/archive/test-headed.ps1 +0 -0
  265. package/scripts/archive/test-hello.ps1 +0 -0
  266. package/scripts/archive/test-i18n-studio.ps1 +0 -0
  267. package/scripts/archive/test-i18n.ps1 +0 -0
  268. package/scripts/archive/test-manual-headed.ps1 +0 -0
  269. package/scripts/archive/test-mathieu-quota.ps1 +0 -0
  270. package/scripts/archive/test-notebook-1.ps1 +0 -0
  271. package/scripts/archive/test-notebook-2-sources.ps1 +0 -0
  272. package/scripts/archive/test-notebook1.ps1 +0 -0
  273. package/scripts/archive/test-personal-notebook.ps1 +0 -0
  274. package/scripts/archive/test-rate-limit.ps1 +0 -0
  275. package/scripts/archive/test-real-ask.ps1 +0 -0
  276. package/scripts/archive/test-real-ask2.ps1 +0 -0
  277. package/scripts/archive/test-rom1pey.ps1 +0 -0
  278. package/scripts/archive/test-rotation-complete.ps1 +0 -0
  279. package/scripts/archive/test-rotation.ps1 +0 -0
  280. package/scripts/archive/test-show-browser.ps1 +0 -0
  281. package/scripts/archive/test-update-notebook.ps1 +0 -0
  282. package/scripts/archive/verify-language-slow.ps1 +0 -0
  283. package/scripts/archive/verify-language.ps1 +0 -0
  284. package/scripts/check-server.ps1 +0 -0
  285. package/scripts/docker-entrypoint.sh +25 -0
  286. package/scripts/mcp-proxy-hidden.ps1 +31 -0
  287. package/scripts/mcp-wsl-helper.sh +146 -146
  288. package/scripts/start-server-hidden.vbs +13 -0
  289. package/scripts/start-server.ps1 +0 -0
  290. package/scripts/start-vnc.sh +37 -0
  291. package/scripts/stop-server.bat +5 -0
  292. package/scripts/stop-server.ps1 +0 -0
  293. package/scripts/switch-account-language.sh +0 -0
  294. package/scripts/test-account.ps1 +0 -0
@@ -0,0 +1,303 @@
1
+ # Docker Deployment
2
+
3
+ Run NotebookLM MCP Server in a Docker container for isolated, reproducible deployments.
4
+
5
+ ## Quick Start
6
+
7
+ ### Using Docker Compose (Recommended)
8
+
9
+ ```bash
10
+ # Build and start
11
+ docker-compose up -d
12
+
13
+ # View logs
14
+ docker-compose logs -f
15
+
16
+ # Stop
17
+ docker-compose down
18
+ ```
19
+
20
+ ### Using Docker CLI
21
+
22
+ ```bash
23
+ # Build image
24
+ docker build -t notebooklm-mcp .
25
+
26
+ # Run container
27
+ docker run -d \
28
+ --name notebooklm-mcp \
29
+ --restart unless-stopped \
30
+ -p 3000:3000 \
31
+ -p 6080:6080 \
32
+ -v notebooklm-data:/data \
33
+ -e HEADLESS=true \
34
+ -e STEALTH_ENABLED=true \
35
+ -e NOTEBOOKLM_UI_LOCALE=fr \
36
+ notebooklm-mcp
37
+ ```
38
+
39
+ ## Ports
40
+
41
+ | Port | Description |
42
+ | ---- | ---------------------------------------- |
43
+ | 3000 | HTTP REST API |
44
+ | 6080 | noVNC web interface (for authentication) |
45
+
46
+ ## First-Time Authentication via noVNC
47
+
48
+ Docker includes a **noVNC server** for visual browser access, required for initial Google authentication.
49
+
50
+ ### Step 1: Open noVNC
51
+
52
+ Open in your browser:
53
+
54
+ ```
55
+ http://localhost:6080/vnc.html
56
+ ```
57
+
58
+ ### Step 2: Trigger Authentication
59
+
60
+ ```bash
61
+ curl -X POST http://localhost:3000/setup-auth \
62
+ -H "Content-Type: application/json" \
63
+ -d '{"show_browser": true}'
64
+ ```
65
+
66
+ ### Step 3: Login in noVNC
67
+
68
+ 1. The Chromium browser appears in the noVNC window
69
+ 2. Complete Google login
70
+ 3. Authentication is saved automatically
71
+ 4. Browser closes when done
72
+
73
+ ### Verify Authentication
74
+
75
+ ```bash
76
+ curl http://localhost:3000/health
77
+ # → {"success":true,"data":{"authenticated":true,...}}
78
+ ```
79
+
80
+ ## Alternative: Copy Existing Credentials
81
+
82
+ If you've already authenticated locally:
83
+
84
+ ```bash
85
+ # Copy from local machine to container
86
+ docker cp ~/.local/share/notebooklm-mcp/. notebooklm-mcp:/data/
87
+
88
+ # Restart container
89
+ docker restart notebooklm-mcp
90
+ ```
91
+
92
+ ## Configuration
93
+
94
+ ### Environment Variables
95
+
96
+ | Variable | Default | Description |
97
+ | ---------------------- | --------- | --------------------- |
98
+ | `HTTP_PORT` | `3000` | HTTP server port |
99
+ | `HTTP_HOST` | `0.0.0.0` | HTTP server host |
100
+ | `HEADLESS` | `true` | Run browser headless |
101
+ | `STEALTH_ENABLED` | `true` | Enable anti-detection |
102
+ | `NOTEBOOKLM_DATA_DIR` | `/data` | Data directory path |
103
+ | `NOTEBOOKLM_UI_LOCALE` | `fr` | UI language (fr/en) |
104
+ | `AUTO_LOGIN_ENABLED` | `false` | Enable auto-login |
105
+ | `ENABLE_VNC` | `true` | Enable noVNC server |
106
+ | `NOVNC_PORT` | `6080` | noVNC web port |
107
+
108
+ ### Custom Configuration
109
+
110
+ Edit `docker-compose.yml` to customize:
111
+
112
+ ```yaml
113
+ environment:
114
+ - HEADLESS=true
115
+ - NOTEBOOKLM_UI_LOCALE=en
116
+ - AUTO_LOGIN_ENABLED=true
117
+ ```
118
+
119
+ ## Data Persistence
120
+
121
+ All data is stored in the `/data` volume:
122
+
123
+ ```
124
+ /data/
125
+ ├── library.json # Notebook library
126
+ ├── chrome_profile/ # Chrome profile (Google session)
127
+ ├── browser_state/ # Browser state backup
128
+ ├── accounts.json # Account configuration
129
+ ├── accounts/ # Per-account data
130
+ │ └── account-xxx/
131
+ │ ├── credentials.enc.json
132
+ │ ├── quota.json
133
+ │ └── state.json
134
+ └── encryption.key # Encryption key
135
+ ```
136
+
137
+ ### Backup
138
+
139
+ ```bash
140
+ # Backup data volume
141
+ docker run --rm \
142
+ -v notebooklm-mcp-data:/data:ro \
143
+ -v $(pwd):/backup \
144
+ alpine tar czf /backup/notebooklm-backup.tar.gz -C /data .
145
+
146
+ # Restore
147
+ docker run --rm \
148
+ -v notebooklm-mcp-data:/data \
149
+ -v $(pwd):/backup \
150
+ alpine tar xzf /backup/notebooklm-backup.tar.gz -C /data
151
+ ```
152
+
153
+ ## NAS Deployment (Synology, QNAP)
154
+
155
+ ### Build and Export
156
+
157
+ ```bash
158
+ # On your local machine
159
+ npm run build
160
+ docker build -t notebooklm-mcp:latest .
161
+ docker save notebooklm-mcp:latest | gzip > notebooklm-mcp.tar.gz
162
+ ```
163
+
164
+ ### Upload and Deploy
165
+
166
+ ```bash
167
+ # Upload to NAS
168
+ scp notebooklm-mcp.tar.gz user@nas:/volume1/docker/
169
+
170
+ # SSH to NAS and load
171
+ ssh user@nas
172
+ docker load < /volume1/docker/notebooklm-mcp.tar.gz
173
+
174
+ # Run container
175
+ docker run -d \
176
+ --name notebooklm-mcp \
177
+ --restart unless-stopped \
178
+ -p 3000:3000 \
179
+ -p 6080:6080 \
180
+ -v /volume1/docker/notebooklm/data:/data \
181
+ -e HEADLESS=true \
182
+ -e STEALTH_ENABLED=true \
183
+ -e NOTEBOOKLM_UI_LOCALE=fr \
184
+ notebooklm-mcp:latest
185
+ ```
186
+
187
+ ### Authenticate via noVNC
188
+
189
+ 1. Open `http://nas-ip:6080/vnc.html`
190
+ 2. Run setup-auth command
191
+ 3. Complete Google login in VNC window
192
+
193
+ ## Resource Requirements
194
+
195
+ | Resource | Minimum | Recommended |
196
+ | -------- | ------- | ----------- |
197
+ | Memory | 512 MB | 2 GB |
198
+ | CPU | 1 core | 2 cores |
199
+ | Disk | 500 MB | 2 GB |
200
+
201
+ Chromium uses significant memory. Adjust limits in `docker-compose.yml`:
202
+
203
+ ```yaml
204
+ deploy:
205
+ resources:
206
+ limits:
207
+ memory: 4G
208
+ reservations:
209
+ memory: 1G
210
+ ```
211
+
212
+ ## Troubleshooting
213
+
214
+ ### Container won't start
215
+
216
+ ```bash
217
+ # Check logs
218
+ docker logs notebooklm-mcp
219
+
220
+ # Check container status
221
+ docker ps -a
222
+ ```
223
+
224
+ ### Browser issues
225
+
226
+ If Chromium fails to launch:
227
+
228
+ 1. Ensure sufficient memory (minimum 512MB)
229
+ 2. Check logs for errors
230
+ 3. Try rebuilding: `docker build --no-cache -t notebooklm-mcp .`
231
+
232
+ ### noVNC not accessible
233
+
234
+ 1. Verify port 6080 is exposed
235
+ 2. Check firewall rules
236
+ 3. Verify container is running: `docker ps`
237
+
238
+ ### Authentication issues
239
+
240
+ ```bash
241
+ # Check health endpoint
242
+ curl http://localhost:3000/health
243
+
244
+ # If not authenticated, use noVNC method above
245
+ ```
246
+
247
+ ### Permission issues
248
+
249
+ ```bash
250
+ # Fix volume permissions
251
+ docker run --rm -v notebooklm-mcp-data:/data alpine chown -R 1000:1000 /data
252
+ ```
253
+
254
+ ## Production Deployment
255
+
256
+ ### With Reverse Proxy (nginx)
257
+
258
+ ```nginx
259
+ server {
260
+ listen 80;
261
+ server_name notebooklm.example.com;
262
+
263
+ location / {
264
+ proxy_pass http://localhost:3000;
265
+ proxy_http_version 1.1;
266
+ proxy_set_header Upgrade $http_upgrade;
267
+ proxy_set_header Connection 'upgrade';
268
+ proxy_set_header Host $host;
269
+ proxy_set_header X-Real-IP $remote_addr;
270
+ proxy_cache_bypass $http_upgrade;
271
+ }
272
+
273
+ # noVNC (restrict access!)
274
+ location /vnc {
275
+ proxy_pass http://localhost:6080;
276
+ proxy_http_version 1.1;
277
+ proxy_set_header Upgrade $http_upgrade;
278
+ proxy_set_header Connection 'upgrade';
279
+ # Add authentication here!
280
+ }
281
+ }
282
+ ```
283
+
284
+ ### Security Considerations
285
+
286
+ 1. **Don't expose port 6080 publicly** - noVNC gives browser access
287
+ 2. **Use a reverse proxy with authentication** for production
288
+ 3. **Regular backups** of the data volume
289
+ 4. **Monitor container health** using the healthcheck endpoint
290
+
291
+ ## Architecture
292
+
293
+ ```
294
+ Docker Container
295
+ ├── Node.js HTTP Server (port 3000)
296
+ ├── Xvfb (:99) - Virtual display
297
+ ├── x11vnc - VNC server
298
+ ├── websockify/noVNC (port 6080) - Web VNC
299
+ └── Chromium browser
300
+
301
+ User → noVNC (6080) → VNC → Xvfb → Chromium
302
+ User → HTTP API (3000) → Node.js → Chromium
303
+ ```
File without changes
File without changes
File without changes
File without changes
@@ -23,6 +23,7 @@
23
23
  | [**05-TROUBLESHOOTING.md**](./05-TROUBLESHOOTING.md) | Solutions to common problems | Debugging, errors |
24
24
  | [**06-NOTEBOOK-LIBRARY.md**](./06-NOTEBOOK-LIBRARY.md) | Multi-notebook library management | Notebook management |
25
25
  | [**07-AUTO-DISCOVERY.md**](./07-AUTO-DISCOVERY.md) | Autonomous resource discovery pattern | Auto-discovery feature |
26
+ | [**08-DOCKER.md**](./08-DOCKER.md) | Docker deployment with noVNC | Docker, NAS users |
26
27
  | [**11-MULTI-ACCOUNT.md**](./11-MULTI-ACCOUNT.md) | Multi-account management and rotation | Rate limit handling |
27
28
  | [**Test Scripts**](../scripts/README.md) | PowerShell validation scripts | Testing, CI/CD |
28
29
 
@@ -64,6 +65,12 @@
64
65
  2. [Automatic rotation](./11-MULTI-ACCOUNT.md#automatic-rotation-flow) — How rotation works
65
66
  3. [Quota management](./11-MULTI-ACCOUNT.md#troubleshooting) — Reset and monitor quotas
66
67
 
68
+ ### I want to deploy on Docker/NAS
69
+
70
+ 1. [Docker guide](./08-DOCKER.md) — Complete Docker deployment
71
+ 2. [noVNC authentication](./08-DOCKER.md#first-time-authentication-via-novnc) — Visual auth in browser
72
+ 3. [NAS deployment](./08-DOCKER.md#nas-deployment-synology-qnap) — Synology, QNAP setup
73
+
67
74
  ---
68
75
 
69
76
  ## 📖 Quick Reference
@@ -203,5 +210,5 @@ Or directly propose a PR to improve the documentation!
203
210
 
204
211
  ---
205
212
 
206
- **Documentation updated:** 2025-12-29
207
- **Version:** 1.4.2
213
+ **Documentation updated:** 2026-01-05
214
+ **Version:** 1.5.3
File without changes
@@ -1,114 +1,114 @@
1
- # Automatic installation script - NotebookLM MCP HTTP Server
2
- # Version: 1.3.0
3
- # Description: Installs all dependencies and compiles the project
4
-
5
- Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
6
- Write-Host "║ NotebookLM MCP - Automatic Installation ║" -ForegroundColor Cyan
7
- Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Cyan
8
- Write-Host ""
9
-
10
- # Check Node.js
11
- Write-Host "🔍 Checking Node.js..." -ForegroundColor Yellow
12
- try {
13
- $nodeVersion = node --version
14
- $npmVersion = npm --version
15
- Write-Host "✅ Node.js $nodeVersion found" -ForegroundColor Green
16
- Write-Host "✅ npm $npmVersion found" -ForegroundColor Green
17
- } catch {
18
- Write-Host "❌ Node.js is not installed!" -ForegroundColor Red
19
- Write-Host ""
20
- Write-Host "📥 Download Node.js from: https://nodejs.org/" -ForegroundColor Yellow
21
- Write-Host " Install the LTS version and run this script again." -ForegroundColor Yellow
22
- exit 1
23
- }
24
-
25
- Write-Host ""
26
-
27
- # Check that we're in the right directory
28
- Write-Host "🔍 Checking directory..." -ForegroundColor Yellow
29
- if (-not (Test-Path "package.json")) {
30
- Write-Host "❌ package.json file not found!" -ForegroundColor Red
31
- Write-Host " Make sure you are in the project root directory." -ForegroundColor Yellow
32
- exit 1
33
- }
34
-
35
- $projectName = (Get-Content "package.json" -Raw | ConvertFrom-Json).name
36
- Write-Host "✅ Project detected: $projectName" -ForegroundColor Green
37
- Write-Host ""
38
-
39
- # Install dependencies
40
- Write-Host "📦 Installing npm dependencies..." -ForegroundColor Yellow
41
- Write-Host " (This may take 2-5 minutes)" -ForegroundColor Gray
42
- Write-Host ""
43
-
44
- npm install
45
-
46
- if ($LASTEXITCODE -ne 0) {
47
- Write-Host ""
48
- Write-Host "❌ Error during dependency installation" -ForegroundColor Red
49
- Write-Host " Check your Internet connection and try again." -ForegroundColor Yellow
50
- exit 1
51
- }
52
-
53
- Write-Host ""
54
- Write-Host "✅ Dependencies installed successfully!" -ForegroundColor Green
55
- Write-Host ""
56
-
57
- # TypeScript compilation
58
- Write-Host "🔨 Compiling project..." -ForegroundColor Yellow
59
- npm run build
60
-
61
- if ($LASTEXITCODE -ne 0) {
62
- Write-Host ""
63
- Write-Host "❌ Error during compilation" -ForegroundColor Red
64
- exit 1
65
- }
66
-
67
- Write-Host ""
68
- Write-Host "✅ Compilation successful!" -ForegroundColor Green
69
- Write-Host ""
70
-
71
- # Final checks
72
- Write-Host "🔍 Final checks..." -ForegroundColor Yellow
73
-
74
- $checks = @(
75
- @{File = "dist\http-wrapper.js"; Description = "HTTP Server"},
76
- @{File = "dist\index.js"; Description = "MCP Server"},
77
- @{File = "node_modules\express"; Description = "Express.js"}
78
- )
79
-
80
- $allOk = $true
81
- foreach ($check in $checks) {
82
- if (Test-Path $check.File) {
83
- Write-Host " ✅ $($check.Description)" -ForegroundColor Green
84
- } else {
85
- Write-Host " ❌ $($check.Description) - $($check.File) not found" -ForegroundColor Red
86
- $allOk = $false
87
- }
88
- }
89
-
90
- Write-Host ""
91
-
92
- if ($allOk) {
93
- Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Green
94
- Write-Host "║ ✅ INSTALLATION COMPLETED SUCCESSFULLY! ║" -ForegroundColor Green
95
- Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Green
96
- Write-Host ""
97
- Write-Host "📋 Next steps:" -ForegroundColor Cyan
98
- Write-Host ""
99
- Write-Host "1️⃣ Configure Google authentication (one time only):" -ForegroundColor White
100
- Write-Host " .\deployment\scripts\setup-auth.ps1" -ForegroundColor Gray
101
- Write-Host ""
102
- Write-Host "2️⃣ Start the server:" -ForegroundColor White
103
- Write-Host " npm run start:http" -ForegroundColor Gray
104
- Write-Host ""
105
- Write-Host "3️⃣ Test the server:" -ForegroundColor White
106
- Write-Host " curl http://localhost:3000/health" -ForegroundColor Gray
107
- Write-Host ""
108
- Write-Host "📖 Complete documentation: .\deployment\docs\" -ForegroundColor Cyan
109
- Write-Host ""
110
- } else {
111
- Write-Host "❌ Installation encountered problems" -ForegroundColor Red
112
- Write-Host " See: .\deployment\docs\05-TROUBLESHOOTING.md" -ForegroundColor Yellow
113
- exit 1
114
- }
1
+ # Automatic installation script - NotebookLM MCP HTTP Server
2
+ # Version: 1.3.0
3
+ # Description: Installs all dependencies and compiles the project
4
+
5
+ Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
6
+ Write-Host "║ NotebookLM MCP - Automatic Installation ║" -ForegroundColor Cyan
7
+ Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Cyan
8
+ Write-Host ""
9
+
10
+ # Check Node.js
11
+ Write-Host "🔍 Checking Node.js..." -ForegroundColor Yellow
12
+ try {
13
+ $nodeVersion = node --version
14
+ $npmVersion = npm --version
15
+ Write-Host "✅ Node.js $nodeVersion found" -ForegroundColor Green
16
+ Write-Host "✅ npm $npmVersion found" -ForegroundColor Green
17
+ } catch {
18
+ Write-Host "❌ Node.js is not installed!" -ForegroundColor Red
19
+ Write-Host ""
20
+ Write-Host "📥 Download Node.js from: https://nodejs.org/" -ForegroundColor Yellow
21
+ Write-Host " Install the LTS version and run this script again." -ForegroundColor Yellow
22
+ exit 1
23
+ }
24
+
25
+ Write-Host ""
26
+
27
+ # Check that we're in the right directory
28
+ Write-Host "🔍 Checking directory..." -ForegroundColor Yellow
29
+ if (-not (Test-Path "package.json")) {
30
+ Write-Host "❌ package.json file not found!" -ForegroundColor Red
31
+ Write-Host " Make sure you are in the project root directory." -ForegroundColor Yellow
32
+ exit 1
33
+ }
34
+
35
+ $projectName = (Get-Content "package.json" -Raw | ConvertFrom-Json).name
36
+ Write-Host "✅ Project detected: $projectName" -ForegroundColor Green
37
+ Write-Host ""
38
+
39
+ # Install dependencies
40
+ Write-Host "📦 Installing npm dependencies..." -ForegroundColor Yellow
41
+ Write-Host " (This may take 2-5 minutes)" -ForegroundColor Gray
42
+ Write-Host ""
43
+
44
+ npm install
45
+
46
+ if ($LASTEXITCODE -ne 0) {
47
+ Write-Host ""
48
+ Write-Host "❌ Error during dependency installation" -ForegroundColor Red
49
+ Write-Host " Check your Internet connection and try again." -ForegroundColor Yellow
50
+ exit 1
51
+ }
52
+
53
+ Write-Host ""
54
+ Write-Host "✅ Dependencies installed successfully!" -ForegroundColor Green
55
+ Write-Host ""
56
+
57
+ # TypeScript compilation
58
+ Write-Host "🔨 Compiling project..." -ForegroundColor Yellow
59
+ npm run build
60
+
61
+ if ($LASTEXITCODE -ne 0) {
62
+ Write-Host ""
63
+ Write-Host "❌ Error during compilation" -ForegroundColor Red
64
+ exit 1
65
+ }
66
+
67
+ Write-Host ""
68
+ Write-Host "✅ Compilation successful!" -ForegroundColor Green
69
+ Write-Host ""
70
+
71
+ # Final checks
72
+ Write-Host "🔍 Final checks..." -ForegroundColor Yellow
73
+
74
+ $checks = @(
75
+ @{File = "dist\http-wrapper.js"; Description = "HTTP Server"},
76
+ @{File = "dist\index.js"; Description = "MCP Server"},
77
+ @{File = "node_modules\express"; Description = "Express.js"}
78
+ )
79
+
80
+ $allOk = $true
81
+ foreach ($check in $checks) {
82
+ if (Test-Path $check.File) {
83
+ Write-Host " ✅ $($check.Description)" -ForegroundColor Green
84
+ } else {
85
+ Write-Host " ❌ $($check.Description) - $($check.File) not found" -ForegroundColor Red
86
+ $allOk = $false
87
+ }
88
+ }
89
+
90
+ Write-Host ""
91
+
92
+ if ($allOk) {
93
+ Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Green
94
+ Write-Host "║ ✅ INSTALLATION COMPLETED SUCCESSFULLY! ║" -ForegroundColor Green
95
+ Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Green
96
+ Write-Host ""
97
+ Write-Host "📋 Next steps:" -ForegroundColor Cyan
98
+ Write-Host ""
99
+ Write-Host "1️⃣ Configure Google authentication (one time only):" -ForegroundColor White
100
+ Write-Host " .\deployment\scripts\setup-auth.ps1" -ForegroundColor Gray
101
+ Write-Host ""
102
+ Write-Host "2️⃣ Start the server:" -ForegroundColor White
103
+ Write-Host " npm run start:http" -ForegroundColor Gray
104
+ Write-Host ""
105
+ Write-Host "3️⃣ Test the server:" -ForegroundColor White
106
+ Write-Host " curl http://localhost:3000/health" -ForegroundColor Gray
107
+ Write-Host ""
108
+ Write-Host "📖 Complete documentation: .\deployment\docs\" -ForegroundColor Cyan
109
+ Write-Host ""
110
+ } else {
111
+ Write-Host "❌ Installation encountered problems" -ForegroundColor Red
112
+ Write-Host " See: .\deployment\docs\05-TROUBLESHOOTING.md" -ForegroundColor Yellow
113
+ exit 1
114
+ }