* This Container uses a [customized Debian Linux base](https://hub.docker.com/r/tiredofit/debian) which includes [s6 overlay](https://github.com/just-containers/s6-overlay) enabled for PID 1 Init capabilities, [zabbix-agent](https://zabbix.org) for individual container monitoring, Cron also installed along with other tools (bash,curl, less, logrotate, nano, vim) for easier management.
This image assumes that you are using a reverse proxy such as [jwilder/nginx-proxy](https://github.com/jwilder/nginx-proxy) and optionally the [Let's Encrypt Proxy Companion @ https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion), or [Traefik](https://github.com/tiredofit/docker-traefik) in order to serve your pages. However, it will run just fine on it's own if you map appropriate ports.
If you decide to compile this, it will take quite a few hours even on the fastest computer due to the amount of data required to download to compile. At some stages this image will grow to 30GB large before sheeding most of it for it's final size.
* The quickest way to get started is using [docker-compose](https://docs.docker.com/compose/). See the examples folder for a working [docker-compose.yml](examples/docker-compose.yml) that can be modified for development or production use.
* Set various [environment variables](#environment-variables) to understand the capabilities of this image. A Sample `docker-compose.yml` is provided that will work right out of the box for most people without any fancy optimizations.
* Map [persistent storage](#data-volumes) for access to configuration and data files for backup.
# Configuration
### Persistent Storage
The following directories should be mapped for persistent storage in order to utilize the container effectively.
Along with the Environment Variables from the [Base image](https://hub.docker.com/r/tiredofit/debian), below is the complete list of available options that can be used to customize your installation.
| `AUTO_SAVE` | The number of seconds after which document, if modified, should be saved | `300` |
| `BATCH_PRIORITY` | A (lower) priority for use by batch convert to processes to avoid starving interactive ones | `5` |
| `CONNECTION_TIMEOUT` | Connection, Send, Receeive timeout in seconds for connections initiated by loolwsd | `30` |
| `FILE_SIZE_LIMIT` | The maximum file size allowed to each document process to write | `0` (unlimited) |
| `IDLE_SAVE` | The number of idle seconds after which document, if modified, should be saved | `30` |
| `IDLE_UNLOAD_TIMEOUT` | The maximum number of seconds before unloading an idle documen | `3600` |
| `MAX_CONVERT_LIMIT` | Maximum time in seconds to wait for a convert process to complete | `30` |
| `MAX_FILE_LOAD_LIMIT` | Maximum number of seconds to wait for a document load to succeed | `100` |
| `MAX_OPEN_FILES` | The maximum number of files allowed to each document process to open | `0` (unlimited) |
| `MAX_THREADS_DOCUMENT` | How many threads to use when opening a document | `4` |
| `MEMORY_DATA_LIMIT` | The maximum memory data segment allowed to each document process | `0` (unlimited) |
| `MEMORY_STACK_LIMIT` | The maximum stack size allowed to each document process | `0` (unlimited) |
| `MEMORY_USAGE_MAX` | Maximum percentage of system memory to be used | `80.0` |
| `MEMORY_VIRT_LIMIT` | Maximum virtual memory allowed to each document process | `0` |
| `PRESPAWN_CHILD_PROCESSES` | Amount of Child processes to start upon container init | `1` |
| `USER_IDLE_TIMEOUT` | The maximum number of seconds before dimming and stopping updates when the user is no longer active (even if the browser is in focus) | `900` |
| `USER_OUT_OF_FOCUS_TIMEOUT` | The maximum number of seconds before dimming and stopping updates when the browser tab is no longer in focus | `60` |