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.
[*]
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.
Bạn sẽ thấy nội dung tương tự như sau.
Rainloop cần cổng HTTP và HTTPs để hoạt động.
Mở cổng cho các tài khoản email bạn sử dụng.
Kiểm tra lại trạng thái để xác nhận.
Nhập khóa ký của Nginx.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật kho lưu trữ hệ thống.
Cài đặt Nginx.
Xác minh cài đặt.
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.
Xác minh cài đặt.
Kiểm tra trạng thái của Dịch vụ PHP.
Mở tệp php.ini để chỉnh sửa.
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.
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.
Tìm các dòng user=apache và group=apache trong tệp và thay đổi chúng như sau.
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.
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.
Kiểm tra phiên bản MySQL.
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.
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.
Thoát khỏi shell.
Chạy tập lệnh cài đặt bảo mật MySQL.
Đầ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.
Tạo cơ sở dữ liệu cho 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.
Cấp quyền truy cập rainuser vào cơ sở dữ liệu.
Tải lại bảng đặc quyền.
Thoát khỏi shell.
Tải xuống phiên bản mới nhất của Rainloop.
Giải nén tệp đã tải xuống vào thư mục công khai.
Đổi quyền sở hữu thư mục thành Nginx.
Đặt quyền đọc và ghi theo yêu cầu của Rainloop.
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.
Cài đặt 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.
Tạo chứng chỉ SSL cho Rainloop.
Tạo nhóm Diffie-Hellman chứng chỉ.
Mở tệp /etc/letsencrypt/renewal/rainloop.example.com.conf để chỉnh sửa.
Dán mã sau vào cuối.
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_hook và post_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.
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.
Tìm dòng include /etc/nginx/conf.d/*.conf; và dán mã sau vào bên dưới.
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.
Dán mã sau vào nó.
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.
Khởi động lại dịch vụ Nginx.
Nhập thông tin đăng nhập sau và nhấn enter để đăng nhập.
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.
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
Mã:
Trạng thái: activeĐến Hành động Từ-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Mã:
$ sudo ufw allow 587/tcp$ sudo ufw allow 993/tcp$ sudo ufw allow 465/tcp
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
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
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
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
Mã:
$ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli
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
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ã:
$ sudo nano /etc/php/8.0/fpm/php.ini
Mã:
upload_max_filesize = 25Mpost_max_size = 25M
Mở tệp /etc/php/8.0/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
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...
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...
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
Mã:
$ mysql --versionmysql Ver 8.0.29-0ubuntu0.22.04.2 cho Linux trên x86_64 ((Ubuntu))
Mã:
$ sudo mysql
Mã:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Mã:
mysql> exit
Mã:
$ sudo mysql_secure_installation
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
Mã:
mysql> CREATE DATABASE rainloop;
Mã:
mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Mã:
mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';
Mã:
mysql> XẢ QUYỀN;
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
Mã:
$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
Mã:
$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop
Mã:
$ sudo chown -R nginx:nginx /var/www/html/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
Mã:
$ sudo snap install --classic certbot
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d rainloop.example.com
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf
Mã:
pre_hook = systemctl stop nginxpost_hook = systemctl start nginx
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_hook và post_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
Bước 8 - Cấu hình Nginx
Mở tệp nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
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
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;}
Xác minh cú pháp cấu hình Nginx.
Mã:
$ sudo nginx -t
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
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.