Tài liệuKho ứng dụng và lưu trữ S3

Kho ứng dụng và lưu trữ S3

Chạy ứng dụng Docker 1-click như n8n, Nextcloud, Uptime Kuma sau tên miền, deploy từ image có sẵn và cấp bucket tương thích S3 cho khách.

Ngoài website PHP, ZoPanel chạy được ứng dụng trong container Docker và cung cấp kho lưu trữ đối tượng tương thích S3 ngay trên cùng server. Cả hai đều là thành phần tuỳ chọn. Mỗi thành phần đều tốn RAM, nên chỉ cài khi thật sự dùng.

Cài Docker

Docker là điều kiện để dùng Kho ứng dụng, deploy bằng image và lưu trữ S3. Có ba cách cài Docker:

  • Kho ứng dụng → Cài Docker;
  • Thành phần → Docker (menu quản trị);
  • thêm --with docker (hoặc --profile full) khi chạy bộ cài.

ZoPanel cấu hình Docker để container tách biệt với hệ thống và với các tài khoản hosting:

  • User namespace (userns-remap): UID trong container được ánh xạ sang một dải không trùng với tài khoản hosting nào.
  • Chỉ mở cổng nội bộ: container chỉ publish cổng trên 127.0.0.1, nên không thể vượt qua firewall. Khách truy cập ứng dụng qua nginx của website, có SSL.
  • Các container không giao tiếp trực tiếp với nhau (tắt inter-container communication).
  • Mỗi container chạy với no-new-privileges, tối đa 512 tiến trình, và bị bỏ một số capability Linux (NET_RAW, MKNOD, AUDIT_WRITE).
  • Mỗi ứng dụng có giới hạn RAM và CPU (xem bảng bên dưới; 1 CPU mỗi ứng dụng). Container của khách chạy trong nhóm tài nguyên của chính tài khoản đó, nên giới hạn của gói hosting cũng được áp dụng.
  • Dữ liệu ứng dụng nằm trong /var/lib/zopanel-apps/<instance>/. Chỉ root và container đó đọc được. Biến môi trường được truyền qua một file mà chỉ root đọc được, không qua dòng lệnh.
  • Log container được xoay vòng (3 file, mỗi file 10 MB).

Kho ứng dụng

Kho ứng dụng liệt kê các ứng dụng cài 1-click. Khi bạn cài một ứng dụng, ZoPanel tạo website cho tên miền đã chọn, khởi động container và chuyển tiếp tên miền vào container đó. SSL được cấp tự động khi tên miền đã trỏ về server.

Ứng dụng Loại Giới hạn RAM
n8n Tự động hoá quy trình 1024 MB
Uptime Kuma Giám sát uptime, trang trạng thái 512 MB
Nextcloud Đồng bộ và chia sẻ file, lịch, danh bạ 1024 MB
Gitea Git hosting gọn nhẹ 512 MB
Vaultwarden Quản lý mật khẩu tương thích Bitwarden 256 MB
Metabase Dashboard phân tích dữ liệu 1536 MB
Ghost Blog và newsletter (SQLite) 768 MB
Memos Ghi chú gọn nhẹ 256 MB
Open WebUI Chat AI cho API tương thích OpenAI và Ollama 2048 MB
OpenClaw Trợ lý AI trò chuyện qua ứng dụng chat (cần API key của LLM) 2048 MB
Flowise Kéo thả để dựng chatbot và agent AI 1024 MB
Excalidraw Bảng trắng cộng tác 256 MB

Ứng dụng cần API key sẽ hỏi key khi cài. Bạn tự trả phí cho nhà cung cấp model. Ứng dụng có dự án gốc đã ngừng nhận bản vá bảo mật sẽ không còn được cung cấp, nhưng bản đã cài vẫn quản lý được bình thường.

Cài một ứng dụng

  1. Mở Kho ứng dụng và chọn ứng dụng.
  2. Nhập tên miền. Quản trị viên chọn thêm tài khoản hosting sở hữu ứng dụng.
  3. Bấm Cài đặt. Log tác vụ hiển thị quá trình tải image và khởi động.
  4. Trỏ bản ghi A của tên miền về server nếu chưa trỏ. SSL sẽ được cấp tự động sau đó.

Quản lý ứng dụng đã cài ở tab Docker của website. Tại đây bạn xem được trạng thái và output, khởi động lại ứng dụng, và dùng Cập nhật bản mới để kéo image mới nhất mà vẫn giữ dữ liệu. Nếu ứng dụng tạo token đăng nhập, token hiển thị trong mục Thông tin đăng nhập.

Giới hạn ứng dụng cho khách

