This is an old revision of the document!
Roundcube Webmail
Roundcube is a well proven webmail client written in PHP.
Note: i installed roundcube on my external server, together with the mail server, and not on the home server. The unusual approach you might note here are due to that noticeable differences.
Prerequisites
Since i don't want to oberate the external server with containers, i will show you how to install Roundcube on bare metal. It's relatively easy anyway.
You need PHP and NGINX installed. PHP requires some extensions like PDO and zip, so:
echo app-eselect/eselect-php fpm >> /etc/portage/package.use/php echo dev-lang/php fpm sqlite zip spell intl pdo curl exif gd xmlreader writer >> /etc/portage/package.use/php emerge -vp php
Since i use NGINX, the fpm flag needs also to be enabled.
Installation
Let's follow this installation guide, and let's personalize it a bit.
Since i want to share PHP between Rouncube and other public services, due to the limited resources of the external server, i will not create a dedicated user, which would require also to run multiple PHP copies.
The webmail will be installed under /home/web/roundcube:
mkdir -p /home/web/roundcube cd /home/web/roundcube
Download the latest complete package from https://roundcube.net/download/ and decompress it. Since this is the complete package, there is no need to install dependencies using composer.
Set proper permissions and create the folder to store the SQLite database (mysql or postgres are overkill for small needs):
cd /home/web/roundcube mkdir db chown nginx:nginx db cd roundcube-<verison> chown nginx:nginx logs temp
Done! Now setup the NGINX webserver.
NGINX setup
Assuming that PHP-FPM is on port 9000, the following configuration should be enough:
- roundcube.conf
server { server_name webmail.mydomain.com; listen 443 ssl; index index.php; root /home/web/roundcube/roundcubemail-1.6.10; access_log /var/log/nginx/webmail.mydomain.com_access_log main; error_log /var/log/nginx/webmail.mydomain.com_error_log info; # The following lines should be uncommented after initial setup is complete! # location ~ /(config/|temp/|logs/|installer) { # deny all; # alias /home/web/roundcube/roundcubemail-1.6.10; # } location ~ /.*\.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass 127.0.0.1:9000; } include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; }
Restart your NGINX and configure Roundcube.
Configuration
Point your browser to https://webmail.mydomain.com/installer and follow the onscreen instructions
Autostart
Roundcube only depends on PHP-FPM and NGINX, ensure they are both autostarting:
rc-update add php-fpm default rc-update add nginx defsault