Etherpad Lite image for docker
This image uses a database (mysql or postgres) container for the backend for
the pads. It is based on debian jessie instead of the official node docker
image, since the latest stable version of etherpad-lite does not support npm 2.
About Etherpad Lite
From the official website:
Etherpad allows you to edit documents collaboratively in real-time, much like a live multi-player editor that runs in your browser. Write articles, press releases, to-do lists, etc. together with your friends, fellow students or colleagues, all working on the same document at the same time.
All instances provide access to all data through a well-documented API and supports import/export to many major data exchange formats. And if the built-in feature set isn't enough for you, there's tons of plugins that allow you to customize your instance to suit your needs.
You don't need to set up a server and install Etherpad in order to use it. Just pick one of publicly available instances that friendly people from everywhere around the world have set up. Alternatively, you can set up your own instance by following our installation guide
First you need a running mysql container, for example:
$ docker network create ep_network $ docker run -d --network ep_network -e MYSQL_ROOT_PASSWORD=password --name ep_mysql mysql
Finally you can start an instance of Etherpad Lite:
$ docker run -d \ --network ep_network \ -e ETHERPAD_DB_HOST=ep_mysql \ -e ETHERPAD_DB_PASSWORD=password \ -p 9001:9001 \ tvelocity/etherpad-lite
Etherpad will automatically create an
etherpad database in the specified mysql
server if it does not already exist.
You can now access Etherpad Lite from http://localhost:9001/
This image supports the following environment variables:
ETHERPAD_TITLE: Title of the Etherpad Lite instance. Defaults to "Etherpad".
ETHERPAD_PORT: Port of the Etherpad Lite instance. Defaults to 9001.
ETHERPAD_ADMIN_PASSWORD: If set, an admin account is enabled for Etherpad,
and the /admin/ interface is accessible via it.
ETHERPAD_ADMIN_USER: If the admin password is set, this defaults to "admin".
Otherwise the user can set it to another username.
ETHERPAD_DB_TYPE: Type of databse to use. Defaults to
ETHERPAD_DB_HOST: Hostname of the database to use. Defaults to
ETHERPAD_DB_USER: By default Etherpad Lite will attempt to connect as root
to the database container.
ETHERPAD_DB_PASSWORD: Password to use, mandatory. If legacy links
are used and
ETHERPAD_DB_USERis root, then
ETHERPAD_DB_PASSWORD_FILE: MySQL password to use, replace
when using Docker secrets.
ETHERPAD_DB_NAME: The database to use. Defaults to etherpad. If the
database is not available, it will be created when the container is launched
(only if the database type is either
postgres, and the user need to
have the right to create the database).
ETHERPAD_DB_CHARSET: The charset to use. Defaults to utf8mb4.
The generated settings.json file will be available as a volume under
I noticed that the mySQL DB contains a table "store" but it's empty. If I restart the containers, all pads are lost.
Does anyone know the reason?
Obviously the DB connection needs to work because the store table is created. I cannot see any error messages in the docker logs...
My .env variable definition was wrong:
and caused the " to appear literally in the config file, breaking it, like so:
lesson_learned=do not use " in .env files
I just built the image from Dockerfile and starting as described in readme works flawlessy. So it must be my setup here (docker-compose with .env vars). Sorry for the noise.
Here, the container does not start, but loops the following error. Any ideas?
etherpad-lite | Ensure that all dependencies are up to date... If this is the first time you have run Etherpad please be patient. etherpad-lite | npm WARN package.json email@example.com No repository field. etherpad-lite | npm WARN package.json firstname.lastname@example.org No repository field. etherpad-lite | npm WARN package.json email@example.com No repository field. etherpad-lite | Ensure jQuery is downloaded and up to date... etherpad-lite | Clearing minified cache... etherpad-lite | Ensure custom css/js files are created... etherpad-lite | Started Etherpad... etherpad-lite | [2017-03-18 08:28:42.857] [ERROR] console - There was an error processing your settings.json file: Unexpected token E
Sorry, my bad, it was a browser caching issue. Reloading the page using
Ctrl+Shift+R fixed the problem.
@jacobhenner I'd say you should handle SSL with a nginx proxy that points to the etherpad container
@juanpereyra you should be able to use the automatic
link env variables : https://docs.docker.com/userguide/dockerlinks/#environment-variables
It should be :
MYSQL_PORT_3306_TCP_ADDR=ip address of your mysql instance MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP_PROTO=tcp
But, I think it is better to launch a mysql in a container anyway. And with docker swarm, you should be able to link between hosts.
Can SSL/TLS capabilities be added?
Error response from daemon: Cannot start container 506ea8fa400bbfa2f6fa1a9fef3aeafdaaabcd65d6526cd5cc09de2202f2c091: Cannot link to a non running container: /ep_mysql AS /jolly_sinoussi/mysql when I try to run the etherpad container. I run the mysql first. I'm new to docker, so it might be something trivial. Thank you!