Dịch vụ
HiTechCloud dùng các dịch vụ sau:
Một số mục dưới đây vẫn nhắc tới image container và các khoá trong /root/.env (tag image, phiên bản). Những thứ đó thuộc về kiến trúc container, vốn đã ngừng sử dụng; máy chủ chạy dịch vụ trên host không có /root/.env. Giới hạn CPU và bộ nhớ được đặt trong HiTechAdmin, như từng mục nêu rõ.
Caddy
Caddy được dùng làm reverse proxy để điều phối lưu lượng tới và đi từ các website của người dùng được host trong container Docker của họ. Caddy cũng đảm nhận việc tạo và gia hạn chứng chỉ SSL cho cả tên miền của người dùng lẫn tên miền chính của panel điều khiển.
Các tệp cấu hình:
/etc/hitechcloud/caddy/Caddyfile: Đây là tệp cấu hình chính, bao gồm mọi tệp khác./etc/hitechcloud/caddy/check.conf: Tệp này quản lý việc xác minh tên miền để tạo SSL trên máy chủ./etc/hitechcloud/caddy/redirects.conf: Chứa các chuyển hướng cho/hitechcloud,/hitechadminvà/webmailtrên mọi tên miền./etc/hitechcloud/caddy/domains/: Thư mục này chứa một tệp.confcho mỗi tên miền được thêm vào máy chủ./etc/hitechcloud/caddy/templates/: Chứa các mẫu cấu hình cho tên miền mới và tên miền bị tạm ngưng./etc/hitechcloud/caddy/suspended_domains/: Lưu các tên miền của người dùng khi chúng bị tạm ngưng.
Bạn có thể xem cấu hình Caddy mặc định tại đây.
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho Caddy tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
HiTechCloud dùng một image Caddy tuỳ chỉnh có kèm OWASP Coraza WAF, một tường lửa ứng dụng web mã nguồn mở hiệu năng cao. Mã nguồn của image tuỳ chỉnh này có tại đây.
Nếu không muốn dùng Coraza WAF, bạn có thể chuyển sang image Caddy chính thức bằng cách cập nhật tệp /root/.env:
Để dùng image Caddy tuỳ chỉnh có Coraza:
CADDY_IMAGE="hitechcloud/caddy-coraza"
Để dùng image Caddy chính thức không có Coraza:
CADDY_IMAGE="caddy/latest"
Docker
Docker chế độ rootful được dùng để chạy mọi dịch vụ dùng chung. Có thể xem các dịch vụ mặc định tại đây.
Chế độ Docker Rootless được dùng cho từng tài khoản người dùng để cách ly container của họ.
MySQL
MySQL được dùng làm cơ sở dữ liệu lưu mọi thông tin liên quan tới người dùng:
- Người dùng
- Gói
- Tên miền
- Website
Thông tin đăng nhập MySQL được lưu trong các tệp: /etc/hitechcloud/mysql/host_db.conf và /etc/hitechcloud/mysql/hcontainer_db.conf.
/etc/hitechcloud/mysql/host_db.confđược liên kết tượng trưng tới/etc/my.cnfvà được dịch vụ HiTechAdmin cùng các lệnh HiTechCloudCLI sử dụng./etc/hitechcloud/mysql/hcontainer_db.confđược gắn vào/etc/my.cnftrong container HiTechCloud và được container đó sử dụng.
Dữ liệu MySQL được lưu trong docker volume root_mysql.
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho dịch vụ MySQL tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
MYSQL_ROOT_PASSWORD lưu mật khẩu root mysql được tạo ngẫu nhiên:
MYSQL_ROOT_PASSWORD=
SQLite
Cơ sở dữ liệu SQLite được panel HiTechAdmin dùng để tách biệt hoàn toàn giao diện quản trị và giao diện người dùng cuối.
Tệp cơ sở dữ liệu /etc/hitechcloud/hitechadmin/users.db chứa mọi tài khoản quản trị viên.
Named
Container Named (BIND9) được dùng cho DNS.
Quản trị viên có thể đặt nameserver tuỳ chỉnh tại HiTechAdmin > Cài đặt HiTechCloud để dùng cho các website HiTechCloud.
tệp cấu hình named.conf.options` mặc định
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho dịch vụ BIND9 tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
Phiên bản BIND9 có thể được đặt bằng cách đổi tag latest thành bất kỳ phiên bản nào trên hub.docker.com:
BIND9_VERSION="latest"
Múi giờ của dịch vụ BIND9 có thể được thay đổi bằng cách sửa:
BIND_TIMEZONE="America/New_York"
GoAccess
HiTechCloud dùng GoAccess để tạo báo cáo HTML đẹp mắt từ nhật ký truy cập Nginx của từng tên miền. HiTechCloud cũng tải về cơ sở dữ liệu GeoIPLite2 City và Country để hiển thị thông tin vị trí của từng địa chỉ IP trong báo cáo. Để tuỳ chỉnh các báo cáo này, sửa tệp /etc/hitechcloud/goaccess/goaccess.conf.
CSF
HiTechCloud
hitechcloud/hitechcloud là docker image cung cấp giao diện HiTechCloud cho phép người dùng quản lý tài khoản của mình.
Quản trị viên có thể đặt phiên bản HiTechCloud bằng cách đổi tag trong tệp /root/.env thành bất kỳ tag nào trên hub.docker.com:
VERSION="1.0.0"
Mặc định HiTechCloud truy cập được trên cổng 2083, nhưng quản trị viên có thể cấu hình lại bằng cách sửa giá trị PORT:
PORT="2083"
HiTechCloud là ứng dụng dựa trên Flask, dùng MySQL để lưu dữ liệu người dùng và chạy trên web server Gunicorn. Cấu hình này đảm bảo HiTechCloud vẫn hoạt động ngay cả khi web server ngừng chạy, nhờ đó cách ly hoàn toàn giữa website của người dùng và panel quản trị.
Mặc định HiTechCloud chạy ở chế độ production, chỉ ghi nhật ký lỗi và nhật ký truy cập. Với lập trình viên cần nhật ký chi tiết hơn để xử lý sự cố hoặc phát triển, có thể chuyển sang chế độ ghi nhật ký chi tiết bằng cách bật dev_mode.
HiTechAdmin
Dịch vụ admin được giao diện HiTechAdmin sử dụng.
Mặc định HiTechAdmin truy cập được trên cổng 2087, nhưng quản trị viên có thể đổi bằng cách sửa giá trị port trong cấu hình dịch vụ admin. Tuy nhiên, do hạn chế của các hệ thống tính phí như WHMCS vốn không hỗ trợ cổng tuỳ chỉnh, việc đổi cổng qua giao diện quản trị không được cho phép. Nếu đổi cổng qua terminal, điều đó có thể làm gián đoạn các tích hợp bên thứ ba đang dựa vào cổng mặc định 2087.
HiTechAdmin là ứng dụng Flask dùng SQLite làm cơ sở dữ liệu và chạy trên một phiên bản Gunicorn riêng. Nó hoạt động độc lập với HiTechCloud và web server.
ClamAV
ClamAV là engine diệt virus mã nguồn mở để phát hiện trojan, virus, mã độc và các mối đe doạ khác. HiTechCloud dùng ClamAV cho tính năng `'malware_scanner'.
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho dịch vụ ClamAV tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
Lưu ý: ClamAV cần ít nhất 1GB RAM và 1 CPU: https://docs.clamav.net/#recommended-system-requirements
Phiên bản ClamAV có thể được đặt bằng cách đổi tag latest thành bất kỳ phiên bản nào trên hub.docker.com:
CLAMAV_VERSION="latest"
ClamAV sẽ cập nhật cơ sở dữ liệu chữ ký hằng ngày và giữ nó trong RAM. Để bật tính năng này, đặt:
CLAMAV_DB_AUTOUPDATE="host"
Quản trị viên có thể chỉ định thời gian chờ (giây) để cơ sở dữ liệu chữ ký được nạp trước khi khởi động daemon:
CLAMD_STARTUP_DELAY=30
Redis
Dịch vụ Redis được giao diện người dùng HiTechCloud dùng để giữ dữ liệu phiên của người dùng và tệp tạm trong bộ nhớ.
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho dịch vụ Redis tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
Mặc định /tmp/redis/ được dùng cho tệp redis.sock để kết nối dịch vụ HiTechCloud và Redis. Có thể đổi đường dẫn này bằng cách sửa:
REDIS_SOCKET="/tmp/redis/"
FTP
vsftpd được dùng làm máy chủ FTP cho bản Enterprise. HiTechCloud cung cấp lệnh terminal và giao diện để quản lý tài khoản ftp phụ.
Quản trị viên có thể đặt giới hạn bộ nhớ (RAM) và CPU cho dịch vụ FTP tại HiTechAdmin > Dịch vụ > Giới hạn dịch vụ (/services/limits). Giới hạn được áp dụng ngay cho unit systemd của dịch vụ và được giữ qua các lần khởi động lại; không cần sửa tệp nào.
Dải cổng cho ftp thụ động (passive) cũng có thể được cấu hình:
FTP_PORT_RANGE="21000-21010"
Máy chủ mail
HiTechCloud Enterprise hỗ trợ máy chủ mail. Docker Mailserver được dùng làm máy chủ mail đầy đủ (SMTP, IMAP, LDAP, chống spam, chống virus, v.v.)
HiTechCloud cung cấp lệnh terminal và giao diện để người dùng quản lý email.
Webmail
Roundcube được cung cấp làm ứng dụng Webmail