Cách cài đặt Rainloop Webmail trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Rainloop là một ứng dụng email mã nguồn mở, chạy trên nền tảng web được viết bằng PHP. Ứng dụng này nhanh, nhẹ và hỗ trợ các giao thức SMTP và IMAP.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt ứng dụng Rainloop trên máy chủ Ubuntu 22.04.

Điều kiện tiên quyết​


  • Một máy chủ chạy Ubuntu 22.04.

  • Một tên miền trỏ đến máy chủ. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng tên miền rainloop.example.com.

  • Một người dùng không phải root có quyền sudo.

  • Đảm bảo mọi thứ đã được cập nhật.
Mã:
$ sudo apt update && sudo apt upgrade
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo apt install wget curl nano unzip -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên trước khi cài đặt Rainloop là cấu hình tường lửa. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Trạng thái: activeĐến Hành động Từ-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
Rainloop cần cổng HTTP và HTTPs để hoạt động.
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Mở cổng cho các tài khoản email bạn sử dụng.
Mã:
$ sudo ufw allow 587/tcp$ sudo ufw allow 993/tcp$ sudo ufw allow 465/tcp
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw statusTrạng thái: activeĐến Hành động Từ-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere443 ALLOW Anywhere587/tcp ALLOW Anywhere993/tcp ALLOW Anywhere465/tcp ALLOW AnywhereOpenSSH (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)

Bước 2 - Cài đặt Nginx​

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ 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
Cập nhật kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -vphiên bản nginx: nginx/1.22.0

Bước 3 - Cài đặt và cấu hình PHP​

Ubuntu 22.04 được cài sẵn PHP 8.1 theo mặc định. Nhưng để Rainloop hoạt động, chúng ta cần cài đặt PHP 8.0. Bước đầu tiên là thêm kho lưu trữ PHP của Ondrej.
Mã:
$ sudo add-apt-repository ppa:ondrej/php
Cài đặt PHP và các tiện ích mở rộng bắt buộc theo yêu cầu của Rainloop.
Mã:
$ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli
Xác minh cài đặt.
Mã:
$ php --versionPHP 8.0.20 (cli) (xây dựng: 25 tháng 6 năm 2022 08:12:05) (NTS)Bản quyền (c) The PHP GroupZend Engine v4.0.20, Bản quyền (c) Zend Technologies với Zend OPcache v8.0.20, Bản quyền (c), của Zend Technologies
Kiểm tra trạng thái của Dịch vụ PHP.
Mã:
$ sudo systemctl status php8.0-fpm? php8.0-fpm.service - Trình quản lý quy trình FastCGI PHP 8.0 Đã tải: đã tải (/lib/systemd/system/php8.0-fpm.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2022-07-04 01:52:55 UTC; 1 phút 22 giây trước Tài liệu: man:php-fpm8.0(8) Tiến trình: 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) PID chính: 12460 (php-fpm8.0) Trạng thái: "Tiến trình đang hoạt động: 0, nhàn rỗi: 2, Yêu cầu: 0, chậm: 0, Lưu lượng: 0req/giây" Nhiệm vụ: 3 (giới hạn: 2241) Bộ nhớ: 8,7M CPU: 89ms CGroup: /system.slice/php8.0-fpm.service ??12460 "php-fpm: tiến trình chính (/etc/php/8.0/fpm/php-fpm.conf)
Mở tệp php.ini để chỉnh sửa.
Mã:
$ sudo nano /etc/php/8.0/fpm/php.ini
Thay đổi giá trị của các biến sau để đặt kích thước tệp đính kèm thư thành 25MB.
Mã:
upload_max_filesize = 25Mpost_max_size = 25M
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/php/8.0/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Tìm các dòng user=apache và group=apache trong tệp và thay đổi chúng như sau.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = nginx; RPM: Giữ một nhóm được phép ghi vào thư mục nhật ký.group = nginx...
Ngoài ra, hãy tìm các dòng listen.owner = www-data và listen.group = www-data và thay đổi chúng như sau.
Mã:
...; Đặt quyền cho socket unix, nếu có. Trong Linux, quyền đọc/ghi; phải được đặt để cho phép kết nối từ máy chủ web. Nhiều; Hệ thống bắt nguồn từ BSD cho phép kết nối bất kể quyền. Chủ sở hữu; và nhóm có thể được chỉ định theo tên hoặc theo ID số của chúng.; Giá trị mặc định: người dùng và nhóm được đặt làm người dùng đang chạy; chế độ được đặt thành 0660listen.owner = nginxlisten.group = nginx...
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại dịch vụ PHP-FPM.
Mã:
$ sudo systemctl restart php8.0-fpm

Bước 4 - Cài đặt MySQL​

Ubuntu 22.04 đi kèm với phiên bản MySQL mới nhất. Bạn có thể cài đặt nó bằng một lệnh duy nhất.
Mã:
$ sudo apt install mysql-server
Kiểm tra phiên bản MySQL.
Mã:
$ mysql --versionmysql Ver 8.0.29-0ubuntu0.22.04.2 cho Linux trên x86_64 ((Ubuntu))
Bước này là cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.
Mã:
$ sudo mysql
Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo rằng mật khẩu có sự kết hợp giữa số, chữ hoa, chữ thường và ký tự đặc biệt.
Mã:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Thoát khỏi shell.
Mã:
mysql> exit
Chạy tập lệnh cài đặt bảo mật MySQL.
Mã:
$ sudo mysql_secure_installation
Đầu tiên, bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhập mật khẩu. Tiếp theo, bạn sẽ được yêu cầu cài đặt Thành phần Xác thực mật khẩu. Thành phần này kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt.

