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.