Sentry is an error tracking software product which has many different subscriptions options. Its software is open source and can be difficult to install if you are unfamiliar with the server side of things and hosting. They do offer a free hosted option for up to 10k events per month, 1 user and up to seven days retention.

In this example, I’m using an updated Ubuntu 16.04.2 LTS install. To get started, we will install several packages. Note, this will install Redis and PostgreSQL. Typically, you would want to install these on their own servers.

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y python-virtualenv python-setuptools python-pip libxslt1-dev gcc sudo apt-get install -y libffi-dev libjpeg-dev libxml2-dev libxslt-dev libyaml-dev python-dev sudo apt-get install -y python-setuptools python-dev libxslt1-dev gcc libffi-dev libjpeg-dev sudo apt-get install -y libxml2-dev libxslt-dev libyaml-dev libpq-dev nginx sudo apt-get install -y postgresql-server-dev-9.5 supervisor nodejs sudo apt-get install -y postgresql redis-server 1 2 3 4 5 6 7 8 9 curl - sL https : / / deb .nodesource .com / setup_6 .x | sudo - E bash - sudo apt - get install - y python - virtualenv python - setuptools python - pip libxslt1 - dev gcc sudo apt - get install - y libffi - dev libjpeg - dev libxml2 - dev libxslt - dev libyaml - dev python - dev sudo apt - get install - y python - setuptools python - dev libxslt1 - dev gcc libffi - dev libjpeg - dev sudo apt - get install - y libxml2 - dev libxslt - dev libyaml - dev libpq - dev nginx sudo apt - get install - y postgresql - server - dev - 9.5 supervisor nodejs sudo apt - get install - y postgresql redis - server

We’ll then create a sentry user that will be running the software. We will also allow this use to be a sudoer.

sudo adduser sentry sudo adduser sentry sudo 1 2 3 4 sudo adduser sentry sudo adduser sentry sudo

Next, we need to create our database. To do this, we will login as the postgres user and open the template1 database. We’ll create a sentry database user and password. Be sure to change this password. We then need to create the citext extension.

sudo su - postgres psql template1 create extension citext; create user sentry with password 'sentry'; create database sentrydb with owner sentry; \q exit 1 2 3 4 5 6 7 8 9 sudo su - postgres psql template1 create extension citext ; create user sentry with password 'sentry' ; create database sentrydb with owner sentry ; \ q exit

We will then login as the sentry user and create a virtual environment for sentry.

sudo su - sentry virtualenv ~/sentry_app/ source ~/sentry_app/bin/activate 1 2 3 4 5 sudo su - sentry virtualenv ~ / sentry_app / source ~ / sentry_app / bin / activate

Let’s install sentry

pip install -U sentry sentry init 1 2 3 4 pip install - U sentry sentry init

Let’s configure the sentry.conf.py with vi , nano or whatever your preferred editor is.

nano ~/.sentry/sentry.conf.py DATABASES = { 'default': { 'ENGINE': 'sentry.db.postgres', 'NAME': 'sentrydb', 'USER': 'sentry', 'PASSWORD': 'sentry', # <-- or whatever you set with the psql command 'HOST': 'localhost', 'PORT': '5432', } } 1 2 3 4 5 6 7 8 9 10 11 12 13 nano ~ / .sentry / sentry .conf .py DATABASES = { 'default' : { 'ENGINE' : 'sentry.db.postgres' , 'NAME' : 'sentrydb' , 'USER' : 'sentry' , 'PASSWORD' : 'sentry' , # <-- or whatever you set with the psql command 'HOST' : 'localhost' , 'PORT' : '5432' , } }

We’re now ready to upgrade! This will migrate the database; building the tables and initial data. You will also be asked to create a user which will be your login information.

sentry upgrade 1 2 3 sentry upgrade

Let’s log out of the sentry user and make sentry startup whenever the server boots.

exit sudo nano /etc/supervisor/conf.d/sentry.conf 1 2 3 4 exit sudo nano / etc / supervisor / conf .d / sentry .conf

We’ll then paste this into sentry.conf

[program:sentry-web] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry run web autostart=true autorestart=true redirect_stderr=true user=sentry stdout_logfile=syslog stderr_logfile=syslog [program:sentry-worker] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry run worker autostart=true autorestart=true redirect_stderr=true user=sentry stdout_logfile=syslog stderr_logfile=syslog [program:sentry-cron] directory=/home/sentry/sentry_app/ environment=SENTRY_CONF="/home/sentry/.sentry" command=/home/sentry/sentry_app/bin/sentry run cron autostart=true autorestart=true redirect_stderr=true stdout_logfile=syslog stderr_logfile=syslog 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [ program : sentry - web ] directory = / home / sentry / sentry_app / environment = SENTRY_CONF = "/home/sentry/.sentry" command = / home / sentry / sentry_app / bin / sentry run web autostart = true autorestart = true redirect_stderr = true user = sentry stdout_logfile = syslog stderr_logfile = syslog [ program : sentry - worker ] directory = / home / sentry / sentry_app / environment = SENTRY_CONF = "/home/sentry/.sentry" command = / home / sentry / sentry_app / bin / sentry run worker autostart = true autorestart = true redirect_stderr = true user = sentry stdout_logfile = syslog stderr_logfile = syslog [ program : sentry - cron ] directory = / home / sentry / sentry_app / environment = SENTRY_CONF = "/home/sentry/.sentry" command = / home / sentry / sentry_app / bin / sentry run cron autostart = true autorestart = true redirect_stderr = true stdout_logfile = syslog stderr_logfile = syslog

We’ll then update supervisor and check its status.

sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl status 1 2 3 4 5 6 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl status

The app will then be available at http://localhost:9000 . If you want to set up SSL or run sentry on port 80, we can create an NGINX proxy.

sudo nano /etc/nginx/sites-enabled/default 1 2 3 sudo nano / etc / nginx / sites - enabled / default

Then replace the location / with the following.

location / { proxy_pass http://localhost:9000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 1 2 3 4 5 6 7 8 9 10 location / { proxy_pass http : / / localhost : 9000 ; proxy_redirect off ; proxy_set_header Host $host ; proxy_set _ header X - Forwarded - For $proxy_add_x_forwarded_for ; proxy_set _ header X - Forwarded - Proto $scheme ; }

If you need to configure your email settings, you can edit /home/sentry/.sentry/config.yml .

You can also setup crontab to cleanup the sentry data periodically.

crontab -e 0 3 * * * sentry cleanup --days=30 1 2 3 4 crontab - e 0 3 * * * sentry cleanup -- days = 30

Your site will be live at http://x.x.x.x/auth/login . Start a project and and tracking errors now!