Khách tự cài được ứng dụng khi gói hosting cho phép. Đặt giới hạn tại Gói hosting → Ứng dụng Docker:

  • 0 nghĩa là không cho phép cài ứng dụng.
  • Số khác là số ứng dụng tối đa tài khoản được chạy.
  • Giới hạn RAM của mỗi ứng dụng được tính vào RAM (MB) của gói. Lượt cài làm vượt mức này sẽ bị từ chối.

Khách chỉ cài được ứng dụng có trong danh mục. Image tuỳ chỉnh chỉ dành cho quản trị viên.

Docker image tuỳ chỉnh

Quản trị viên có thể chạy bất kỳ image công khai nào sau một tên miền bằng Kho ứng dụng → Docker image tuỳ chỉnh. Nhập image, Cổng container, Đường dẫn dữ liệu (tuỳ chọn) và RAM.

Image ngoài danh mục bị tắt cho tới khi root bật trên server:

zopanel ctl feature enable custom-docker

Công tắc này chỉ đổi được trên server, không đổi được từ giao diện web. Nhờ vậy, một phiên đăng nhập panel bị chiếm quyền không thể tự chạy container tuỳ ý.

Deploy bằng image

Tab Deploy của website cũng chạy được mã của bạn trong container:

  • Container (Dockerfile): ZoPanel build từ Dockerfile trong repository.
  • Docker image có sẵn: nhập một image công khai như nginx:1.27 hoặc ghcr.io/owner/app:v2. Nên ghim tag cụ thể. Cổng lấy từ biến PORT hoặc từ EXPOSE của image.

Cả hai cách dùng chung quy trình deploy: health check, chuyển phiên bản không gián đoạn và Rollback về 5 bản release gần nhất. Container chỉ lắng nghe trên 127.0.0.1. Cả hai cách cũng cần chạy zopanel ctl feature enable custom-docker trên server.

Lưu trữ đối tượng S3

Lưu trữ S3 cấp cho khách các bucket tương thích Amazon S3 ngay trên server của bạn. Bucket dùng để lưu ảnh, file tải lên, media hoặc làm đích sao lưu. Engine là Garage, chạy trong container, nên cần có Docker.

Cài đặt (quản trị viên)

  1. Mở Lưu trữ S3 và bấm Cài đặt, hoặc cài Lưu trữ S3 trong Thành phần. Dữ liệu nằm tại /var/lib/zopanel-storage.
  2. S3 API chỉ lắng nghe trên 127.0.0.1. Để dùng từ bên ngoài server, trỏ bản ghi A của một tên miền về server rồi dùng Mở ra tên miền. ZoPanel tạo một website reverse proxy có SSL tự động cho tên miền đó.
  3. Ứng dụng kết nối tới https://<tên miền đó> với region us-east-1. Bật path-style trong S3 client.

Gỡ cài đặt xoá container. Dữ liệu được giữ lại, trừ khi bạn tích Xoá luôn toàn bộ dữ liệu và bucket.

Bucket

Mọi tài khoản hosting đều tạo được bucket tại Lưu trữ S3 → Tạo bucket:

  • Tên bucket gồm 3–63 ký tự: chữ thường, số và dấu gạch ngang.
  • Mỗi bucket có khoá truy cập riêng, chỉ dùng được cho bucket đó. Secret chỉ hiển thị một lần. Nếu mất secret, dùng Xoay khoá; khoá cũ ngừng hoạt động ngay.
  • Mỗi bucket bị giới hạn bằng dung lượng đĩa trong gói của tài khoản. Bucket không tính vào quota đĩa của tài khoản.
  • Mỗi tài khoản tạo tối đa 10 bucket. Quản trị viên không bị giới hạn.
  • Gói Free có 1 bucket trên toàn server. Gói Pro không giới hạn.

Trong Cài đặt bucket, bạn có thể khai báo các origin CORS cho website gọi trực tiếp vào bucket. Bạn cũng có thể đặt Tự xóa file sau (ngày) cho log hoặc bản sao lưu xoay vòng. Upload dang dở luôn được dọn sau 7 ngày. Duyệt file cho phép tải lên, tải xuống, xoá file và tạo Link chia sẻ có thời hạn.

Bucket công khai

Tích Công khai để ai cũng đọc được file mà không cần khoá, ví dụ ảnh trên website. Bạn có thể bật hoặc tắt lại bất cứ lúc nào. Khi lưu trữ đã được mở ra tên miền, file công khai có địa chỉ:

https://<tên miền lưu trữ>/<bucket>/<file>

Bucket riêng tư cần khoá hoặc link chia sẻ. File tải xuống từ trình duyệt file của panel luôn được trả về dạng tệp đính kèm.

Khoá bucket dùng được với mọi SDK hoặc plugin S3, như WP Offload Media, driver S3 của Laravel hay AWS SDK.


← Hiệu năng và sức chứa Chuyển sang ZoPanel →