So installierst du Rainloop Webmail unter Ubuntu 22.04
Rainloop ist ein in PHP geschriebener, webbasierter Open-Source-E-Mail-Client. Er ist schnell, leichtgewichtig und unterstützt die Protokolle SMTP und IMAP.
In dieser Anleitung lernst du, wie du den Rainloop-Client auf einem Ubuntu 22.04-Server installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein Domainname, der auf den Server verweist. Für unser Tutorial werden wir die Domain
rainloop.example.com
verwenden. - Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Stelle sicher, dass alles auf dem neuesten Stand ist.
$ sudo apt update && sudo apt upgrade
- Installiere grundlegende Hilfspakete. Einige von ihnen sind vielleicht schon installiert.
$ sudo apt install wget curl nano unzip -y
Schritt 1 – Firewall konfigurieren
Der erste Schritt vor der Installation von Rainloop ist die Konfiguration der Firewall. Überprüfe den Status der Firewall.
$ sudo ufw status
Du solltest etwas wie das Folgende sehen.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Rainloop benötigt HTTP- und HTTPs-Ports, um zu funktionieren.
$ sudo ufw allow http $ sudo ufw allow https
Öffne die Ports für die Mailkonten, die du benutzt.
$ sudo ufw allow 587/tcp $ sudo ufw allow 993/tcp $ sudo ufw allow 465/tcp
Überprüfe den Status zur Bestätigung noch einmal.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere 587/tcp ALLOW Anywhere 993/tcp ALLOW Anywhere 465/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 587/tcp (v6) ALLOW Anywhere (v6) 993/tcp (v6) ALLOW Anywhere (v6) 465/tcp (v6) ALLOW Anywhere (v6)
Schritt 2 – Installiere Nginx
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.
Importiere den Signierschlüssel von Nginx mit curl und gpg.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Füge das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisiere die System-Repositories.
$ sudo apt update
Installiere Nginx.
$ sudo apt install nginx
Überprüfe die Installation.
$ nginx -v nginx version: nginx/1.22.0
Schritt 3 – PHP installieren und konfigurieren
Ubuntu 22.04 wird standardmäßig mit PHP 8.1 ausgeliefert. Aber damit Rainloop funktioniert, müssen wir PHP 8.0 installieren. Der erste Schritt besteht darin, das PHP-Repository von Ondrej hinzuzufügen.
$ sudo add-apt-repository ppa:ondrej/php
Installiere PHP und die erforderlichen Erweiterungen, die Rainloop benötigt.
$ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli
Überprüfe die Installation.
$ php --version PHP 8.0.20 (cli) (built: Jun 25 2022 08:12:05) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.20, Copyright (c) Zend Technologies with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies
Überprüfe den Status des PHP-Dienstes.
$ sudo systemctl status php8.0-fpm ? php8.0-fpm.service - The PHP 8.0 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-07-04 01:52:55 UTC; 1min 22s ago Docs: man:php-fpm8.0(8) Process: 12463 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.0/fpm/pool.d/www.conf 80 (code=exited, status=0/SUCCESS) Main PID: 12460 (php-fpm8.0) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2241) Memory: 8.7M CPU: 89ms CGroup: /system.slice/php8.0-fpm.service ??12460 "php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)
Öffne die Datei php.ini
zum Bearbeiten.
$ sudo nano /etc/php/8.0/fpm/php.ini
Ändere die Werte der folgenden Variablen, um die Größe des Mailanhangs auf 25 MB zu setzen.
upload_max_filesize = 25M post_max_size = 25M
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Öffne die Datei /etc/php/8.0/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Finde die Zeilen user=apache
und group=apache
in der Datei und ändere sie wie folgt.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Suche auch die Zeilen listen.owner = www-data
und listen.group = www-data
und ändere sie wie folgt.
... ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. The owner ; and group can be specified either by name or by their numeric IDs. ; Default Values: user and group are set as the running user ; mode is set to 0660 listen.owner = nginx listen.group = nginx ...
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte den PHP-FPM-Dienst neu.
$ sudo systemctl restart php8.0-fpm
Schritt 4 – Installiere MySQL
Ubuntu 22.04 wird mit der neuesten Version von MySQL ausgeliefert. Du kannst sie mit einem einzigen Befehl installieren.
$ sudo apt install mysql-server
Überprüfe die Version von MySQL.
$ mysql --version mysql Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Dieser Schritt ist für die MySQL-Versionen 8.0.28 und höher notwendig. Rufe die MySQL-Shell auf.
$ sudo mysql
Führe den folgenden Befehl aus, um das Passwort für deinen Root-Benutzer festzulegen. Achte darauf, dass es eine Mischung aus Zahlen, Groß- und Kleinbuchstaben und Sonderzeichen enthält.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Beende die Shell.
mysql> exit
Führe das Skript für die sichere Installation von MySQL aus.
$ sudo mysql_secure_installation
Zuerst wirst du nach deinem Root-Passwort gefragt. Gib es ein. Als Nächstes wirst du aufgefordert, die Validate Password Component zu installieren. Sie prüft die Stärke der in MySQL verwendeten Passwörter. Drücke Y, um sie zu installieren.
Als Nächstes wirst du aufgefordert, die Stufe der Passwortvalidierung festzulegen. Wähle 2, da dies die stärkste Stufe ist.
Drücke N, um die Änderung deines Root-Passworts abzulehnen. Drücke außerdem Y, um anonyme Benutzer zu entfernen, Remote-Root-Logins zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.
Schritt 5 – MySQL konfigurieren
Melde dich in der MySQL-Shell an. Gib dein Root-Passwort ein, wenn du dazu aufgefordert wirst.
$ sudo mysql -u root -p
Erstelle eine Datenbank für Rainloop.
mysql> CREATE DATABASE rainloop;
Erstelle einen SQL-Benutzer für den Zugriff auf die Datenbank. Ersetze yourpassword
durch ein Passwort deiner Wahl.
mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Gewähre rainuser
Zugriff auf die Datenbank.
mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';
Lade die Berechtigungstabelle neu.
mysql> FLUSH PRIVILEGES;
Beende die Shell.
mysql> exit
Schritt 6 – Installiere Rainloop
Erstelle das öffentliche Verzeichnis für Rainloop.
$ sudo mkdir /var/www/html/rainloop -p
Lade die neueste Version von Rainloop herunter.
$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
Entpacke die heruntergeladene Datei in das öffentliche Verzeichnis.
$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop
Ändere den Eigentümer des Verzeichnisses auf Nginx.
$ sudo chown -R nginx:nginx /var/www/html/rainloop
Setze die von Rainloop benötigten Lese- und Schreibrechte.
$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \; $ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;
Schritt 7 – SSL installieren
Wir müssen Certbot installieren, um die von Let’s Encrypt angebotenen kostenlosen SSL-Zertifikate zu generieren.
Du kannst Certbot entweder über das Ubuntu-Repository installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe den folgenden Befehl aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core
Installiere Certbot.
$ sudo snap install --classic certbot
Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin
erstellst.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Erstelle ein SSL-Zertifikat für Rainloop.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d rainloop.example.com
Erstelle ein Diffie-Hellman-Gruppenzertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Öffne die Datei /etc/letsencrypt/renewal/rainloop.example.com.conf
zur Bearbeitung.
$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf
Füge den folgenden Code am Ende der Datei ein.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Wir haben das SSL-Zertifikat mit der Standalone-Option von Certbot erstellt. Es lässt seinen Webserver laufen, um das Zertifikat zu erstellen, was bedeutet, dass Nginx während der Erneuerung abgeschaltet sein sollte. Die Befehle pre_hook und post_hook werden vor und nach der Erneuerung ausgeführt, um den Nginx-Server automatisch abzuschalten und neu zu starten, sodass kein manuelles Eingreifen erforderlich ist.
Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.
Schritt 8 – Nginx konfigurieren
Öffne die Datei nginx.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/nginx.conf
Finde die Zeile include /etc/nginx/conf.d/*.conf;
und füge den folgenden Code darunter ein.
server_names_hash_bucket_size 64;
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Erstelle die Rainloop-Konfigurationsdatei für Nginx und öffne sie zum Bearbeiten.
$ sudo nano /etc/nginx/conf.d/rainloop.conf
Füge den folgenden Code in die Datei ein.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name rainloop.example.com; root /var/www/html/rainloop; index index.php; client_max_body_size 25M; access_log /var/log/nginx/rainloop.access.log; error_log /var/log/nginx/rainloop.error.log; ssl_certificate /etc/letsencrypt/live/rainloop.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rainloop.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/rainloop.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_keep_conn on; include fastcgi_params; fastcgi_pass unix:/run/php/php8.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } location ^~ /data { deny all; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name rainloop.example.com; return 301 https://$host$request_uri; }
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe die Syntax der Nginx-Konfiguration.
$ sudo nginx -t
Starte den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Schritt 9 – Rainloop konfigurieren und aufrufen
Öffne die Rainloop-Administratorseite über die URL https://rainloop.example.com/?admin
und du erhältst den folgenden Anmeldebildschirm.
Gib die folgenden Anmeldedaten ein und drücke die Eingabetaste, um dich anzumelden.
Username: admin Password: 12345
Das Rainloop-Administrator-Dashboard öffnet sich mit einer Warnung, dass du dein Standardpasswort ändern musst.
Ändere das Standardpasswort, indem du den Link im Dashboard benutzt.
Gib dein neues Passwort ein und klicke auf die Schaltfläche Passwort aktualisieren, um fortzufahren.
Rainloop verwendet MySQL, um Kontaktinformationen zu speichern. Öffne die Seite Kontakte und wähle MySQL aus dem Dropdown-Menü.
Gib die zuvor erstellten Datenbank-Anmeldedaten ein.
Klicke auf die Schaltfläche Test, um die Verbindung zu überprüfen und die Tabellen zu installieren. Wenn die Schaltfläche grün wird, bedeutet das, dass die Verbindung erfolgreich hergestellt wurde.
Du kannst Rainloop nun nutzen, indem du deine E-Mail-Konten hinzufügst.
Fazit
Du hast Rainloop erfolgreich auf einem Ubuntu 22.04 Server installiert. Wenn du Fragen hast, schreibe sie unten in die Kommentare.