Skip to content

Commit 1eba328

Browse files
committed
docs(office): document all env vars and add size limits guide
Document every environment variable supported by the Document Server Docker image in the installation page. Previously only a subset was listed. Add a 'Size limits' section with a 200 MB PPTX example showing how the four size-gate variables interact at different stages (nginx upload, temp file buffer, converter download, uncompressed XML size). Assisted-by: OpenCode:qwen3.6-27b Signed-off-by: Christoph Schaefer <christoph.schaefer@nextcloud.com>
1 parent e4be954 commit 1eba328

1 file changed

Lines changed: 142 additions & 14 deletions

File tree

admin_manual/office/euro-office/installation_docker.rst

Lines changed: 142 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,33 +92,161 @@ Environment variables
9292
* - ``JWT_HEADER``
9393
- ``Authorization``
9494
- HTTP header carrying the JWT
95-
* - ``WOPI_ENABLED``
96-
- ``false``
97-
- Enable WOPI protocol support
98-
* - ``ALLOW_PRIVATE_IP_ADDRESS``
95+
* - ``JWT_HEADER_INBOX`` / ``JWT_HEADER_OUTBOX``
96+
- ``JWT_HEADER``
97+
- Separate headers per direction
98+
* - ``JWT_IN_BODY``
9999
- ``false``
100-
- Allow the Document Server to fetch files from private IP ranges
101-
* - ``NGINX_WORKER_PROCESSES``
102-
- ``1``
103-
- Number of nginx worker processes
104-
* - ``GENERATE_FONTS``
105-
- ``true``
106-
- Regenerate font cache on startup
100+
- Accept the token in the request body
101+
* - ``JWT_SECRET_INBOX`` / ``JWT_SECRET_OUTBOX``
102+
- ``JWT_SECRET``
103+
- Separate secrets per direction
104+
* - ``JWT_ENABLED_INBOX`` / ``JWT_ENABLED_OUTBOX``
105+
- ``JWT_ENABLED``
106+
- Enable JWT per direction
107+
* - ``DB_TYPE``
108+
- ``postgres``
109+
- Database engine (standalone image supports ``postgres`` only)
107110
* - ``DB_HOST``
108111
- ``localhost``
109-
- PostgreSQL host (for external database)
112+
- Database host
113+
* - ``DB_PORT``
114+
- ``5432``
115+
- Database port
110116
* - ``DB_NAME``
111117
- ``eurooffice``
112-
- PostgreSQL database name
118+
- Database name
113119
* - ``DB_USER``
114120
- ``eurooffice``
115-
- PostgreSQL user
121+
- Database user
122+
* - ``DB_PWD``
123+
- —
124+
- Database password
116125
* - ``REDIS_SERVER_HOST``
117126
- ``localhost``
118127
- Redis host (for external Redis)
128+
* - ``REDIS_SERVER_PORT``
129+
- ``6379``
130+
- Redis port
131+
* - ``REDIS_SERVER_PASS``
132+
- —
133+
- Redis password
119134
* - ``AMQP_HOST``
120135
- ``localhost``
121136
- RabbitMQ host (for external RabbitMQ)
137+
* - ``AMQP_PORT``
138+
- ``5672``
139+
- RabbitMQ port
140+
* - ``AMQP_USER`` / ``AMQP_PWD``
141+
- ``guest``
142+
- RabbitMQ credentials
143+
* - ``WOPI_ENABLED``
144+
- ``false``
145+
- Enable WOPI protocol support
146+
* - ``PLUGINS_ENABLED``
147+
- ``true``
148+
- Enable editor plugins
149+
* - ``GENERATE_FONTS``
150+
- ``true``
151+
- Regenerate font cache on startup
152+
* - ``METRICS_ENABLED``
153+
- ``false``
154+
- Enable StatsD metrics collection
155+
* - ``ALLOW_PRIVATE_IP_ADDRESS``
156+
- ``false``
157+
- Allow the Document Server to fetch files from private IP ranges
158+
* - ``ALLOW_META_IP_ADDRESS``
159+
- ``false``
160+
- Allow fetching documents from meta-private IPs (169.254.0.0/16)
161+
* - ``USE_UNAUTHORIZED_STORAGE``
162+
- ``false``
163+
- Allow fetching documents from HTTP (non-TLS) storage
164+
* - ``SSL_VERIFY_CLIENT``
165+
- ``off``
166+
- Enable SSL client certificate verification
167+
* - ``ONLYOFFICE_HTTPS_HSTS_ENABLED``
168+
- ``true``
169+
- Enable HSTS headers
170+
* - ``ONLYOFFICE_HTTPS_HSTS_MAXAGE``
171+
- ``31536000``
172+
- HSTS max-age in seconds (default 1 year)
173+
* - ``NGINX_WORKER_PROCESSES``
174+
- ``1``
175+
- Number of nginx worker processes
176+
* - ``NGINX_ACCESS_LOG``
177+
- ``false``
178+
- Enable nginx access logging
179+
* - ``NGINX_CLIENT_MAX_BODY_SIZE``
180+
- ``100m``
181+
- Nginx client max body size (upload limit for nginx)
182+
* - ``MAX_FILE_SIZE``
183+
- ``104857600``
184+
- Max temp file upload size in bytes (default 100 MB)
185+
* - ``FILECONVERTER_MAX_DOWNLOAD_BYTES``
186+
- ``524288000``
187+
- Max file download size for the FileConverter in bytes (default 500 MB)
188+
* - ``FILECONVERTER_INPUT_LIMIT_UNCOMPRESSED``
189+
- ``500MB``
190+
- Max uncompressed zip size for office files (docx, xlsx, pptx, vsdx)
191+
192+
Size limits
193+
-----------
194+
195+
Each limit guards a different stage of the file lifecycle. Imagine a user tries to
196+
open a **200 MB** ``.pptx`` file:
197+
198+
**1. Nginx accepts the upload** — ``NGINX_CLIENT_MAX_BODY_SIZE`` must be higher than
199+
the file. Default is ``100m``. With a 200 MB file the user gets
200+
``413 Request Entity Too Large``. Set it to ``250m``:
201+
202+
.. code-block:: bash
203+
204+
-e NGINX_CLIENT_MAX_BODY_SIZE=250m
205+
206+
**2. Document Server temp file** — ``MAX_FILE_SIZE`` gates the internal upload buffer
207+
(bytes). Default is ``104857600`` (100 MB). A 200 MB file fails here too. Set it to
208+
``268435456`` (256 MB):
209+
210+
.. code-block:: bash
211+
212+
-e MAX_FILE_SIZE=268435456
213+
214+
**3. FileConverter downloads the file** — ``FILECONVERTER_MAX_DOWNLOAD_BYTES`` is the
215+
max bytes the converter will fetch (default ``524288000`` = 500 MB). Already
216+
sufficient for a 200 MB file. No change needed.
217+
218+
**4. FileConverter unzips the archive** — ``FILECONVERTER_INPUT_LIMIT_UNCOMPRESSED``
219+
checks the internal XML size. A **200 MB** ``.pptx`` on disk might contain 800 MB of
220+
uncompressed XML data (especially with embedded images, shapes, or animations).
221+
The 500 MB default may be too low. Set it to ``800MB``:
222+
223+
.. code-block:: bash
224+
225+
-e FILECONVERTER_INPUT_LIMIT_UNCOMPRESSED=800MB
226+
227+
.. list-table::
228+
:header-rows: 1
229+
:widths: 25 35 40
230+
231+
* - Stage
232+
- Variable
233+
- Value for 200 MB PPTX
234+
* - Nginx upload
235+
- ``NGINX_CLIENT_MAX_BODY_SIZE``
236+
- ``250m``
237+
* - Temp file buffer
238+
- ``MAX_FILE_SIZE``
239+
- ``268435456`` (bytes)
240+
* - Converter download
241+
- ``FILECONVERTER_MAX_DOWNLOAD_BYTES``
242+
- ``524288000`` (default OK)
243+
* - Uncompressed XML size
244+
- ``FILECONVERTER_INPUT_LIMIT_UNCOMPRESSED``
245+
- ``800MB`` (if needed)
246+
247+
Office files are ZIP archives containing XML. The uncompressed limit protects
248+
against files that blow up the converter's memory when extracted. Adjust all four
249+
if your users work with large documents.
122250

123251
Updating
124252
--------

0 commit comments

Comments
 (0)