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

3.7.2

3.7.0 biến một phiên bản thành một máy chủ khác. Bản phát hành này là những gì việc chạy nó trên một máy thật đã tìm ra — một loạt thứ đã cài, đã cấu hình và tự báo cáo đúng, nhưng không hoạt động.

Không cái nào bị một bài kiểm thử bắt được, và lý do lần nào cũng như nhau: một bài kiểm thử chứng minh rằng lệnh đúng đã được gọi. Nó không thể chứng minh hệ điều hành đã làm gì sau đó. Cái lớn nhất đúng với mọi bản cài native, và dấu hiệu duy nhất là một ảnh chụp sức khoẻ mang một ngày cũ.

Nâng cấp là hitechcloudcli update.

Fixed​

  • Webmail Community không cài được, trên bất kỳ máy chủ nào. Kho lưu trữ bị buộc theo một checksum, đúng như vậy — nhưng checksum lại được tìm trong một tệp mà dự án không công bố, nên bản tải về bị loại bỏ mỗi lần. Giờ nó được ghim trong manifest, xác minh theo một giá trị đã được xem xét trong một pull request. Đó là toàn bộ mục đích của 3.7.0, và nó chưa một lần hoạt động.
  • Pool PHP của nó chưa bao giờ khởi động. Một pool dịch vụ (Roundcube, phpMyAdmin, mail autoconfig) không phải là một website, nên không có gì xác định chủ sở hữu cho nó, và việc nạp lại đi tới master PHP của mọi tài khoản — không cái nào nạp các pool đó. Cái nạp chúng, master của bản phân phối, chưa từng được nạp lại. phpMyAdmin hoạt động nhờ trùng hợp kể từ khi ai đó khởi động lại master đó vì một lý do khác. Giờ quá trình cài nạp lại master thực sự sở hữu pool, và từ chối thay vì tuyên bố thành công trên một trang sẽ trả lời 502.
  • Trình cài đặt có thể chiếm một tên mà website khác đang phục vụ. Vhost của webmail được ghi dưới tên máy chủ thư, mà trên hầu hết máy chủ chính là tên của máy chủ — và tệp hiện có bị ghi đè mà không được đọc. Giờ nó từ chối, nêu tên tệp, và đề nghị --host. Được tìm thấy khi quan sát nó thay thế trang chủ của một máy chủ đang hoạt động.
  • Sổ đăng ký mô-đun nói webmail chưa được cài trong khi nó đang phục vụ. "Đã cài" được quyết định từ các unit systemd và một tệp đánh dấu, còn danh sách gói được khai báo thì không bao giờ được đọc. Phần mềm cài từ một kho lưu trữ vô hình. Trên một máy chủ Community, đó là mô-đun duy nhất mang tính năng webmail, nên panel ẩn một webmail đang hoạt động. Giờ các mô-đun mang một tín hiệu detect, các gói được tham khảo, và một bài kiểm thử duyệt sổ đăng ký đi kèm và làm hỏng bản dựng khi một mô-đun không có cách đáng tin cậy nào để trả lời câu hỏi. Cùng khoảng trống đó đã mở với n8n và các runtime Python, Ruby và Java.
  • Đặt mật khẩu hộp thư lưu một giá trị băm không khớp với gì. Công cụ hỏi mật khẩu rồi hỏi xác nhận; gửi một dòng làm hỏng phép kiểm tra đó một cách lặng lẽ — lời từ chối đi vào stderr, một giá trị băm của thứ khác được in ra stdout, và trạng thái thoát là 0. Panel nói mật khẩu đã được đặt và hộp thư không mở được bằng nó. Giờ cả hai dòng đều được gửi, và giá trị băm được xác minh với mật khẩu trước khi lưu.
  • vendor.json chưa bao giờ đến được một máy chủ. Mọi thành phần của bên thứ ba được ghim vào một phiên bản và một checksum trong tệp đó, và không có gì cài nó — nên một máy chủ từ chối mọi lần cài của bên thứ ba vì thiếu checksum. Cùng khoảng trống mà modules.json đã có, một bản phát hành sau. Giờ cả trình cài đặt và trình cập nhật đều mang nó.
  • Một bản cài Podman mới giải nén một trang 404. Nó tải CLI từ một nhánh đã được hợp nhất và xoá từ lâu.
  • fix_permissions dùng id người dùng của tài khoản làm id nhóm, điều chỉ đúng nhờ sự trùng hợp một người dùng một nhóm.
  • Một hook phát hiện mã độc tải một tập lệnh thuộc về một dự án không liên quan, từ một URL không còn phân giải. Giờ nó chạy tập lệnh của chính chúng tôi.
  • Các trang đăng nhập không có chế độ tối hoạt động — lớp mà phần còn lại của panel dùng để chuyển chưa từng được đặt ở đó, nên mọi quy tắc đều vô hiệu, gồm cả hai quy tắc vốn đã không hợp lệ ngay từ đầu.
  • Nhật ký lệnh của terminal web chỉ bao phủ một trong hai stack. Giờ cả hai đều ghi lại những gì đã gõ, qua cùng một bản triển khai — không bao giờ ghi một dòng mà shell không phản hồi lại, nên một mật khẩu gõ tại dấu nhắc không bị ghi xuống.

