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

Chuyển khỏi container stack

Container stack đã ngừng sử dụng

Từ ngày 30 tháng 9 năm 2026, HiTechCloud chỉ chạy trên stack dịch vụ trên host: mọi dịch vụ (web server, PHP, MariaDB, mail, DNS, FTP) là một dịch vụ systemd trên host. Container stack cũ, nơi mỗi tài khoản chạy các container podman hoặc docker riêng, đã ngừng sử dụng:

  • nó không còn nhận cập nhật (hitechcloudcli update dừng ở bước kéo image, vì image panel của nó không còn được phát hành);
  • không còn trình cài đặt cho nó (PODMAN_INSTALL.sh đã bị gỡ);
  • các bản phát hành hiện tại của HiTechAdmin và hitechcloudcli nhận ra máy chủ container và thông báo (một banner trên mọi trang HiTechAdmin, và một thông báo từ lần kiểm tra cập nhật hằng giờ). Tuy nhiên máy chủ container không tự cập nhật lên các bản phát hành đó được, nên trang này là thông báo mà đa số sẽ thấy.

Không có gì trên máy chủ container bị tắt vì việc này. Các tài khoản của nó vẫn hoạt động cho tới khi bạn chuyển chúng đi.

Việc chuyển diễn ra từ máy chủ sang máy chủ: bạn cài một máy chủ mới với các dịch vụ trên host, và máy chủ đó sao chép mọi tài khoản từ máy chủ container. Máy chủ container chỉ bị đọc. Không có gì trên đó thay đổi cho tới khi bạn chạy cutover cho một tài khoản.

Những gì được chuyển​

Với mỗi tài khoản hosting:

Hạng mụcCách nó có mặt trên máy chủ mới
Tài khoảnCùng tên người dùng. Tài khoản giữ mật khẩu panel, địa chỉ e-mail và khoá bí mật xác thực hai yếu tố, cùng mã băm mật khẩu SSH/hệ thống.
GóiGói cùng tên trên máy chủ này, hoặc một bản sao của gói cũ.
Tệp websiteĐược sao chép vào /home/<account>/public_html.
Web serverMỗi website giữ web server nó đang dùng: nginx, Apache, OpenLiteSpeed hoặc OpenResty.
Cơ sở dữ liệuChỉ các cơ sở dữ liệu của chính tài khoản. Chúng được đổi tên theo dạng <account>_<name> của host, nên shop thành alice_shop.
Người dùng cơ sở dữ liệuĐược đổi tên theo cùng cách, ví dụ alice_wpuser, với cùng quyền. Người dùng MariaDB giữ mật khẩu. Xem bên dưới với MySQL.
Cấu hình websiteCác tệp wp-config.php và .env có ghi cơ sở dữ liệu, người dùng cũ hoặc host container (mysql, mariadb) sẽ được viết lại. Bản gốc được giữ dưới tên <file>.pre-migration.
Tên miền và chứng chỉMỗi tên miền được thêm qua domains-add. Chứng chỉ còn hiệu lực từ máy chủ cũ được nhập vào; nếu không, AutoSSL sẽ cấp chứng chỉ mới.
Vùng DNSĐược sao chép, với IP của máy chủ cũ được thay bằng IP của máy chủ này.
MailHộp thư cùng thư đã lưu và mật khẩu, bí danh và chuyển tiếp, hạn mức, và khoá DKIM, để bản ghi DKIM đã công bố vẫn hợp lệ.
FTPĐăng nhập FTP, mỗi đăng nhập giữ mật khẩu của mình.
Tác vụ cronĐược sao chép, với đường dẫn container được viết lại thành đường dẫn trên host, và được lên lịch trong crontab của tài khoản.

Quá trình di chuyển không bao giờ đụng tới đăng nhập root hay đăng nhập cơ sở dữ liệu panel của chính máy chủ mới. Nó chỉ tạo và cấp quyền cho các đăng nhập <account>_… trên các cơ sở dữ liệu <account>_….

Không được chuyển (được liệt kê trong kế hoạch): các container PostgreSQL, MongoDB, Redis/Valkey, Memcached và Elasticsearch/OpenSearch. Hãy chuyển dữ liệu của chúng thủ công.

Cơ sở dữ liệu đến từ container MySQL (không phải MariaDB) được nhập vào MariaDB. Mật khẩu của người dùng trong đó dùng caching_sha2_password của MySQL, vốn MariaDB không đọc được, nên mỗi người dùng như vậy nhận một mật khẩu mới. Tệp wp-config.php hoặc .env của website được viết lại với mật khẩu mới đó. Các loại tệp cấu hình khác không được viết lại: kết quả liệt kê mọi người dùng bị đặt lại mật khẩu.

Các bước​

  1. Cài một máy chủ mới với các dịch vụ trên host. Dùng một máy mới, không phải máy chủ container:

    bash <(curl -sSL https://hitechcloud.org)
  2. Cho nó truy cập máy chủ container với quyền root, bằng khoá. Chạy lệnh này trên máy chủ mới:

    ssh-keygen -t ed25519 # if root has no key yet
    ssh-copy-id root@<old server>
  3. Xem những gì sẽ được chuyển. Lệnh này không thay đổi gì trên cả hai máy chủ:

    hitechcloudcli migrate accounts plan --from <old server>

    Kế hoạch liệt kê mọi tài khoản, cùng tên miền, cơ sở dữ liệu (tên cũ và tên mới), người dùng cơ sở dữ liệu, và những gì sẽ không được chuyển. Thêm --account <name> để xem một tài khoản.

  4. Di chuyển. Mỗi tài khoản chạy như một tác vụ nền riêng, unit systemd hitechcloud-migrate-<account>:

    hitechcloudcli migrate accounts run --from <old server>
    hitechcloudcli migrate accounts status --from <old server>

    Mỗi tài khoản giữ ba tệp trong /var/lib/hitechcloud/migration/<old server>/<account>/:

    • progress.json: bước đang thực hiện và các bước đã xong;
    • result.json: những gì đã được chuyển, và mọi id đã thay đổi (cũ và mới);
    • log: những gì đã diễn ra, gồm cả lý do khi một bước thất bại.

    Chạy lại run sẽ tiếp tục mỗi tài khoản từ chỗ nó dừng. Bước đã xong sẽ không bị lặp lại.

  5. Kiểm tra từng tài khoản trên máy chủ mới. Trước khi đổi DNS, hãy trỏ tên miền về máy chủ mới trong tệp /etc/hosts của chính bạn. Sau đó mở website, đăng nhập vào panel và webmail, và đọc result.json.

  6. Chuyển hẳn (cutover), từng tài khoản một.

    hitechcloudcli migrate accounts cutover --from <old server> --account <name> --yes

    Lệnh này dừng các container của tài khoản trên máy chủ cũ. Đây là bước duy nhất thay đổi máy chủ cũ. Sau đó trỏ các tên miền của tài khoản về máy chủ mới, hoặc trỏ nameserver nếu máy chủ mới host DNS của nó.

Khi mọi tài khoản đã được chuyển hẳn, có thể cho máy chủ cũ ngừng hoạt động.

Các cách khác để chuyển tài khoản​

hitechcloudcli user-transfer chuyển một tài khoản, và hitechcloudcli server-migrate chuyển mọi tài khoản cùng thiết lập của panel, giữa hai máy chủ đều chạy dịch vụ trên host. Chúng không chuyển đổi tài khoản container. Từ một máy chủ container, chúng sao chép /home nhưng không sao chép cơ sở dữ liệu, hồ sơ website hay mail, vì vậy đừng dùng chúng cho việc này.