Rainloop Webmail installeren op Ubuntu 22.04
Rainloop is een open-source, web-gebaseerd e-mail programma geschreven in PHP. Het is snel, lichtgewicht, en ondersteunt SMTP en IMAP protocollen.
Deze gids leert je om het Rainloop programma te installeren op een Ubuntu 22.04 server.
Vereisten
Een server waarop Ubuntu 22.04 draait.
Een domeinnaam die naar de server wijst. Voor onze handleiding zullen we het
rainloop.example.com
domein gebruiken.Een niet-root gebruiker met sudo rechten.
Zorg ervoor dat alles bijgewerkt is.
$ sudo apt update && sudo apt upgrade
Installeer basis hulppakketten. Sommige kunnen al geïnstalleerd zijn.
$ sudo apt install wget curl nano unzip -y
Stap 1 – Firewall instellen
De eerste stap voor je Rainloop installeert is het instellen van de firewall. Controleer de status van de firewall.
$ sudo ufw status
Je zou iets als het volgende moeten zien.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Rainloop heeft HTTP en HTTPs poorten nodig om te kunnen werken.
$ sudo ufw allow http $ sudo ufw allow https
Open poorten voor de mail accounts die je gebruikt.
$ sudo ufw allow 587/tcp $ sudo ufw allow 993/tcp $ sudo ufw allow 465/tcp
Controleer de status nogmaals om te bevestigen.
$ 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)
Stap 2 – Installeer Nginx
Ubuntu 22.04 wordt geleverd met een oudere versie van Nginx. Om de nieuwste versie te installeren, moet je de officiële Nginx repository downloaden.
Importeer de ondertekeningssleutel van Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Voeg de repository voor de stabiele versie van Nginx toe.
$ 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
Werk de systeem repositories bij.
$ sudo apt update
Installeer Nginx.
$ sudo apt install nginx
Verifieer de installatie.
$ nginx -v nginx version: nginx/1.22.0
Stap 3 – Installeer en configureer PHP
Ubuntu 22.04 wordt standaard geleverd met PHP 8.1. Maar om Rainloop te laten werken, moeten we PHP 8.0 installeren. De eerste stap is het toevoegen van Ondrej’s PHP repository.
$ sudo add-apt-repository ppa:ondrej/php
Installeer PHP en de door Rainloop benodigde uitbreidingen.
$ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli
Controleer de installatie.
$ 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
Controleer de status van de PHP dienst.
$ 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)
Open het php.ini
bestand om het te bewerken.
$ sudo nano /etc/php/8.0/fpm/php.ini
Verander de waarden van de volgende variabelen om de grootte van de mailbijlage op 25MB te zetten.
upload_max_filesize = 25M post_max_size = 25M
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.
Open het bestand /etc/php/8.0/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Zoek de regels user=apache
en group=apache
in het bestand en verander ze als volgt.
... ; 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 ...
Zoek ook de regels listen.owner = www-data
en listen.group = www-data
en verander ze als volgt.
... ; 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 ...
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.
Herstart de PHP-FPM dienst.
$ sudo systemctl restart php8.0-fpm
Stap 4 – Installeer MySQL
Ubuntu 22.04 wordt geleverd met de nieuwste versie van MySQL. Je kunt het met een enkel commando installeren.
$ sudo apt install mysql-server
Controleer de versie van MySQL.
$ mysql --version mysql Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Deze stap is nodig voor MySQL versies 8.0.28 en hoger. Ga de MySQL Shell binnen.
$ sudo mysql
Voer het volgende commando uit om het wachtwoord voor je root gebruiker in te stellen. Zorg ervoor dat het een mix heeft van cijfers, hoofdletters, kleine letters, en speciale tekens.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Verlaat de shell.
mysql> exit
Voer het beveiligde installatiescript van MySQL uit.
$ sudo mysql_secure_installation
Eerst wordt je om je root wachtwoord gevraagd. Voer het in. Vervolgens wordt je gevraagd om het Validate Password Component te installeren. Het controleert de sterkte van wachtwoorden die in MySQL gebruikt worden. Druk op Y om het te installeren.
Vervolgens wordt je gevraagd het niveau van het wachtwoord validatiebeleid in te stellen. Kies 2 want dat is de sterkste.
Druk vervolgens op N om te weigeren het root wachtwoord te veranderen. Druk ook op Y om anonieme gebruikers te verwijderen, remote root logins te verbieden, de testdatabase te verwijderen, en de privilegetabellen opnieuw te laden.
Stap 5 – Configureer MySQL
Log in op de MySQL shell. Voer je root wachtwoord in als daarom gevraagd wordt.
$ sudo mysql -u root -p
Maak een database voor Rainloop.
mysql> CREATE DATABASE rainloop;
Maak een SQL gebruiker om de database te benaderen. Vervang yourpassword
door een wachtwoord naar keuze.
mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Verleen rainuser
toegang tot de database.
mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';
Herlaad de privilege tabel.
mysql> FLUSH PRIVILEGES;
Sluit de shell af.
mysql> exit
Stap 6 – Installeer Rainloop
Maak de public directory voor Rainloop.
$ sudo mkdir /var/www/html/rainloop -p
Download de nieuwste versie van Rainloop.
$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
Pak het gedownloade bestand uit naar de publieke map.
$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop
Verander het eigendom van de directory in Nginx.
$ sudo chown -R nginx:nginx /var/www/html/rainloop
Stel lees- en schrijfrechten in die Rainloop nodig heeft.
$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \; $ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;
Stap 7 – Installeer SSL
We moeten Certbot installeren om gratis SSL certificaten te genereren die door Let’s Encrypt worden aangeboden.
Je kunt Certbot installeren met Ubuntu’s repository of de nieuwste versie pakken met het Snapd gereedschap. We zullen de Snapd versie gebruiken.
Ubuntu 22.04 wordt standaard geleverd met Snapd geïnstalleerd. Voer het volgende commando uit om te controleren of je versie van Snapd up-to-date is.
$ sudo snap install core
Installeer Certbot.
$ sudo snap install --classic certbot
Gebruik het volgende commando om ervoor te zorgen dat het Certbot commando uitgevoerd kan worden door een symbolische link naar de /usr/bin
directory te maken.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Genereer een SSL Certificaat voor Rainloop.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d rainloop.example.com
Genereer een Diffie-Hellman groepscertificaat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Open het bestand /etc/letsencrypt/renewal/rainloop.example.com.conf
om het te bewerken.
$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf
Plak de volgende code onderaan.
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.
We hebben het SSL certificaat gemaakt met de standalone optie van Certbot. Het draait zijn webserver om het certificaat te maken, wat betekent dat Nginx tijdens de vernieuwing uitgeschakeld moet zijn. De pre_hook en post_hook commando’s lopen voor en na de vernieuwing om de Nginx server automatisch af te sluiten en weer op te starten, zodat geen handmatige interventie nodig is.
Om te controleren of de SSL vernieuwing goed werkt, voer je het proces droog uit.
$ sudo certbot renew --dry-run
Als je geen fouten ziet, ben je helemaal klaar. Je certificaat wordt automatisch vernieuwd.
Stap 8 – Configureer Nginx
Open het bestand nginx.conf
om het te bewerken.
$ sudo nano /etc/nginx/nginx.conf
Zoek de regel include /etc/nginx/conf.d/*.conf;
en plak er de volgende code onder.
server_names_hash_bucket_size 64;
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt.
Maak het Rainloop configuratiebestand voor Nginx en open het om te bewerken.
$ sudo nano /etc/nginx/conf.d/rainloop.conf
Plak er de volgende code in.
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; }
Sla het bestand op door op Ctrl + X te drukken en Y in te voeren wanneer daarom wordt gevraagd.
Controleer de syntaxis van de Nginx configuratie.
$ sudo nginx -t
Herstart de Nginx dienst.
$ sudo systemctl restart nginx
Stap 9 – Configureer en krijg toegang tot Rainloop
Open Rainloop’s Beheerder pagina via de URL https://rainloop.example.com/?admin
en je krijgt het volgende inlogscherm.
Voer de volgende inloggegevens in en druk op enter om in te loggen.
Username: admin Password: 12345
Het beheerdersdashboard van Rainloop opent met een waarschuwing om je standaard wachtwoord te veranderen.
Verander het standaard wachtwoord via de link in het dashboard.
Voer je nieuwe wachtwoord in en klik op de knop Update Password om verder te gaan.
Rainloop gebruikt MySQL om contactinformatie op te slaan. Open de Contacten pagina en kies MySQL uit het dropdown menu.
Voer de eerder aangemaakte databankgegevens in.
Druk op de Test knop om de verbinding te controleren en de tabellen te installeren. Als de knop groen wordt, betekent dit dat de verbinding geslaagd is.
Je kunt Rainloop nu gaan gebruiken door je mail accounts toe te voegen.
Conclusie
Je hebt Rainloop met succes geïnstalleerd op een Ubuntu 22.04 server. Als je nog vragen hebt, stel ze dan in de commentaar hieronder.