Skip to content

Commit

Permalink
Improve docker compose deployment documentation (inovex#4561 )
Browse files Browse the repository at this point in the history
  • Loading branch information
Avalancs committed Nov 15, 2024
1 parent 2141774 commit 2ca2f17
Showing 1 changed file with 39 additions and 9 deletions.
48 changes: 39 additions & 9 deletions docs/src/content/docs/self-hosting/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,52 +8,82 @@ sidebar:
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
# Prerequisites

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

```sh
git clone https://github.com/inovex/scrumlr.io
cd scrumlr.io/deployment/docker
```

Copy the `.env.example` file to `.env` and adjust the variables to your needs.

```sh
cp .env.example .env
```

## Generating needed secrets
For a new deployment the mandatory variables to fill out are `POSTGRES_PASSWORD` and `SCRUMLR_PRIVATE_KEY`.

# Generating needed secrets

### Postgres Password

Generate a secure password for the Postgres database.
Make sure to set the `POSTGRES_PASSWORD`variable in your .env file to the generated 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):

```sh
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.***

```sh
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.

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

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

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

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

# Deployment

You can now start the deployment using the following command.

```sh
docker-compose up -d
```

After a few seconds you can check with `docker ps --all` to see if all the containers have started up. If one crashed or if there is an issue you can check logs with `docker logs (container name or id)`

## 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.
Scrumlr should work with all major reverse proxies like [Nginx](https://nginx.org), [Traefik](https://traefik.io/traefik/) or [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy).
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 `0.0.0.0:80`.
If you dont want TLS you can simply keep the specified port.
All you need to do is updating the `Caddyfile` to include your host domain instead of `0.0.0.0: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.


0 comments on commit 2ca2f17

Please sign in to comment.