Tài liệuCài trên các nhà cung cấp cloud

Cài trên các nhà cung cấp cloud

Chuẩn bị VPS trên DigitalOcean, Vultr, Hetzner, AWS, Google Cloud, Azure, Oracle Cloud, Linode hoặc nhà cung cấp trong nước: cổng, mail 25, PTR, IPv6, ARM64, cloud-init.

ZoPanel cài giống nhau trên mọi nhà cung cấp: một server Ubuntu hoặc Debian mới cài và một lệnh. Khác biệt nằm ở hạ tầng mạng quanh server: tường lửa cloud, cổng mail bị chặn, reverse DNS và, riêng Oracle Cloud, một tường lửa có sẵn ngay trên máy. Trang này liệt kê những gì cần chuẩn bị ở từng nhà cung cấp trước khi làm theo Cài đặt ZoPanel.

Danh sách kiểm tra cho mọi nhà cung cấp

  1. Image: Ubuntu 22.04/24.04 hoặc Debian 12/13 mới cài, amd64 hoặc arm64, không cài thêm gì. Tránh image marketplace có sẵn web server hay panel khác: bộ cài dừng lại khi gặp Apache, cPanel, DirectAdmin hoặc aaPanel. Xem Yêu cầu hệ thống.
  2. Cấu hình: tối thiểu 1 GB RAM, từ 2 GB khi chạy thật. Nên chọn máy ảo đầy đủ (KVM) thay vì VPS dạng container: trong container, kernel của máy chủ vật lý được dùng và có thể không bật được disk quota.
  3. Truy cập: SSH key cho root, hoặc cho user mặc định của image có quyền sudo. Nhiều image cloud đăng nhập bằng ubuntu, admin hoặc user bạn tự đặt, không phải root; hãy chạy bộ cài với sudo.
  4. Tường lửa của nhà cung cấp: mở các cổng bên dưới trong tường lửa hoặc security group trước khi cài, nếu không bạn sẽ không vào được panel.
  5. Mail: nếu định host email, kiểm tra cổng 25 chiều ra có mở không và bạn có đặt được reverse DNS (PTR) cho IP của server không.
  6. DNS: một hostname cho server (ví dụ srv1.example.com) và, tốt nhất, một tên miền panel trỏ về IP của server.

Các cổng cần mở

Bộ cài bật UFW trên server và mở các cổng cơ bản. Tường lửa của nhà cung cấp nằm phía trước UFW và phải cho phép cùng các kết nối đó.

