Run Sentry on Dokku
This project is a clone of the official bootstrap repository (getsentry/onpremise) with a few modifications for a seamless deploy to Dokku.
What you get
This repository will deploy Sentry 9.0. It has been tested with Dokku 0.10+.
When upgrading to a newer version, e.g. 8.22 to 9.0.0, you just need to follow the following steps:
First get the newest version of this repository from GitHub and push it to you Dokku host:
git pull git push dokku master
During the deploy, Dokku will run all commands that are necessary to upgrade the database to the newest version. You do not need to do anything else.
This will guide you through the set up of a new Sentry instance. Make sure to follow these steps one after another.
App and databases
First create a new Dokku app. We'll call it
dokku apps:create sentry
Next we create the databases needed by Sentry and link them.
dokku postgres:create sentry-postgres dokku postgres:link sentry-postgres sentry dokku redis:create sentry-redis dokku redis:link sentry-redis sentry dokku memcached:create sentry-memcached dokku memcached:link sentry-memcached sentry
Set a secret key
dokku config:set --no-restart sentry SENTRY_SECRET_KEY=$(echo `openssl rand -base64 64` | tr -d ' ')
If you want to receive emails from sentry (notifications, activation mails), you need to set the following settings accordingly.
dokku config:set --no-restart sentry SENTRY_EMAIL_HOST=smtp.example.com dokku config:set --no-restart sentry SENTRY_EMAIL_USER=<yourusername> dokku config:set --no-restart sentry SENTRY_EMAIL_PASSWORD=<yourmailpassword> dokku config:set --no-restart sentry SENTRY_EMAIL_PORT=25 dokku config:set --no-restart sentry SENTRY_SERVER_EMAILemail@example.com dokku config:set --no-restart sentry SENTRY_EMAIL_USE_TLS=True
To persists user uploads (e.g. avatars) between restarts, we create a folder on the host machine and tell Dokku to mount it to the app container.
sudo mkdir -p /var/lib/dokku/data/storage/sentry sudo chown 32768:32768 /var/lib/dokku/data/storage/sentry dokku storage:mount sentry /var/lib/dokku/data/storage/sentry:/var/lib/sentry/files
To get the routing working, we need to apply a few settings. First we set the domain.
dokku domains:set sentry sentry.example.com
The parent Dockerfile, provided by the sentry project, exposes port
web requests. Dokku will set up this port for outside communication, as
explained in its
Because we want Sentry to be available on the default port
SSL), we need to fiddle around with the proxy settings.
First remove the proxy mapping added by Dokku.
dokku proxy:ports-remove sentry http:80:5000
dokku proxy:report sentry shows that
DOKKU_PROXY_PORT_MAP is not empty,
remove all remaining port mappings. Next add the correct port mapping for this
dokku proxy:ports-add sentry http:80:9000
Push Sentry to Dokku
Grabbing the repository
First clone this repository onto your machine.
git clone firstname.lastname@example.org:mimischi/dokku-sentry.git
git clone https://github.com/mimischi/dokku-sentry.git
Set up git remote
Now you need to set up your Dokku server as a remote.
git remote add dokku email@example.com:sentry
Now we can push Sentry to Dokku (before moving on to the next part).
git push dokku master
Last but not least, we can go an grab the SSL certificate from Let's Encrypt.
dokku config:set --no-restart sentry DOKKU_LETSENCRYPT_EMAILfirstname.lastname@example.org dokku config:set --no-restart sentry SENTRY_USE_SSL=True dokku letsencrypt sentry
Create a user
Sentry is now up and running on your domain (https://sentry.example.com). Before you're able to use it, you need to create a user.
dokku run sentry sentry createuser
This will prompt you to enter an email, password and whether the user should be a superuser.