Tiếp theo, bạn sẽ được yêu cầu đặt mức chính sách xác thực mật khẩu. Chọn 2 vì đây là mức mạnh nhất.

Tiếp theo, nhấn N để từ chối thay đổi mật khẩu gốc. Ngoài ra, hãy nhấn Y để xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại bảng đặc quyền.

Bước 5 - Cấu hình MySQL​

Đăng nhập vào shell MySQL. Nhập mật khẩu gốc của bạn khi được nhắc.
Mã:
$ sudo mysql -u root -p
Tạo cơ sở dữ liệu cho Rainloop.
Mã:
mysql> CREATE DATABASE rainloop;
Tạo người dùng SQL để truy cập cơ sở dữ liệu. Thay thế yourpassword bằng mật khẩu bạn chọn.
Mã:
mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Cấp quyền truy cập rainuser vào cơ sở dữ liệu.
Mã:
mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';
Tải lại bảng đặc quyền.
Mã:
mysql> XẢ QUYỀN;
Thoát khỏi shell.
Mã:
mysql> exit

Bước 6 - Cài đặt Rainloop​

Tạo thư mục công khai cho Rainloop.
Mã:
$ sudo mkdir /var/www/html/rainloop -p
Tải xuống phiên bản mới nhất của Rainloop.
Mã:
$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
Giải nén tệp đã tải xuống vào thư mục công khai.
Mã:
$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop
Đổi quyền sở hữu thư mục thành Nginx.
Mã:
$ sudo chown -R nginx:nginx /var/www/html/rainloop
Đặt quyền đọc và ghi theo yêu cầu của Rainloop.
Mã:
$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \;$ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;

Bước 7 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL miễn phí do Let's Encrypt cung cấp.

Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 được cài đặt Snapd theo mặc định. Chạy lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến thư mục /usr/bin.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Tạo chứng chỉ SSL cho Rainloop.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d rainloop.example.com
Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Mở tệp /etc/letsencrypt/renewal/rainloop.example.com.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf
Dán mã sau vào cuối.
Mã:
pre_hook = systemctl stop nginxpost_hook = systemctl start nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chúng tôi đã tạo chứng chỉ SSL bằng tùy chọn độc lập của Certbot. Nó chạy máy chủ web của mình để tạo chứng chỉ, nghĩa là Nginx phải bị tắt trong quá trình gia hạn. Các lệnh pre_hookpost_hook chạy trước và sau khi gia hạn để tự động đóng và khởi động lại máy chủ Nginx, do đó không cần can thiệp thủ công.

Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 8 - Cấu hình Nginx​

Mở tệp nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Tìm dòng include /etc/nginx/conf.d/*.conf; và dán mã sau vào bên dưới.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo tệp cấu hình Rainloop cho Nginx và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/rainloop.conf
Dán mã sau vào nó.
Mã:
máy chủ { lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; tên máy chủ rainloop.example.com; gốc /var/www/html/rainloop; chỉ mục index.php; kích thước thân máy tối đa của máy khách 25M; nhật ký truy cập /var/log/nginx/rainloop.access.log; nhật ký lỗi /var/log/nginx/rainloop.error.log; chứng chỉ ssl /etc/letsencrypt/live/rainloop.example.com/fullchain.pem; khóa chứng chỉ ssl /etc/letsencrypt/live/rainloop.example.com/privkey.pem; chứng chỉ ssl đáng tin cậy /etc/letsencrypt/live/rainloop.example.com/chain.pem; thời gian chờ ssl phiên 5 phút; ssl_session_cache được chia sẻ: MozSSL: 10m; ssl_session_tickets tắt; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers bật; 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 bật; ssl_stapling_verify bật; ssl_dhparam /etc/ssl/certs/dhparam.pem; vị trí / { try_files $uri $uri/ /index.php?$query_string; } vị trí ~ \.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 TẬP_TIN_SCRIPT $document_root$fastcgi_script_name; } vị trí ~ /\.ht { từ chối tất cả; } vị trí ^~ /data { từ chối tất cả; }}# thực thi HTTPSmáy chủ { lắng nghe 80; lắng nghe [::]:80; tên máy chủ rainloop.example.com; trả về 301 https://$host$request_uri;}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cú pháp cấu hình Nginx.
Mã:
$ sudo nginx -t
Khởi động lại dịch vụ Nginx.
Mã:
$ sudo systemctl restart nginx

Bước 9 - Cấu hình và truy cập Rainloop​

Mở trang Quản trị viên của Rainloop qua URL https://rainloop.example.com/?admin và bạn sẽ nhận được màn hình đăng nhập sau.



Nhập thông tin đăng nhập sau và nhấn enter để đăng nhập.
Mã:
Tên người dùng: adminMật khẩu: 12345
Bảng điều khiển quản trị viên Rainloop sẽ mở ra với cảnh báo yêu cầu bạn thay đổi mật khẩu mặc định mật khẩu.



Thay đổi mật khẩu mặc định bằng cách sử dụng liên kết trong bảng điều khiển.



Nhập mật khẩu mới của bạn và nhấp vào nút Cập nhật mật khẩu để tiếp tục.

Rainloop sử dụng MySQL để lưu trữ thông tin liên hệ. Mở trang Danh bạ và chọn MySQL từ menu thả xuống.



Nhập thông tin xác thực cơ sở dữ liệu đã tạo trước đó.



Nhấn nút Kiểm tra để kiểm tra kết nối và cài đặt các bảng. Nếu nút chuyển sang màu xanh lá cây, điều đó có nghĩa là kết nối thành công.

Bạn có thể bắt đầu sử dụng Rainloop bằng cách thêm tài khoản email của mình.

Kết luận​

Bạn đã cài đặt Rainloop thành công trên máy chủ Ubuntu 22.04. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên