Поиск по сайту:

Как установить веб-почту Rainloop на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Bionic Beaver)

На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Nginx
  4. Шаг 3. Установите и настройте PHP
  5. Шаг 4. Установите MySQL
  6. Шаг 5. Настройка MySQL
  7. Шаг 6. Установите Rainloop
  8. Шаг 7. Установите SSL
  9. Шаг 8. Настройка Nginx
  10. Шаг 9. Настройка и доступ к Rainloop
  11. Заключение

Rainloop — это веб-клиент электронной почты с открытым исходным кодом, написанный на PHP. Он быстрый, легкий и поддерживает протоколы SMTP и IMAP.

Это руководство научит вас устанавливать клиент Rainloop на сервер Ubuntu 22.04.

Предпосылки

  • A server running Ubuntu 22.04.

  • A domain name pointing to the server. For our tutorial, we will use the rainloop.example.com domain.

  • A non-root user with sudo privileges.

  • Make sure everything is updated.

    $ sudo apt update && sudo apt upgrade
    
  • Install basic utility packages. Some of them may already be installed.

    $ sudo apt install wget curl nano unzip -y
    

Шаг 1. Настройте брандмауэр

Первым шагом перед установкой Rainloop является настройка брандмауэра. Проверьте состояние брандмауэра.

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Для работы Rainloop необходимы порты HTTP и HTTPs.

$ sudo ufw allow http
$ sudo ufw allow https

Откройте порты для используемых вами почтовых учетных записей.

$ sudo ufw allow 587/tcp
$ sudo ufw allow 993/tcp
$ sudo ufw allow 465/tcp

Проверьте статус еще раз для подтверждения.

$ 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)

Шаг 2 — Установите Nginx

Ubuntu 22.04 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.

Импортировать ключ подписи Nginxs.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для стабильной версии Nginx.

$ 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

Обновите системные репозитории.

$ sudo apt update

Установите Нгинкс.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.0

Шаг 3 — Установите и настройте PHP

Ubuntu 22.04 по умолчанию поставляется с PHP 8.1. Но для работы Rainloop нам нужно установить PHP 8.0. Первый шаг — добавить репозиторий Ondrejs PHP.

$ sudo add-apt-repository ppa:ondrej/php

Установите PHP и необходимые расширения, требуемые Rainloop.

 $ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli

Проверьте установку.

$ 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

Проверьте статус службы PHP.

$ 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)

Откройте файл php.ini для редактирования.

$ sudo nano /etc/php/8.0/fpm/php.ini

Измените значения следующих переменных, чтобы установить размер почтового вложения равным 25 МБ.

upload_max_filesize = 25M
post_max_size = 25M

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Откройте файл /etc/php/8.0/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Найдите в файле строки user=apache и group=apache и измените их следующим образом.

...
; 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
...

Также найдите строки listen.owner=www-data и listen.group=www-data и измените их следующим образом.

...
; 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
...

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php8.0-fpm

Шаг 4 — Установите MySQL

Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить его с помощью одной команды.

$ sudo apt install mysql-server

Проверьте версию MySQL.

$ mysql --version
mysql  Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Этот шаг необходим для версий MySQL 8.0.28 и выше. Войдите в оболочку MySQL.

$ sudo mysql

Выполните следующую команду, чтобы установить пароль для вашего пользователя root. Убедитесь, что он состоит из цифр, прописных и строчных букв, а также специальных символов.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Выйдите из оболочки.

mysql> exit

Запустите сценарий безопасной установки MySQL.

$ sudo mysql_secure_installation

Сначала вас попросят ввести пароль root. Введите его. Далее вам будет предложено установить компонент проверки пароля. Он проверяет надежность паролей, используемых в MySQL. Нажмите Y, чтобы установить его.

Далее вам будет предложено установить уровень политики проверки пароля. Выберите 2, так как он самый сильный.

Затем нажмите N, чтобы отказаться от смены пароля root. Кроме того, нажмите Y, чтобы удалить анонимных пользователей, запретить удаленный вход в систему root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

Шаг 5 — Настройте MySQL

Войдите в оболочку MySQL. Введите пароль root при появлении запроса.

$ sudo mysql -u root -p

Создайте базу данных для Rainloop.

mysql> CREATE DATABASE rainloop;

Создайте пользователя SQL для доступа к базе данных. Замените yourpassword паролем по вашему выбору.

mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';

Предоставьте rainuser доступ к базе данных.

mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';

Перезагрузите таблицу привилегий.

mysql> FLUSH PRIVILEGES;

Выйдите из оболочки.

mysql> exit

Шаг 6 — Установите Rainloop

Создайте публичный каталог для Rainloop.

$ sudo mkdir /var/www/html/rainloop -p

Загрузите последнюю версию Rainloop.

$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip

Разархивируйте загруженный файл в общий каталог.

$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop

Измените владельца каталога на Nginx.

$ sudo chown -R nginx:nginx /var/www/html/rainloop

Установите разрешения на чтение и запись, необходимые для Rainloop.

$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;

Шаг 7 — Установите SSL

Нам нужно установить Certbot для создания бесплатных SSL-сертификатов, предлагаемых Lets Encrypt.

Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующую команду, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core

Установите Сертбот.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на каталог /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Создайте SSL-сертификат для Rainloop.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d rainloop.example.com

Создайте групповой сертификат Диффи-Хеллмана.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Откройте файл /etc/letsencrypt/renewal/rainloop.example.com.conf для редактирования.

$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf

Вставьте следующий код внизу.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Мы создали сертификат SSL, используя автономную опцию Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть отключен во время обновления. Команды pre_hook и post_hook запускаются до и после обновления, чтобы автоматически закрыть и перезапустить сервер Nginx, не требуя ручного вмешательства.

Чтобы проверить, нормально ли работает обновление SSL, выполните пробный запуск процесса.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.

Шаг 8 — Настройте Nginx

Откройте файл nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Найдите строку include /etc/nginx/conf.d/*.conf; и вставьте под ней следующий код.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Создайте файл конфигурации Rainloop для Nginx и откройте его для редактирования.

$ sudo nano /etc/nginx/conf.d/rainloop.conf

Вставьте в него следующий код.

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;
}

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Проверьте синтаксис конфигурации Nginx.

$ sudo nginx -t

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Шаг 9 — Настройка и доступ к Rainloop

Откройте страницу администратора Rainloops по URL-адресу https://rainloop.example.com/?admin, и вы увидите следующий экран входа в систему.

Введите следующие учетные данные и нажмите Enter, чтобы войти.

Username: admin
Password: 12345

Панель администратора Rainloop откроется с предупреждением о смене пароля по умолчанию.

Измените пароль по умолчанию, используя ссылку на панели инструментов.

Введите новый пароль и нажмите кнопку «Обновить пароль», чтобы продолжить.

Rainloop использует MySQL для хранения контактной информации. Откройте страницу Контакты и выберите MySQL из выпадающего меню.

Введите учетные данные базы данных, созданные ранее.

Нажмите кнопку Test, чтобы проверить соединение и установить таблицы. Если кнопка станет зеленой, это означает, что соединение установлено успешно.

Вы можете начать использовать Rainloop, добавив свои почтовые аккаунты.

Заключение

Вы успешно установили Rainloop на сервер Ubuntu 22.04. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.