Install on a GNU/Linux server


These instructions will work for any of the GNU/Linux distributions where Docker is supported and can be installed.


Only 64 bits distributions are supported. Do not try to install on a 32 bits operating system!



You’ll need a GNU/Linux server. Because of the use of linux containerization technology, other operating systems (FreeBSD, OpenBSD, and others) are not supported.

If you don’t have a server, look at the documentation to rent one: Install in the cloud.


Absolutely required dependencies:

A containerization technology such as docker or podman.


You can have your normal user in the docker group to execute docker commands without sudo (see documentation).

If you are running Ubuntu 20.04 with Docker installed as a snap. Uninstall that and install it without snap. See this issue.

Install docker-compose preferentially with the curl/standalone method to get the latest version, as the repository versions might be outdated and will cause issues. See install docker-compose.

Configure eLabFTW


A proper subdomain is required!

We will install elabctl, a tool to help you manage the elabftw installation. It is not required to install it but it is quite handy so it is recommended (also it’s just a bash script, nothing fancy). If you you do not wish to use elabctl and just want a YAML config to edit, see instructions below for advanced users.

Without elabctl (advanced users)

Get the config with:

curl -so docker-compose.yml ""

Edit this file and docker-compose up -d to launch the containers.

Initialize your database

  • Import the database structure with:

elabctl initialize
# same as: docker exec -it elabftw bin/install start

Replace “elabftw” in the command above by the name of the elabftw container if yours is different (for instance if you have several containers running with redis as session handler). You can check this with elabctl status/docker ps

Register a Sysadmin account

Point your browser to https://<>/register.php

Post install

Don’t forget to setup backup, and subscribe to the newsletter!

The next step is to read the Sysadmin guide.


Documentation for advanced setups

Using a TLS certificate from a different provider than Let’sEncrypt

The webserver in the container expects TLS certificates to be in a particular order and format. Make sure that your fullchain.pem file contains certificates in this order: <certificate> <intermediate ca> <root ca>, with PEM encoding.

Using Apache, nginx, HAProxy or traefik as a reverse proxy

All the documentation related to such configurations can be found here.