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.0If 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.
Edit <BASEDIR>/settings.json.docker at your will. When rebuilding the image, this file will be copied inside your image and renamed to setting.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.
Build a Docker image from the currently checked-out code:
docker build --tag <YOUR_USERNAME>/etherpad .Include two plugins in the container:
docker build --build-arg ETHERPAD_PLUGINS="ep_codepad ep_author_neat" --tag <YOUR_USERNAME>/etherpad .To run your instance:
docker run --detach --publish <DESIRED_PORT>:9001 <YOUR_USERNAME>/etherpadAnd point your browser to http://<YOUR_IP>:<DESIRED_PORT>
The settings.json.docker available by default enables some configuration to be set from the environment.
Available options:
TITLE: The name of the instanceFAVICON: favicon default name, or a fully specified URL to your own faviconSKIN_NAME: eitherno-skin,colibrisor an existing directory undersrc/static/skins.IP: IP which etherpad should bind at. Change to::for IPv6PORT: port which etherpad should bind atSHOW_SETTINGS_IN_ADMIN_PAGE: hide/show the settings.json in admin pageDB_TYPE: a database supported by https://www.npmjs.com/package/ueberdb2DB_HOST: the host of the databaseDB_PORT: the port of the databaseDB_NAME: the database nameDB_USER: a database user with sufficient permissions to create tablesDB_PASS: the password for the database usernameDB_CHARSET: the character set for the tables (only required for MySQL)DB_FILENAME: in caseDB_TYPEisDirtyDB, the database filename. Default:var/dirty.dbADMIN_PASSWORD: the password for theadminuser (leave unspecified if you do not want to create it)USER_PASSWORD: the password for the first useruser(leave unspecified if you do not want to create it)TRUST_PROXY: set totrueif you are using a reverse proxy in front of Etherpad (for example: Traefik for SSL termination via Let's Encrypt). This will affect security and correctness of the logs if not doneLOGLEVEL: valid values areDEBUG,INFO,WARNandERROR
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/etherpadRun enabling the administrative user admin:
docker run -d \
--name etherpad \
-p 9001:9001 \
-e 'ADMIN_PASSWORD=supersecret' \
etherpad/etherpadRun a test instance running DirtyDB on a persistent volume:
docker run -d \
-v etherpad_data:/opt/etherpad-lite/var \
-p 9001:9001 \
etherpad/etherpad