The official Docker image is available on https://hub.docker.com/r/etherpad/etherpad.
If you are ok downloading a prebuilt image from Docker Hub, these are the commands:
# gets the latest published version
docker pull etherpad/etherpad
# gets a specific version
docker pull etherpad/etherpad:1.8.0
If you want to use a personalized settings file, you will have to rebuild your image.
All of the following instructions are as a member of the docker
group.
By default, the Etherpad Docker image is built and run in production
mode: no development dependencies are installed, and asset bundling speeds up page load time.
A docker compose file is provided in the project. Please first copy .env.default
to .env
and adjust the variables to your preference.
docker compose up -d # will build and start the docker container on port 9001 with development settings.
Starting dev server:
docker compose exec app bash -c "./src/bin/run.sh"
For production, please create your own docker compose file and change the target
property in the build section to production
. In addition, change the NODE_ENV in environment to production. For instance:
docker compose -f docker-compose-production.yml up -d
For plugins, please add them in the build section under ETHERPAD_PLUGINS, for instance:
args:
ETHERPAD_PLUGINS: >-
ep_image_upload
ep_embedded_hyperlinks2
ep_headings2
ep_align
...
Edit <BASEDIR>/settings.json.docker
at your will. When rebuilding the image, this file will be copied inside your image and renamed to settings.json
.
Each configuration parameter can also be set via an environment variable, using the syntax "${ENV_VAR}"
or "${ENV_VAR:default_value}"
. For details, refer to settings.json.template
.
If you want to install some plugins in your container, it is sufficient to list them in the ETHERPAD_PLUGINS build variable. The variable value has to be a space separated, double quoted list of plugin names (see examples).
Some plugins will need personalized settings. Just refer to the previous section, and include them in your custom settings.json.docker
.
If you want to be able to export your pads to DOC/PDF/ODT files, you can install either Abiword or Libreoffice via setting a build variable.
For installing Abiword, set the INSTALL_ABIWORD
build variable to any value.
Also, you will need to configure the path to the abiword executable
via setting the abiword
property in <BASEDIR>/settings.json.docker
to
/usr/bin/abiword
or via setting the environment variable ABIWORD
to
/usr/bin/abiword
.
For installing Libreoffice instead, set the INSTALL_SOFFICE
build variable
to any value.
Also, you will need to configure the path to the libreoffice executable
via setting the soffice
property in <BASEDIR>/settings.json.docker
to
/usr/bin/soffice
or via setting the environment variable SOFFICE
to
/usr/bin/soffice
.
To run your instance:
docker run --detach --publish <DESIRED_PORT>:9001 <YOUR_USERNAME>/etherpad
And point your browser to http://<YOUR_IP>:<DESIRED_PORT>;
The settings.json.docker
available by default allows to control almost every setting via environment variables.
Variable |
Description |
Default |
|
The name of the instance |
|
|
favicon default name, or a fully specified URL to your own favicon |
|
|
The default text of a pad |
|
|
IP which etherpad should bind at. Change to |
|
|
port which etherpad should bind at |
|
|
the password for the |
|
|
the password for the first user |
Variable |
Description |
Default |
|
a database supported by https://www.npmjs.com/package/ueberdb2 |
not set, thus will fall back to |
|
the host of the database |
|
|
the port of the database |
|
|
the database name |
|
|
a database user with sufficient permissions to create tables |
|
|
the password for the database username |
|
|
the character set for the tables (only required for MySQL) |
|
|
in case |
|
If your database needs additional settings, you will have to use a personalized settings.json.docker
and rebuild the container (or otherwise put the updated settings.json
inside your image).
Variable |
Description |
Default |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Variable |
Description |
Default |
|
focus on the File Menu and/or editbar |
|
|
focus on the Chat window |
|
|
save a revision |
|
|
undo/redo |
|
|
redo |
|
|
italic |
|
|
bold |
|
|
underline |
|
|
backspace |
|
|
strike through |
|
|
ordered list |
|
|
shows a gritter popup showing a line author |
|
|
unordered list |
|
|
ordered list |
|
|
clear authorship |
|
|
|
|
|
|
|
|
in mozilla versions 14-19 avoid reconnecting pad |
|
|
indent |
|
|
scroll to top of pad |
|
|
|
|
|
|
You can use the UI skin variants builder at /p/test#skinvariantsbuilder
For the colibris skin only, you can choose how to render the three main containers: * toolbar (top menu with icons) * editor (containing the text of the pad) * background (area outside of editor, mostly visible when using page style)
For each of the 3 containers you can choose 4 color combinations: * super-light * light * dark * super-dark
For the editor container, you can also make it full width by adding full-width-editor
variant (by default editor is rendered as a page, with a max-width of 900px).
Variable |
Description |
Default |
|
either |
|
|
multiple skin variants separated by spaces |
|
Variable |
Description |
Default |
|
valid values are |
|
|
Privacy: disable IP logging |
|
Variable |
Description |
Default |
|
How often (ms) to rotate in a new secret for signing cookies |
|
|
Value of the SameSite cookie property. |
|
|
How long (ms) a user can be away before they must log in again. |
|
|
How often (ms) to write the latest cookie expiration time. |
|
|
hide/show the settings.json in admin page |
|
|
set to |
|
|
maximum allowed file size when importing a pad, in bytes. |
|
|
maximum number of import/export calls per IP. |
|
|
the call rate for import/export requests will be estimated in this time window (in milliseconds) |
|
|
duration of the rate limit window for commits by individual users/IPs (in seconds) |
|
|
maximum number of changes per IP to allow during the rate limit window |
|
|
Should we suppress errors from being visible in the default Pad Text? |
`false |
|
If this option is enabled, a user must have a session to access pads. This effectively allows only group pads to be accessed. |
|
|
Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. |
|
|
If true, all css & js will be minified before sending to the client. This will improve the loading performance massively, but makes it difficult to debug the javascript/css |
|
|
How long may clients use served javascript code (in seconds)? Not setting this may cause problems during deployment. Set to 0 to disable caching. |
|
|
Absolute path to the Abiword executable. Abiword is needed to get advanced import/export features of pads. Setting it to null disables Abiword and will only allow plain text and HTML import/exports. |
|
|
This is the absolute path to the soffice executable. LibreOffice can be used in lieu of Abiword to export pads. Setting it to null disables LibreOffice exporting. |
|
|
Allow import of file types other than the supported ones: txt, doc, docx, rtf, odt, html & htm |
|
|
This setting is used if you require authentication of all users. Note: "/admin" always requires authentication. |
|
|
Require authorization by a module, or a user with is_admin set, see below. |
|
|
Time (in seconds) to automatically reconnect pad when a "Force reconnect" message is shown to user. Set to 0 to disable automatic reconnection. |
|
|
Percentage of viewport height to be additionally scrolled. e.g. 0.5, to place caret line in the middle of viewport, when user edits a line above of the viewport. Set to 0 to disable extra scrolling |
|
|
Percentage of viewport height to be additionally scrolled. e.g. 0.5, to place caret line in the middle of viewport, when user edits a line below of the viewport. Set to 0 to disable extra scrolling |
|
|
Percentage of viewport height to be additionally scrolled when user presses arrow up in the line of the top of the viewport. Set to 0 to let the scroll to be handled as default by Etherpad |
|
|
Time (in milliseconds) used to animate the scroll transition. Set to 0 to disable animation |
|
|
Flag to control if it should scroll when user places the caret in the last line of the viewport |
|
|
The maximum size (in bytes) of a single message accepted via Socket.IO. If a client sends a larger message, its connection gets closed to prevent DoS (memory exhaustion) attacks. |
|
|
Allow Load Testing tools to hit the Etherpad Instance. WARNING: this will disable security on the instance. |
|
|
Enable dumping objects preventing a clean exit of Node.js. WARNING: this has a significant performance impact. |
|
|
Expose Etherpad version in the web interface and in the Server http header. Do not enable on production machines. |
|
Use a Postgres database, no admin user enabled:
docker run -d \
--name etherpad \
-p 9001:9001 \
-e 'DB_TYPE=postgres' \
-e 'DB_HOST=db.local' \
-e 'DB_PORT=4321' \
-e 'DB_NAME=etherpad' \
-e 'DB_USER=dbusername' \
-e 'DB_PASS=mypassword' \
etherpad/etherpad
Run enabling the administrative user admin
:
docker run -d \
--name etherpad \
-p 9001:9001 \
-e 'ADMIN_PASSWORD=supersecret' \
etherpad/etherpad
Run a test instance running DirtyDB on a persistent volume:
docker run -d \
-v etherpad_data:/opt/etherpad-lite/var \
-p 9001:9001 \
etherpad/etherpad