Chuyển tới nội dung chính
Version: 4.1

Quản lý container người dùng từ terminal

Đã ngừng

Trang này mô tả container stack, vốn đã ngừng sử dụng và không còn nhận cập nhật. Hãy chuyển các tài khoản của nó sang một máy chủ chạy dịch vụ trên host: Chuyển khỏi container stack.

Trong HiTechCloud, mỗi người dùng có Docker context riêng chạy ở chế độ rootless. Nếu đã quen với Docker, bạn có thể quản lý tệp và dịch vụ của người dùng trực tiếp từ terminal.

Cần quyền truy cập SSH với người dùng root trên máy chủ để chuyển giữa các Docker context.


Thiết lập Compose​

Môi trường của mỗi người dùng dựa trên:

  • docker-compose.yml – khai báo dịch vụ, mạng và volume.
  • .env – khai báo giới hạn CPU/bộ nhớ, tag image Docker và các cổng tuỳ chỉnh.

⚠️ Luôn sửa các tệp này qua giao diện HiTechAdmin. Giao diện sẽ kiểm tra hợp lệ các thay đổi của bạn. Sửa trực tiếp từ terminal sẽ bỏ qua bước kiểm tra và có thể làm hỏng dịch vụ. Hãy sao lưu trước khi sửa đổi.


Cấu trúc tệp​

Thư mục home của mỗi người dùng nằm tại:

/home/USERNAME/

Thư mục này chứa các tệp cấu hình và dữ liệu người dùng. Ví dụ cấu trúc:

├── .env # Environment variables: versions, ports, CPU/memory limits
├── backup.env # Backup configuration
├── crons.ini # Cron jobs
├── custom.cnf # MySQL configuration
├── default.vcl # Varnish cache configuration
├── docker-compose.yml # Service definitions
├── docker-data # Docker storage
│ ├── containerd # Container runtime data
│ ├── containers # Individual container data
│ ├── image # Docker images
│ ├── network # Docker networks
│ ├── overlay2 # Overlay filesystem storage
│ ├── plugins # Docker plugins
│ └── volumes # Persistent data volumes
│ ├── <USERNAME>_html_data # Website files (/var/www/html/)
│ └── <USERNAME>_mysql_data # MySQL database files (/var/lib/mysql/)
├── httpd.conf # Apache configuration
├── my.cnf # MySQL root credentials for service commands
├── nginx.conf # NGINX configuration
├── openlitespeed.conf # OpenLiteSpeed configuration
├── openresty.conf # OpenResty configuration
├── php.ini/ # PHP configuration files
├── pma.php # phpMyAdmin entry point
└── sockets # Sockets (MySQL, Redis, PostgreSQL, etc.)
  • Tệp website được lưu trong Docker volume USERNAME_html_data và nằm vật lý tại:
/home/USERNAME/docker_data/volumes/USERNAME_html_data/_data/
  • Quyền sở hữu tệp phải khớp với ID người dùng HiTechCloud. Kiểm tra bằng:
id -u USERNAME
  • Docker chạy ở chế độ rootless, ánh xạ UID của người dùng thành root bên trong container. Điều này tránh được các vấn đề về quyền mà vẫn cho người dùng quyền cấp root trong các dịch vụ của mình.

  • Hạn mức đĩa được áp dụng bằng công cụ quota. Để kiểm tra mức sử dụng đĩa và inode của người dùng:

quota -u USERNAME

Quản lý dịch vụ​

Dịch vụ được khai báo trong /home/USERNAME/docker-compose.yml. Bạn có thể mở rộng tệp này với các dịch vụ tuỳ chỉnh, nhưng để giữ tương thích với giao diện HiTechCloud, hãy làm theo hướng dẫn.

Dùng Docker context của người dùng để quản lý dịch vụ của họ. Ví dụ:

  • Liệt kê dịch vụ đang chạy:
docker --context=USERNAME ps -a
  • Dừng một dịch vụ:
docker --context=USERNAME stop mysql
  • Khởi động lại một dịch vụ:
cd /home/USERNAME && \
docker --context=USERNAME compose down mysql && \
docker --context=USERNAME compose up -d mysql
  • Vào bên trong một dịch vụ (exec):
docker --context=USERNAME exec -it mysql bash
  • Xem mức sử dụng tài nguyên:
docker --context=USERNAME stats --no-stream

Tên miền​

Tệp cấu hình tên miền được lưu tại:

  • Cấu hình Caddy:
/etc/hitechcloud/caddy/domains/<DOMAIN>.conf

Mỗi tên miền có Caddyfile riêng. Caddy xử lý chứng chỉ SSL và đóng vai trò reverse proxy tới web server của người dùng. Thông tin thêm, xem: Luồng lưu lượng web qua container người dùng

  • Tệp vùng BIND9:
/etc/bind/zones/<DOMAIN>.db

Chứa các bản ghi DNS của tên miền.


Sao lưu​

Trên container stack, HiTechCloud dùng offen/docker-volume-backup (cấp phép theo Mozilla Public License 2.0) để sao lưu. Cấu hình được lưu trong /home/{CONTEXT}/backup.env. Native stack không chạy container này: việc sao lưu do chính HiTechCloud thực hiện, như mô tả trong Sao lưu.

  • Quản trị viên có thể lên lịch sao lưu tự động cho người dùng.
  • Người dùng cũng có thể bật và quản lý bản sao lưu của riêng mình nếu được phép.
  • Chỉ các Docker volume được sao lưu, vốn chứa dữ liệu thực của người dùng (tệp website và cơ sở dữ liệu).

Hướng dẫn chi tiết, xem: Cấu hình sao lưu HiTechCloud


Cron​

HiTechCloud dùng mcuadros/ofelia cho các tác vụ cron. Cấu hình được lưu trong /home/{CONTEXT}/crons.ini.


Cổng​

Các cổng được khai báo trong tệp .env của người dùng:

root@stefan:/# grep _PORT /home/stefan/.env
HTTP_PORT="127.0.0.1:32780:80"
HTTPS_PORT="127.0.0.1:32781:443"
PROXY_HTTP_PORT="127.0.0.1:32782:80"
MYSQL_PORT="127.0.0.1:32777:3306"
PMA_PORT="32779:80"
POSTGRES_PORT="0:5432"
PGADMIN_PORT="0:80"
  • Các cổng được tạo khi tạo người dùng nhưng quản trị viên có thể thay đổi. Sau khi thay đổi, chạy compose down && compose up để thay đổi có hiệu lực.
  • ⚠️ Chế độ Docker rootless không cho dùng các cổng dưới 1024.
  • Dịch vụ không nên mở cổng ra bên ngoài trừ khi cần truy cập từ xa (ví dụ phpMyAdmin, MySQL từ xa hoặc pgAdmin).