Máy chủ đã không chạy các công việc theo lịch của chính nó​

  • Mười tám công việc theo lịch chưa bao giờ chạy, trên mọi bản cài native. Trình cài đặt ghi /etc/cron.d/hitechcloud với hai dòng tiêu đề và không có công việc nào. Chú thích phía trên đoạn mã đó nói tiêu đề ở đó để trang System Crons không báo tệp bị thiếu; nó không báo thiếu tệp, nó báo không có công việc, và báo đúng. Biến mất cùng chúng: bộ giám sát sức khoẻ chạy năm phút một lần và báo cáo hằng ngày của nó, thực thi giới hạn gửi đi, các đầu dò trang trạng thái, việc nạp chuỗi kiểm toán và lần niêm phong hằng ngày của nó, sao lưu hệ thống hằng tuần, thống kê tên miền và lưu lượng, PageSpeed, quét lỗ hổng WordPress, kế toán dung lượng reseller, tệp người dùng FTP, bản tóm tắt thư, dọn thùng rác và cập nhật quy tắc OWASP. Không gì báo điều đó, vì một máy chủ không có công việc theo lịch trông y hệt một máy chủ khoẻ mạnh. Nâng cấp đặt lại mọi công việc mà máy chủ đang thiếu và không bao giờ chạm vào cái nào bạn đã sửa.
  • Trang thông báo cho biết lần chạy cuối của bộ giám sát. Đây là thứ lẽ ra đã làm điều trên lộ ra từ ngày đầu: một trang trống trông giống hệt nhau dù không có gì sai hay không có gì đang được kiểm tra. Quá mười lăm phút — ba lần chạy bị lỡ — nó nói điều đó bằng màu đỏ.
  • Tệp nhị phân tuân thủ chưa bao giờ được cài, và một lần nâng cấp không bao giờ nhận ra. Trình cài đặt biết cách tải nó và bản phát hành có công bố, nhưng không gì làm mới nó, nên một máy chủ mà lần thử đầu thất bại thì không có chuỗi kiểm toán và không có quan sát trang trạng thái, mãi mãi. Giờ nó được cài và giữ cập nhật.

Chính bộ giám sát​

  • Một sự cố đã được giải quyết vẫn tiếp tục bị báo, còn sự cố kế tiếp thì không. Một thông báo chưa đọc là cách ba kiểm tra quyết định rằng chúng đã báo bạn về điều gì đó, và không gì từng xoá cờ đó ngoài việc quản trị viên nhấp bỏ nó. Vì vậy nó không ngăn một đợt lặp lại — nó làm im đợt kế tiếp. Tệ nhất ở đĩa: kiểm tra đó hỏi xem nó đã cảnh báo chưa trước khi đo, nên một thông báo "Running out of Disk Space!" chưa đọc duy nhất làm nó thôi đọc đĩa hoàn toàn. Một máy chủ đã đầy một lần và được dọn dẹp thì sau đó không còn giám sát đĩa. Giờ mỗi kiểm tra tự xoá cảnh báo của mình khi nó qua.
  • Cảnh báo bộ nhớ lặp lại mỗi năm phút, vì chốt chặn của nó so sánh với phần đầu của thông điệp thay vì tiêu đề của thông báo nên không khớp gì. CPU và tải hệ thống không có chốt chặn nào — một giờ tải cao ghi mười hai thông báo giống hệt nhau và mười hai báo cáo sự cố.
  • Một vấn đề vẫn đang diễn ra được tính là cảnh báo chứ không phải thất bại, và đó là thứ đi vào ảnh chụp sức khoẻ — nên bất cứ thứ gì đọc nó đều thấy một máy chủ đầy đĩa chỉ đáng để ý.
  • Bộ giám sát tranh chấp với trình cài đặt về tường lửa. Một bản cài native để CSF đã cấu hình và cố ý tắt, vì một tường lửa lên trong lúc cài đặt là một máy chủ biến mất trong lúc cài đặt. Kiểm tra đọc điều đó như một dịch vụ đã sập và cố khởi động nó mỗi năm phút, mãi mãi. Giờ nó nói tường lửa đã được cài và đang tắt, và nơi để bật nó.

