Sentry auf Ubuntu 18.04 mit Nginx und Let’s Encrypt Zertifikat installieren

Aktualisierter Beitrag verfügbar

Diesen Beitrag gibt es in einer aktualisierten Version für Ubuntu 20.04 und Caddy als Reverse Proxy (statt Nginx).

Dieses Tutorial beschreibt, wie du Sentry selbst hosten kannst – mit Ubuntu 18.04, Nginx als Webserver und LetsEncrypt-Zertifikaten.

Im ersten Schritt wird Ubuntu 18.04 aufgesetzt. Ich nutze dafür einen Cloud Server von Hetzer. Dein Server sollte über mindestens 4GB Ram verfügen, da das Setup prüft, ob mindestens 2,5GB RAM für Docker verfügbar sind. Aus diesem Grund habe ich mich für einen CX21-Server entschieden.

Nun wird das System aktualisiert:

apt-get update
apt-get full-upgrade
reboot

Im nächsten Schritt wird Docker installiert:

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Sofern du Ubuntu in der 64 Bit-Variante nutzt, kannst du das nachfolgende Kommando ausführen. Nutzt du eine andere Variante, schaue bitte hier nach dem entsprechenden Befehl.

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Um zu prüfen, ob Docker erfolgreich installiert wurde, folgenden Befehl ausführen:

sudo docker run hello-world

Nun sollte als Ausgabe Hello World erscheinen. Wenn dem so ist, funktioniert alles, wie es soll.

Docker Compose

Um Docker Compose zu installieren, den nachfolgenden Befehl ausführen. Vermutlich gibt es aber zwischenzeitlich eine neuere Version, das kannst du hier überprüfen.:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Optional: Sofern Docker Compose nach der Installation nicht funktioniert, musst du diesen Symlink anlegen:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Sentry installieren

Um Sentry selbst zu installieren, folgenden Befehl ausführen:

git clone https://github.com/getsentry/onpremise.git

Vor der eigentlichen Installation, prüfe bitte hier die Konfigurations-Parameter. Nach Prüfung der Seite und dem Setzen der entsprechenden Einstellungen (z.B. Mail), führe folgenden Befehl aus:

./install.sh

Nachdem der Installationsprozess durchlaufen ist kannst du über folgenden Befehl Sentry starten:

docker-compose up -d

Nginx installieren

Im nächsten Schritt wird Nginx als Reverse Proxy installiert. Um Nginx zu installieren, folgenden Befehl ausführen:

apt-get install nginx-full

Benenne anschließend die Standard-Konfigurationsdatei um:

mv /etc/nginx/sites-available/default /etc/nginx/sites-available/old_default

Im nächsten Schritt wird eine neue Standardkonfiguration erstellt (your.server.name musst du natürlich ersetzen):

server {
    listen   80;
    server_name your.server.name;

    location / {
        proxy_pass        http://localhost:9000;

        add_header Strict-Transport-Security "max-age=31536000";
    }
}

Überprüfe nun, ob deine Konfiguration eventuell Fehler enthält:

sudo nginx -t

Wenn alles passt, lade die Konfiguration:

sudo systemctl reload nginx

Wenn du nun http://your.server.name aufrufst, sollte deine Sentry-Installation erscheinen. Allerdings unverschlüsselt über HTTP, daher folgt nun die Installation des für HTTPS erforderlichen Zertifikats.

LetsEncrypt Zertifikat installieren

Führe folgende Befehle aus:

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx

Nun musst du diesen Befehl ausführen, um das gewünschte Zertifikat zu erhalten. your.server.name musst du dabei natürlich wieder ersetzen:

sudo certbot --nginx -d your.server.name

Ein Assistent führt dich durch den Setup-Prozess. Wenn dieser abgeschlossen ist, kannst du mittels folgendem Befehl prüfen, ob das automatische Aktualisieren des Zertifikats funktioniert:

sudo certbot renew --dry-run

Firewall einrichten

Um den Server etwas besser abzusichern wird nun noch die Firewall konfiguriert. Zunächst wird der Status geprüft:

sudo ufw status

Füge nun die für Nginx und ssh erforderlichen Regeln hinzu:

sudo ufw allow ssh
sudo ufw allow 'Nginx Full'

Und aktiviere anschließend die Firewall:

sudo ufw enable

Abschluss

Der Setup-Prozess ist nun abgeschlossen. Aber Achtung, es handelt sich um ein sehr rudimentäres Setup. Im nächsten Schritt solltest du beispielsweise den SSH-Zugriff für den root-User deaktivieren und auf Authentifizierung mittels Zertifikat umsteigen. Aber das ist nicht Bestandteil dieses Tutorials. Das eigentliche Ziel, eine eigene Instanz von Sentry zum Laufen zu bekommen, ist nun erreicht.

Schreibe einen Kommentar