Cổng Giao thức Dùng cho
Cổng SSH của bạn (thường là 22) TCP SSH và SFTP
80 TCP Website và xác thực Let's Encrypt
443 TCP Website HTTPS
8888 TCP Giao diện ZoPanel (https://IP:8888) và kết nối fleet

Chỉ mở các cổng sau khi cài thành phần tương ứng (ZoPanel tự mở chúng trong UFW):

Thành phần Cổng
Mail server 25, 465, 587, 143, 993, 110, 995 (TCP)
Webmail 2096 (TCP)
Lịch & danh bạ 2080 (TCP)
Máy chủ DNS 53 (TCP và UDP)
FTP server 21 và 30000-30100 (TCP)
Adminer 8889 (TCP)

Truy cập database từ xa chỉ được mở trong UFW cho các địa chỉ bạn cho phép (xem Database); hãy mở cổng database cho đúng các địa chỉ đó trên tường lửa của nhà cung cấp.

Server cũng cần kết nối HTTPS ra ngoài để tải ZoPanel, gói hệ thống, PHP và chứng chỉ.

Mail: cổng 25 và reverse DNS

Phần lớn nhà cung cấp cloud chặn cổng 25 chiều ra trên server mới để chống spam. Thư đến vẫn nhận được, nhưng server không gửi được thư sang máy chủ khác. Có hai cách:

  • Đề nghị nhà cung cấp mở cổng 25. Mỗi nhà cung cấp có quy trình riêng (xem bên dưới) và thường xét duyệt từng trường hợp.
  • Gửi qua relay bằng Gửi mail qua relay (smarthost) trong trang Email (SendGrid, Mailgun, Amazon SES, Brevo…). Relay dùng cổng 587 trừ khi bạn đặt cổng khác. Xem Email.

Đặt reverse DNS (PTR) của địa chỉ IPv4 (và IPv6, nếu gửi mail qua IPv6) thành hostname mail, ví dụ mail.example.com, và bảo đảm tên đó có bản ghi A trỏ ngược về đúng IP. Thiếu PTR, phần lớn thư sẽ vào spam. Sau khi cài, bấm Kiểm tra trong thẻ Kiểm tra gửi/nhận mail để kiểm tra PTR và cổng 25 chiều ra.

IPv6

Web server và panel của ZoPanel lắng nghe cả IPv6 lẫn IPv4, và UFW áp dụng quy tắc cho cả hai. Nếu nhà cung cấp cấp địa chỉ IPv6 cho server (một số nơi yêu cầu bật lúc tạo server), bạn có thể thêm bản ghi AAAA cho tên miền.

Chỉ tạo bản ghi AAAA khi IPv6 thực sự tới được server qua tường lửa của nhà cung cấp: Let's Encrypt và nhiều khách truy cập sẽ kết nối qua IPv6 khi có bản ghi AAAA, và việc cấp chứng chỉ sẽ lỗi nếu đường đó bị chặn.

Server ARM64

ZoPanel chạy trên arm64 (Ampere, Graviton và tương tự) cũng như amd64; bộ cài tự tải bản build phù hợp. Lưu ý:

  • .NET SDK không cài được trên Debian arm64. Dùng Ubuntu nếu cần .NET trên ARM.
  • Docker image bạn tự deploy phải có bản cho arm64.

Cài tự động bằng cloud-init

Phần lớn nhà cung cấp cho phép nhập script cloud-init ("user data") khi tạo server. Cài ZoPanel từ đó để server sẵn sàng ngay lần đăng nhập đầu tiên:

#cloud-config
runcmd:
  - curl -fsSL https://get.zopanel.net | ZOPANEL_LICENSE_KEY=ZP-XXXX-XXXX-XXXX bash -s -- --yes --reboot --hostname srv1.example.com --admin-email admin@example.com
  • --yes trả lời mọi câu hỏi bằng giá trị mặc định; --reboot khởi động lại server khi cài xong nếu kernel hoặc thư viện mới cần khởi động lại (--no-reboot thì không bao giờ khởi động lại).
  • Thêm các tuỳ chọn khác của bộ cài nếu cần, ví dụ --profile full, --php 8.3,8.2, --mail-hostname mail.example.com hoặc --nameservers ns1.example.com,ns2.example.com. Danh sách đầy đủ ở Cài đặt ZoPanel.
  • Truyền thông tin bí mật bằng biến môi trường thay vì tham số: ZOPANEL_LICENSE_KEY cho license và ZOPANEL_ADMIN_PASSWORD cho mật khẩu admin bạn chọn.
  • cloud-init chạy bằng root nên không cần sudo. Nếu không đặt ZOPANEL_ADMIN_PASSWORD, mật khẩu được tạo ngẫu nhiên nằm trong log cloud-init (thường là /var/log/cloud-init-output.log). Đặt lại bất cứ lúc nào bằng zopanel ctl reset-password admin.

Quan trọng: cloud-init không mở được tường lửa của nhà cung cấp. Hãy tạo server với tường lửa hoặc security group đã cho phép các cổng ở trên.

Ghi chú theo nhà cung cấp

Chính sách của các nhà cung cấp có thể thay đổi. Ghi chú dưới đây dựa trên tài liệu chính thức của họ tại thời điểm viết; hãy xem trang được dẫn trước khi áp dụng.

DigitalOcean

  • Các cổng SMTP 25, 465 và 587 bị chặn mặc định trên Droplet. DigitalOcean khuyên dùng dịch vụ email bên thứ ba. Vì 587 cũng bị chặn, hãy cấu hình relay của ZoPanel với cổng khác mà nhà cung cấp relay hỗ trợ (nhiều nơi có cổng 2525). Why is SMTP blocked?
  • Bản ghi PTR được tạo từ tên Droplet: đặt tên Droplet bằng hostname mail đầy đủ (ví dụ mail.example.com). PTR records
  • Nếu dùng Cloud Firewall của DigitalOcean, thêm các cổng ở trên vào quy tắc inbound.

Vultr

  • Cổng 25 chiều ra bị chặn trên instance mới; cổng 465 và 587 vẫn mở. Mở ticket hỗ trợ để xin mở, nêu nhu cầu sử dụng, biện pháp chống spam (SPF, DKIM, giới hạn gửi) và lượng thư dự kiến. Why is SMTP blocked?
  • Đặt reverse DNS ở mục IPv4 của instance bằng cách thay giá trị reverse DNS mặc định. IPv4 networking

Hetzner Cloud

  • Cổng 25 và 465 bị chặn mặc định trên mọi cloud server; cổng 587 thì không. Sau một tháng làm khách hàng và đã thanh toán hoá đơn đầu tiên, bạn có thể gửi limit request để xin mở cho mục đích hợp lệ. Cloud server FAQ
  • Reverse DNS đặt được cho từng địa chỉ IP của server.
  • Nếu gắn Hetzner Cloud Firewall, thêm các cổng ở trên vào đó.

AWS EC2

  • Cổng 25 chiều ra bị chặn mặc định. Tự gửi biểu mẫu "Request to remove email sending limitations" (bộ phận hỗ trợ AWS không gửi thay được), mỗi Region một lần; có thể mất tới 48 giờ. Reverse DNS cho Elastic IP được yêu cầu trong cùng quy trình, và bản ghi A phải trỏ sẵn về IP đó. EC2 port 25
  • Mở các cổng trong security group của instance.
  • Image Ubuntu chính thức đăng nhập bằng ubuntu, image Debian bằng admin. Cài bằng sudo.
  • Dùng Elastic IP: IP công khai của instance đổi khi stop rồi start, làm hỏng DNS và SSL.

AWS Lightsail

  • Cổng 25 chiều ra bị chặn mặc định trên mọi instance Lightsail. Gửi yêu cầu gỡ chặn từ Lightsail console bằng root user, kèm tên instance, Region và static IP cho bản ghi reverse DNS. Lightsail port 25
  • Gắn static IP và thêm các cổng ở trên vào tường lửa của instance ở tab Networking.

Google Cloud (Compute Engine)

  • Kết nối tới cổng 25 bên ngoài bị chặn (một số project cũ được miễn). Cổng 465 và 587 không bị giới hạn, nên hãy dùng relay qua 587. Sending email from an instance
  • Bản ghi PTR đặt được trên network interface chính của VM; bản ghi A phải trỏ về đúng IP tĩnh đã đặt trước. Create a PTR record
  • Thêm VPC firewall rule cho các cổng ở trên (đặc biệt là 8888) và đặt trước một IP tĩnh bên ngoài.

Microsoft Azure

  • Cổng 25 chiều ra không bị chặn với subscription Enterprise Agreement và MCA-E. Subscription Enterprise Dev/Test xin miễn trừ được ở mục Diagnose and solve problems của virtual network. Các loại subscription khác bị chặn: hãy gửi qua relay có xác thực ở cổng 587. Troubleshoot outbound SMTP
  • Thêm quy tắc inbound cho các cổng ở trên vào network security group của VM.

Oracle Cloud (OCI)

Image Ubuntu của Oracle có sẵn quy tắc iptables riêng, lưu trong /etc/iptables/rules.v4. Các quy tắc này cho phép SSH và kết thúc bằng một dòng REJECT, nên các cổng khác bị từ chối ngay trên server dù bạn đã mở trên cloud. Oracle hướng dẫn rằng quy tắc mới phải nằm phía trên dòng REJECT đó.

  1. Trong security list của VCN (hoặc network security group) của subnet chứa instance, thêm ingress rule cho các cổng ở trên.

  2. Trên server, sửa /etc/iptables/rules.v4. Ngay dưới dòng SSH có sẵn, thêm mỗi cổng một dòng, phía trên dòng REJECT:

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
    
  3. Áp dụng file:

    sudo iptables-restore < /etc/iptables/rules.v4
    
  4. Cài ZoPanel. Khi cài thêm thành phần (mail, DNS, FTP…), thêm cả cổng của thành phần đó vào file này. Đừng xoá các quy tắc khác của Oracle: một số quy tắc cần cho dịch vụ của chính instance.

Cũng trên Oracle Cloud:

  • Tenancy tạo sau ngày 23/6/2021 mặc định không gửi được tới cổng 25 trên Internet; xin miễn trừ bằng service limit request, hoặc dùng relay qua 587. Release note
  • Instance Ampere A1 là arm64 và được hỗ trợ (xem mục Server ARM64 ở trên).

Linode (Akamai)

  • Với tài khoản tạo từ ngày 5/11/2019, cổng 25, 465 và 587 chiều ra bị hạn chế. Cấu hình bản ghi A và reverse DNS cho Linode, sau đó mở ticket hỗ trợ. A new policy to help fight spam
  • Nếu dùng Cloud Firewall, thêm các cổng ở trên.

Nhà cung cấp Việt Nam và nhà cung cấp địa phương khác

Chính sách khác nhau theo từng nhà cung cấp và từng gói, nên hãy hỏi trước khi mua:

  • VPS là máy ảo đầy đủ (KVM) với image Ubuntu hoặc Debian sạch, hay là container?
  • Cổng 25 chiều ra có mở không, và xin mở bằng cách nào?
  • Nhà cung cấp có đặt reverse DNS (PTR) cho IP không, có phải qua ticket không?
  • IP có kèm IPv6 không?
  • Phía trước VPS có tường lửa mạng mà bạn phải tự mở cổng không?

Một số template trong nước cài thêm phần mềm hoặc kho gói riêng vào image. Nếu bộ cài báo có web server hay panel khác, hãy cài lại VPS từ image sạch thay vì dùng --force.

Sau khi cài

  • Mở https://IP-CUA-BAN:8888. Nếu không vào được, nguyên nhân thường là tường lửa của nhà cung cấp: kiểm tra cổng 8888/TCP đã mở ở đó, và với Oracle Cloud thì cả trong /etc/iptables/rules.v4.
  • Chạy zopanel ctl doctor trên server để kiểm tra dịch vụ và cấu hình.
  • Làm tiếp theo Bắt đầu nhanh.

Xem thêm


← Cài đặt ZoPanel Bắt đầu nhanh →