Các dịch vụ không khởi động được​

  • HAProxy thất bại ở mỗi lần khởi động sau lần đầu. Socket thống kê của nó nằm trong /run/haproxy, và quá trình cài tạo thư mục đó một lần — /run là một tmpfs. Cấu hình vẫn hợp lệ, nên trông vẫn ổn. Một quy tắc tmpfiles tạo lại nó khi khởi động, và repair ghi quy tắc đó cho một máy chủ đã khởi động lại.
  • WireGuard báo một VPN không tồn tại. native-wireguard install bật wg-quick@wg0, bỏ kết quả và in "WireGuard is up". Trên nhân RHEL 8 không có WireGuard — 4.18 có trước nó và không có gói mô-đun nào trong các kho mặc định — nên unit thất bại ở lần khởi động đó và mọi lần sau. Giờ nó kiểm tra nhân trước khi bật bất cứ thứ gì, nói điều gì sai và điều gì sẽ sửa được, và xác minh unit thực sự đang chạy trước khi tuyên bố như vậy.

Webmail​

  • MailFlow thượng nguồn v3.5.7. Ba bản sửa IMAP — lưu cờ INBOX qua phiên bền vững, lưu cờ được tuần tự hoá và các bên chờ khoá được gỡ kẹt, và thang chính được xoá khi đồng bộ thành công thay vì khi đăng nhập thành công — cùng việc bóc bí danh chuyển tiếp, nên một thư đến qua một dịch vụ chuyển tiếp hiển thị đúng người gửi thật, và phân loại bằng bàn phím cùng điều hướng hộp thư. Mười hai chuỗi tiếng Việt cho văn bản mới.
  • Trang ngôn ngữ không còn đề nghị một ngôn ngữ mà sau đó nó sẽ từ chối. Nó liệt kê mọi thư mục trong danh mục, trong khi việc cài một cái chỉ kiểm tra tên trông giống một locale.

Changed​

  • Một lệnh, một tên. hitechcloud-rustcli được gộp vào hitechcloudcli; tên cũ vẫn là một symlink cho mọi thứ gọi nó theo đường dẫn. Tệp nhị phân có hai tính cách được chọn theo tên mà nó được gọi: khi một người gõ, nó kiểm tra root, ghi lịch sử và chạy hook; khi panel gọi, nó không làm gì trong số đó và chỉ trả lời.
  • Một bề mặt lệnh. hitechcloudcli <noun> <verb> trên cả 177 lệnh, với mọi tên cũ vẫn hoạt động qua cùng một mã — được chứng minh bằng các bài kiểm thử chạy tệp nhị phân theo cả hai cách và so sánh các byte. Các tiền tố của thời kỳ cũ (native-, và các tiền tố còn lại) là thứ mà các tên mới bỏ đi.
  • native-wireguard là Rust, phần logic lệnh cuối cùng của native stack chuyển khỏi shell ngoại trừ native-ipmanager. hitechcloudcli native-install --scheduled-jobs-only là mới, và là thứ một lần nâng cấp chạy để đặt lại lịch của máy chủ.
  • Bộ chọn webmail của admin thôi đề nghị tên container. Nó liệt kê các mô-đun webmail mà máy chủ có, và thao tác của nó sửa chữa cái bạn chọn — cái cũ gọi một lệnh đã trả lời "that is not how this stack serves webmail" từ một thời gian.
Trang này có hữu ích không?