Self-hosting TAGUETTE

Taguette can be run in two separate ways:

Using Docker

If you so choose, you can simply run the Docker image. You will be prompted for an 'admin' password the first time. You can persist the data by mounting a volume over /data, like so:

docker run --rm default-config >/srv/taguette/
edit /srv/taguette/  # Edit configuration file, see below
docker run -ti -p 80:7465 -v /srv/taguette:/data --restart=always server /data/

If you want to use docker-compose, you can replace the last command (after setting up the configuration file) by docker-compose up, with a docker-compose.yml like:

version: "2.4"
    command: ["server", "/"]
    ports: [""]
      - "./"
      - "./data:/data"

"Native" installation on a server

You need Python 3.5 or better to run Taguette. Simply run pip install taguette to install the software. To be able to import non-HTML documents, you also need Calibre installed (specifically, the ebook-convert command).

Using a virtual environment is recommended. Example installation on Ubuntu:

apt update
apt install calibre python3.5 virtualenv
virtualenv --python=python3.5 /srv/taguette
. /srv/taguette/bin/activate
pip install taguette
taguette default-config >
edit  # Edit configuration file, see below
taguette --no-browser server

Configuration file

In either case, running the server requires a configuration file. This file contains important information, such as email server and addresses, the port number to listen on, which database to use, whether registration of new accounts is enabled, etc.

You can make Taguette print a configuration file for you to edit using taguette default-config.

You might want to change the PORT to 80, or better yet configure a web-server to act as a proxy, see below.

Using a proxy server

For performance or security reasons, or simply because you want to host multiple sites on your machine, you might want to put a web-server (such as nginx or Apache) in front of Taguette. That server will then simply relay connections to Taguette (a setup we call reverse proxy). You can use it to provide encryption using TLS (recommended) for example using Let's Encrypt, free.

To help with this, we provide example configuration files that you can use.


The DATABASE setting should be a SQLAlchemy connection string. For example, you can use: