The mechanism used for determining if the application is being served over SSL
is wrapped by the "express-session" library for "express_sid", and manual for
the "language" cookie, but it's very similar in both cases.
The "secure" flag is set if one of these is true:
1. we are directly serving Etherpad over SSL using the native nodejs
functionality, via the "ssl" options in settings.json
2. Etherpad is being served in plaintext by nodejs, but we are using a reverse
proxy for terminating the SSL for us;
In this case, the user has to be instructed to properly set trustProxy: true
in settings.json, and the information wheter the application is over SSL or
not will be extracted from the X-Forwarded-Proto HTTP header.
Please note that this will not be compatible with applications being served over
http and https at the same time.
The change on webaccess.js amends 009b61b338
, which did not work when the SSL
termination was performed by a reverse proxy.
Reference for automatic "express_sid" configuration:
https://github.com/expressjs/session/blob/v1.17.0/README.md#cookiesecure
Closes #3561.
3.8 KiB
Docker
The official Docker image is available on https://hub.docker.com/r/etherpad/etherpad.
Downloading from Docker Hub
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
Build a personalized container
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.
Rebuilding with custom settings
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
.
Rebuilding including some plugins
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
.
Examples
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 .
Running your instance:
To run your instance:
docker run --detach --publish <DESIRED_PORT>:9001 <YOUR_USERNAME>/etherpad
And point your browser to http://<YOUR_IP>:<DESIRED_PORT>
Options available by default
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
,colibris
or 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_TYPE
isDirtyDB
, the database filename. Default:var/dirty.db
ADMIN_PASSWORD
: the password for theadmin
user (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 totrue
if 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
,WARN
andERROR
Examples
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