Как установить веб-почту Rainloop на Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 18.04 (Bionic Beaver)
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Nginx
- Шаг 3. Установите и настройте PHP
- Шаг 4. Установите MySQL
- Шаг 5. Настройка MySQL
- Шаг 6. Установите Rainloop
- Шаг 7. Установите SSL
- Шаг 8. Настройка Nginx
- Шаг 9. Настройка и доступ к Rainloop
- Заключение
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. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.