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.
git clone https://github.com/inovex/scrumlr.iocd 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.
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):
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.
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:
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
pwgen -s 64 1
Deployment
You can now start the deployment using the following command.
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
- Postgres, nats and caddy
- Scrumlr backend
- 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.