Skip to content

Docker Compose

Scrumlr can be deployed using a Docker Compose file. This is the easiest way to get started with Scrumlr. We maintain a Docker Compose file in our Repository that you can use to deploy Scrumlr.

Prerequisites

Clone the Scrumlr repository to your server and navigate to the deployment directory.

Terminal window
git clone https://github.com/inovex/scrumlr.io
cd scrumlr.io/deployment/docker

After you cloned the repository and switched to the directory, copy the .env.example file to .env and adjust the variables in the .env file to your needs.

Terminal window
cp .env.example .env

A description of all environment variables can be found here. For a new deployment the mandatory variables to fill out are POSTGRES_PASSWORD and SCRUMLR_PRIVATE_KEY.

Some environment variables have a default value set in the Dockerfile. If the variable is set in the .env file, the default value will be overwritten. If an environment variable has no default value and is not set in the .env file, the value will be ignored.

Generating needed secrets

Postgres Password

Make sure to set the POSTGRES_PASSWORD variable in your .env file to a secure password. For example you can generate a 64 characters long one from the terminal with the following command (if you have pwgen installed):

Terminal window
pwgen -s 64 1

JWT Private Key

We use an ECDSA private key to sign the JWT tokens.

Make sure to keep this key secure as it can be used to decrypt the tokens and generate new ones, potentially compromising your users’ accounts.

Terminal window
openssl ecparam -genkey -name secp521r1 -noout -out jwt.key

Now we need to encode this key to be able to use it as a string in the .env file:

Terminal window
cat jwt.key | awk '{printf "%s\\n", $0}'

Copy the result of this command and paste it into your .env file (with \n line breaks included) like this, surrounded with quotes:

SCRUMLR_PRIVATE_KEY="-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----\n"

Session Secret

Make sure to set the SESSION_SECRET variable in your .env file if you are using an authentication provider. You can generate a session secret with

Terminal window
pwgen -s 64 1

Deployment

You can now start the deployment using the following command.

Terminal window
docker compose up -d

After a few seconds you can check with docker ps --all to see if all the containers have started up. The docker containers start in the following order

  1. Postgres, nats and caddy
  2. Scrumlr backend
  3. Scrumlr frontend

If one crashed or if there is an issue you can check logs with docker logs (container name or id)

Once all container started you can vist localhost:80 to access Scrumlr.

Reverse Proxy

We strongly recommend using a reverse proxy to handle TLS termination and to provide a secure connection to your users. Scrumlr should work with all major reverse proxies like Nginx, Traefik or Caddy. We automatically include a caddy deployment in the docker-compose file, which you can use as a reverse proxy. All you need to do is updating the Caddyfile to include your host domain instead of :80. If you don’t want TLS you can simply keep the specified port. Keep in mind that running Scrumlr without TLS is not recommended.

your_domain {
}

Troubleshooting

Scrumlr works fine on my machine, but others get an error when they click on “Start now”

Make sure the SCRUMLR_SERVER_URL in the .env file uses your external ip address, instead of localhost or 127.0.0.1. You can search “what is my ip” on the internet to find your external ip address.