MORA Meet
Hướng dẫn cài đặt

Cài MORA Meet lên máy chủ của bạn

MORA Meet là nền tảng họp trực tuyến tự chủ hạ tầng: video/âm thanh WebRTC, vẽ thời gian thực lên nội dung đang trình chiếu, ghi hình, phòng chờ, danh sách tham dự, trang quản trị và app Windows cho người chủ trì. Toàn bộ chạy trên máy chủ của chính bạn — dữ liệu, bản ghi hình, danh sách người dùng không rời khỏi máy.

Tổng quan

Cài đặt chỉ cần một dòng lệnh trên máy Ubuntu sạch. Bộ cài tự cài Docker, nginx, certbot; kéo mã nguồn; sinh mọi bí mật; xin chứng chỉ HTTPS; dựng dịch vụ; cài bộ cập nhật; rồi in đường vào trang chào mừng để bạn tự cấu hình logo, tên tổ chức, đăng nhập SSO và giấy phép trên trình duyệt. Thời gian cài trọn bộ khoảng 5–10 phút tuỳ tốc độ mạng của máy chủ.

curl -fsSL https://install.o3o.vn/meet/cai-o3o-meet.sh \
  | sudo bash -s -- --domain meet.congty.vn --email it@congty.vn

Thay meet.congty.vn bằng tên miền đã trỏ về máy và it@congty.vn bằng email nhận thông báo chứng chỉ. Chi tiết từng bước ở dưới.

1. Trước khi cài

Bộ cài kiểm và nhắc, nhưng không làm thay ba việc: chuẩn bị máy, trỏ DNS và mở tường lửa ở nhà cung cấp. Làm đủ ba việc này trước thì lần cài đầu sẽ xong ngay, không phải chạy lại.

Máy chủ

Hạng mụcYêu cầuGhi chú
Hệ điều hànhUbuntu Server 22.04 LTS hoặc 24.04 LTS, bản 64-bit, mới cài sạchMáy ảo / VPS / máy vật lý đều được. Bộ cài dùng nginx của hệ thống và xoá site mặc định; máy đang chạy web khác trên cổng 80/443 thì không nên dùng chung.
QuyềnTài khoản root hoặc có sudoBộ cài từ chối chạy khi không phải root.
CPU · RAM · đĩaTối thiểu 2 vCPU · 4 GB RAM · 40 GB SSDĐủ cho vài cuộc họp cùng lúc. Nhiều cuộc họp đồng thời hơn thì thêm CPU và băng thông; ghi hình chiếm đĩa (ước chừng dưới 1 GB mỗi giờ ghi ở 720p) — theo dõi /data/recordings.
MạngIP công khai tĩnh gắn thẳng vào máyMáy đứng sau NAT/router vẫn cài được với --sau-nat --ip <IP công khai>, nhưng phải chuyển tiếp đủ các cổng dưới đây.
Kết nối ra ngoàiMáy ra được internet (apt, Docker Hub, Let's Encrypt, kho mã)Máy trong mạng nội bộ không ra được kho: chép cây mã lên rồi cài với --nguon.

Mạng & tường lửa

Mở các cổng sau ở tường lửa của nhà cung cấp (security group / firewall của VPS). Bộ cài không tự mở vì mỗi nhà cung cấp một kiểu.

CổngGiao thứcDùng cho
22TCPSSH quản trị
80, 443TCPWeb, API, WebSocket nét vẽ (/ws), tín hiệu hình/tiếng (/rtc), xin chứng chỉ
7881TCPMedia WebRTC qua TCP (khi UDP bị chặn phía người dùng)
5349TCPTURN/TLS — cho người dùng sau mạng công ty chặt
3478UDPTURN/UDP
50000–60000UDPMedia WebRTC (hình và tiếng)
Thiếu dải UDP 50000–60000 là triệu chứng khó nhận ra nhấtMọi người vào phòng bình thường, thấy tên nhau, nhưng không ai nghe thấy ai. Nếu sau khi cài gặp đúng hiện tượng này, kiểm tường lửa trước khi nghĩ tới bất cứ thứ gì khác.

Tên miền (DNS)

Tạo một bản ghi A trỏ tên miền về IP công khai của máy, ví dụ meet.congty.vn → 203.0.113.10. Mặc định bộ cài dùng một tên miền duy nhất: máy chủ media và máy chủ nét vẽ đi chung tên miền theo đường dẫn, cùng một chứng chỉ.

Muốn tách riêng (một số hệ thống proxy/CDN cần), thêm cờ --tach-ten-mien và tạo thêm ba bản ghi A cho media., ws., turn. nằm dưới tên miền chính (media.meet.congty.vn…). Cài kèm Keycloak thì thêm id.meet.congty.vn.

Nếu dùng CloudflareĐặt bản ghi ở chế độ DNS only (đám mây xám). Proxy của Cloudflare không chuyển được media WebRTC và TURN.

Kiểm DNS đã lan chưa (kết quả phải là IP máy):

dig +short A meet.congty.vn @1.1.1.1

2. Cài đặt

Đăng nhập SSH vào máy rồi chạy đúng một dòng. Bộ cài in tiến trình theo 7 bước và dừng ngay tại dòng gặp lỗi (có báo số dòng và lệnh hỏng).

curl -fsSL https://install.o3o.vn/meet/cai-o3o-meet.sh \
  | sudo bash -s -- --domain meet.congty.vn --email it@congty.vn

Cài xong, màn hình in ra ba thứ cần giữ lại:

Chạy lại an toànChạy lại đúng lệnh trên bao nhiêu lần cũng được: bí mật đã sinh và chứng chỉ đã có được giữ nguyên, chỉ phần còn thiếu mới làm tiếp. Đây là cách sửa mọi lần cài dở dang (DNS chưa trỏ, mạng đứt giữa chừng…).

Tuỳ chọn dòng lệnh

CờÝ nghĩa
--domain <tên miền>bắt buộcTên miền chính đã trỏ về máy.
--email <email>khuyên dùngEmail nhận cảnh báo chứng chỉ Let's Encrypt sắp hết hạn.
--keycloaktuỳ chọnChưa có máy chủ đăng nhập (SSO)? Cài kèm Keycloak tại id.<tên miền>. Đã có Keycloak/OIDC riêng thì bỏ cờ này và điền ở trang chào mừng.
--tach-ten-mientuỳ chọnBa tên miền con media. ws. turn. bên cạnh tên miền chính, thay cho một tên miền chung (cần thêm 3 bản ghi DNS).
--sau-nat --ip <IP>tuỳ chọnMáy sau NAT/router: không tự dò IP, ghim IP công khai cho máy chủ media.
--repo <url git>tuỳ chọnKho mã khác kho mặc định (bản nội bộ, bản fork).
--nhanh <token>tuỳ chọnKho riêng: token chỉ-đọc (GitLab read_repository). Token được cất riêng cho root, không nằm trong cấu hình git.
--nguon <thư mục>tuỳ chọnCài từ cây mã đã chép sẵn trên máy (máy không ra được kho). Sau đó nối kho bằng o3o-cap-nhat noi-kho để cập nhật được — xem mục Cập nhật.

Bộ cài làm gì (7 bước)

  1. Phần mềm nền — cài Docker, nginx, certbot, git, dnsutils (chờ tối đa 5 phút nếu máy vừa khởi động còn đang tự cập nhật).
  2. Mã nguồn — kéo kho vào /opt/o3o-meet (hoặc chép từ --nguon).
  3. Sinh cấu hình — tạo /opt/o3o-meet/cai-dat/.env chứa toàn bộ bí mật (quyền 600), cấu hình máy chủ media và ghi hình. Chạy lại thì giữ nguyên bí mật cũ; đổi --domain thì chỉ cập nhật tên miền.
  4. nginx — site riêng cho tên miền, chuyển tiếp /rtc tới máy chủ media và /ws tới máy chủ nét vẽ.
  5. DNS và chứng chỉ — kiểm từng tên miền có trỏ về máy chưa, xin chứng chỉ Let's Encrypt (webroot), cài hook gia hạn tự động. DNS chưa đúng thì dịch vụ vẫn dựng; chạy lại sau khi DNS đúng.
  6. Dựng dịch vụ — docker compose build + up -d: redis, media (hình/tiếng), egress (ghi hình), annotation-server, web-app (và keycloak nếu chọn); cài dịch vụ cập nhật o3o-cap-nhat.
  7. Kiểm tại chỗ — 7 phép ĐẠT/HỎNG kèm log khi hỏng, rồi in đường vào trang chào mừng và mã chủ trì.

3. Sau khi cài

Trang cài đặt ban đầu

Mở tên miền (hoặc IP) của máy vừa cài: hệ thống chưa cấu hình nên tự chuyển tới trang cài đặt ban đầu và hỏi khoá cài đặt mà bộ cài in ra (dòng /chao-mung?khoa=… — mở thẳng đường đó cũng được). Lỡ đóng terminal thì đọc lại trên máy chủ: sudo cat /data/config/khoa-cai-dat.txt. Toàn bộ nằm trên một trang, bốn khối, một nút Hoàn tất cài đặt ở cuối:

  1. Tổ chức & hiển thị — tên tổ chức, slogan dưới tiêu đề màn vào, ngôn ngữ, và logo: ảnh PNG/JPEG (vuông, ngang, nền tối) hoặc chữ (tên tổ chức viết đậm, không cần ảnh).
  2. Tài khoản quản trị — quan trọng nhất. Chọn: tài khoản nội bộ (tên đăng nhập + mật khẩu, dành cho tổ chức không có SSO — thêm người dùng khác sau ở /admin › Người dùng) hoặc SSO Keycloak/OIDC (issuer, client id, client secret, email quản trị viên). Để sau là sau khi hoàn tất không ai vào được /admin.
  3. Máy chủ media — thường để trống. Chỉ điền khi muốn đặt máy chủ media ở máy khác hoặc thêm máy chia tải.
  4. Giấy phép — chọn một: xin bản cơ bản miễn phí (điền họ tên, số điện thoại, email; máy chủ tự gọi về máy chủ cấp phép và nhận giấy phép ngay: 10 phòng, 10 người tham gia mỗi phòng), tải tệp .lic đã được cấp, hoặc để sau.
  5. Hoàn tất cài đặt — lưu lần lượt bốn khối (có tiến trình từng khối), ghi cờ đã cài rồi mới xoá khoá một lần; khối nào lỗi thì dừng ở đó, sửa rồi bấm lại. Vừa tạo tài khoản nội bộ thì tự đăng nhập và vào /admin.
Nếu dùng SSO: khai báo ứng dụng trên KeycloakTrang hiện sẵn Redirect URI phải thêm vào client (https://meet.congty.vn/api/auth/callback). Cài kèm --keycloak thì tài khoản quản trị Keycloak nằm trong .env (KC_ADMIN_USER / KC_ADMIN_PASSWORD).

Quản trị & đường vào

Đường dẫnDành cho
https://meet.congty.vn/Trang vào phòng cho mọi người
/adminQuản trị viên (tài khoản nội bộ hoặc SSO): cuộc họp đã diễn ra, danh sách người tham dự, bản ghi hình, người dùng nội bộ, logo, công tắc tính năng, SSO, API máy chủ media, máy chủ media, giấy phép, phiên bản & cập nhật
/dang-nhapĐăng nhập tài khoản nội bộ (người chủ trì cũng đăng nhập được ngay trên trang vào)
/sotay/Sổ tay vận hành cho người chủ trì
/tai-appTải app Windows cho người chủ trì (vẽ lên mọi phần mềm, bảng nổi, tự cập nhật)

Mã chủ trì dùng chung (in ra cuối bộ cài, lưu ở TEACHER_CODE trong .env) là phương án khi chưa có tài khoản: ai có mã này mở được phòng với vai chủ trì. Đã có tài khoản nội bộ hoặc SSO thì nên tắt công tắc này ở /admin › Hệ thống — mã dùng chung không cho biết ai đã làm gì.

4. Giấy phép

MORA Meet chạy được ngay không cần giấy phép ở mức tối đa 2 phòng mở cùng lúc. Giấy phép nâng hạn mức số phòng cùng lúc và số người tham gia mỗi phòng, gắn với tên miền và thời hạn; hết hạn có 30 ngày ân hạn rồi mới về mức 2 phòng. Phòng đang mở không bao giờ bị cắt — giấy phép chỉ chặn mở thêm phòng quá hạn mức, và phòng chờ không duyệt thêm người khi phòng đã đủ.

GóiPhòng cùng lúcNgười tham gia mỗi phòngCách nhận
Không giấy phép2không giới hạnSẵn sau khi cài
Cơ bản miễn phí1010Điền họ tên, số điện thoại, email ở mục 4 trang cài đặt (hoặc /admin › Giấy phép), máy chủ tự gọi về máy chủ cấp phép và nhận ngay. Một bản mỗi tên miền.
Trả phítheo hợp đồngtheo hợp đồngMORA gửi tệp .lic, bạn tải lên

5. Cập nhật

Vào /admin › Hệ thống, khối Phiên bản & cập nhật: bấm Kiểm bản mới để so với kho, rồi Cập nhật ngay. Việc cập nhật do dịch vụ o3o-cap-nhat trên máy chủ thực hiện (trang web không có quyền chạy docker — cố ý, để ai chiếm được web cũng không chiếm được máy). Mất 1–3 phút; web-app dựng lại nên người đang trong phòng bị ngắt khoảng 10 giây rồi tự nối lại — trang admin hỏi lại và cho biết đang có mấy phòng mở.

Dịch vụ tự kiểm bản mới mỗi ngày. Nhật ký cập nhật hiện ngay dưới nút; lần cập nhật lỗi thì nút đổi thành Thử cập nhật lại.

Máy cài từ --nguon chưa nối kho nên nút báo "chưa nối kho từ xa". Nối một lần trên máy chủ (bí mật và dữ liệu nằm ngoài git, không mất):

sudo o3o-cap-nhat noi-kho https://gitlab.apps.vn/khahuyvu/o3o-meet.git

Chạy tay khi cần: sudo o3o-cap-nhat kiem · sudo o3o-cap-nhat cap-nhat · nhật ký ở /data/config/cap-nhat.log.

6. Đổi tên miền · cài lại

Cài thử bằng tên tạm rồi đổi sang tên thật, hay chuyển tên miền: trỏ DNS mới về máy, rồi chạy lại bộ cài với --domain mới. Bí mật giữ nguyên; tên miền trong cấu hình, chứng chỉ, bản dựng web được làm lại; máy chủ media tự khởi động lại với cấu hình mới. Đổi từ một tên miền sang bốn tên miền (thêm --tach-ten-mien) cũng làm y như vậy.

curl -fsSL https://install.o3o.vn/meet/cai-o3o-meet.sh \
  | sudo bash -s -- --domain meet-moi.congty.vn --email it@congty.vn

7. Sao lưu · gỡ cài

Sao lưu hai chỗ là đủ
  • /opt/o3o-meet/cai-dat/.env — toàn bộ bí mật của hệ thống. Ai cầm được tệp này là chiếm được cả hệ thống: cất nơi an toàn, không gửi qua chat/email.
  • /data/ — cấu hình đã điền (config/), danh sách tham dự, phòng, bản ghi hình (recordings/ — hình ảnh và tiếng nói của người tham dự: không để công khai).
Mã nguồn trong /opt/o3o-meet kéo lại được từ kho, không cần sao lưu.
Gỡ cài (xoá hết dữ liệu)
cd /opt/o3o-meet/cai-dat
sudo docker compose --env-file .env down -v
sudo systemctl disable --now o3o-cap-nhat
sudo rm -rf /opt/o3o-meet /data /usr/local/bin/o3o-cap-nhat \
  /etc/systemd/system/o3o-cap-nhat.service \
  /etc/nginx/sites-enabled/o3o-* /etc/nginx/sites-available/o3o-*
sudo nginx -t && sudo systemctl reload nginx
Lệnh này xoá cả bản ghi hình và bí mật — sao lưu trước nếu còn cần.

8. Khắc phục sự cố

Ba lệnh xem tình trạng trên máy chủ:

cd /opt/o3o-meet/cai-dat
sudo docker compose --env-file .env ps
sudo docker compose --env-file .env logs --tail 50 media egress web-app
sudo systemctl status o3o-cap-nhat --no-pager
Hiện tượngNguyên nhân thường gặpCách sửa
Bước 5 báo ✗ meet.congty.vn → (chưa có), cuối cùng "Chưa có chứng chỉ"DNS chưa trỏ hoặc chưa lan; Cloudflare đang bật proxySửa DNS (DNS only), chờ vài phút, chạy lại đúng lệnh cài. Khoá chào mừng giữ nguyên.
Vào phòng được nhưng không ai nghe/thấy aiTường lửa nhà cung cấp chưa mở UDP 50000–60000 (hoặc 7881/tcp, 3478/udp)Mở cổng ở security group / firewall của VPS. Không cần cài lại.
Phép egress ghi được /data — HỎNG, không ghi hình đượcContainer ghi hình không đọc được cấu hình hoặc không ghi được /data/recordingsBộ cài in 4 dòng log egress ngay dưới phép hỏng. Chạy lại bộ cài (đặt lại quyền). Kiểm: ls -ld /data/recordings phải là drwxrwsr-x root:root.
Bộ cài dừng ở bước 1 với "Could not get lock"Ubuntu vừa khởi động đang tự cập nhật (unattended-upgrades)Bộ cài đã chờ tối đa 5 phút; vẫn hỏng thì chờ thêm rồi chạy lại.
Bộ cài in "DỪNG ở dòng N: …"Một lệnh trong bộ cài hỏng (mạng đứt, đĩa đầy, kho không truy cập được…)Đọc lệnh in kèm, sửa nguyên nhân, chạy lại. Kho riêng cần --nhanh <token>.
/admin báo chưa được mở / không có quyềnBỏ qua bước Tài khoản quản trị ở trang cài đặt ban đầu, hoặc SSO chưa đúng clientSửa ADMIN_EMAILS trong .env (cách nhau bằng dấu phẩy) rồi docker compose --env-file .env up -d web-app; kiểm Redirect URI trên Keycloak. Quên mật khẩu tài khoản nội bộ duy nhất: chạy lại bộ cài để sinh khoá cài đặt mới rồi vào trang cài đặt tạo lại (tài khoản cũ cùng tên được đặt lại mật khẩu).
Mất khoá cài đặtĐóng terminal trước khi chépsudo cat /data/config/khoa-cai-dat.txt. Tệp không còn = đã hoàn tất cài đặt ban đầu, vào /admin.
Giấy phép báo « Chưa kích hoạt » mãiMáy chủ không ra được internet tới máy chủ cấp phép (cổng 443)Hệ thống vẫn chạy đủ hạn mức. Mở đường ra 443 rồi bấm « Kích hoạt / báo về ngay » ở /admin › Giấy phép.
Nút Cập nhật báo "chưa nối kho từ xa"Máy cài từ --nguonsudo o3o-cap-nhat noi-kho <url kho> (xem mục 5).
HTTPS chạy nhưng chứng chỉ sắp hết hạn không tự gia hạnCổng 80 bị chặn sau khi càiMở lại cổng 80; sudo certbot renew --dry-run để kiểm.

9. Thêm máy chủ media (đặt gần người dùng, chia tải)

Máy chính đã có sẵn máy chủ hình/tiếng. Khi người dùng ở xa máy chính (ví dụ máy chính ở Singapore, người tham gia ở Việt Nam) hay muốn tách tải, cài thêm máy chủ media riêng — cũng chỉ một dòng lệnh, không cần kéo mã nguồn. Máy media chạy máy chủ media + Redis riêng, dùng cùng khoá API với máy chính nên phòng do máy chính tạo vào được, sự kiện (điểm danh, ghi hình) vẫn về máy chính.

  1. Chuẩn bị máy media: Ubuntu 22.04/24.04 sạch, IP công khai, DNS A media.congty.vn → IP máy media, mở cổng như máy chính (22,80,443,7881/tcp · 5349/tcp · 3478/udp · 50000–60000/udp).
  2. Lấy mã ghép nối trên máy chính (mã chứa khoá API — giữ kín, chỉ dán vào lệnh cài):
    sudo o3o-ma-ghep
  3. Cài trên máy media (thay tên miền và dán mã vừa lấy):
    curl -fsSL https://install.o3o.vn/meet/cai-o3o-media.sh \
      | sudo bash -s -- --domain media.congty.vn --ghep <mã ghép nối> --email it@congty.vn
    Bộ cài: phần mềm nền → ghép nối → cấu hình máy chủ media/TURN → nginx → chứng chỉ → dựng → 5 phép kiểm. Máy sau NAT thêm --sau-nat --ip <IP công khai>. Chạy lại an toàn (lần sau không cần --ghep).
  4. Khai vào máy chính: /admin › Hệ thống › Máy chủ media › Thêm với ba ô bộ cài in ra — Tên, wss://media.congty.vn, https://media.congty.vn. Đánh dấu Mặc định để mọi phòng mới mở trên máy đó (phòng đang mở không bị chuyển). Ở trang cài đặt ban đầu, mục 3 khai được nhiều máy cùng lúc.
Máy media có GHI HÌNHThêm --ghi-hinh vào lệnh cài (tuỳ chọn --thu-muc-ghi /đường/dẫn nếu bản ghi để trên NAS đã mount) là máy đó có bộ ghi hình và kho bản ghi. Bộ cài in ra dòng REC_REMOTE_BASE=https://media.congty.vn/ghi-noibo/<mã> — dán vào .env máy chính rồi khởi động lại web-app, và bật cờ « có ghi hình » cho máy đó ở /admin › Hệ thống › Máy chủ media. Mã 32 ký tự thay mật khẩu; đừng dán nơi công khai. Phiên bản ảnh được ghim cứng giống nhau ở máy chính và mọi máy media (media v1.13.5, egress v1.14.0).
Cách chia tảiMỗi máy media giữ phòng của mình. Ở /admin › Hệ thống › Chia tải chọn Tự động (phòng mới mở ở máy còn chỗ và nhẹ tải nhất, khuyến nghị) hoặc Luôn máy mặc định. Mỗi máy đặt tối đa phòng / tối đa người cùng lúc; đầy thì mặc định vẫn nhận nhưng cảnh báo (giới hạn mềm), tick Chặn cứng thì từ chối mở phòng mới và báo rõ cho người chủ trì. Bảng máy hiện tải thật đo lại mỗi 15 giây. Đổi khoá API trên máy chính thì phải chạy lại bộ cài media với mã ghép nối mới. Bản script: cai-o3o-media.sh.

Nên đặt giới hạn bao nhiêu?

Nghẽn đầu tiên là băng thông ra của máy media, không phải CPU: mỗi người trong phòng 10 người bật camera nhận 9 luồng hình, khoảng 2,7–3 Mbps. Ước lượng an toàn (đo thật rồi nới dần):

Máy mediaTối đa người cùng lúcTối đa phòng 10 người
Cổng 1 Gbps · 4 vCPU30030
Cổng 1 Gbps · 2 vCPU20020
Cổng 10 Gbps · 16 vCPU1.600160

Quy tắc: lấy số nhỏ hơn giữa Gbps × 300 và vCPU × 100. Nút Điền theo khuyến nghị trong admin tính sẵn theo hai số bạn nhập. Vài nghìn người cùng lúc = vài máy media 1 Gbps (hoặc một, hai máy 10 Gbps) ở chế độ Tự động; ghi hình nhiều phòng cùng lúc cần thêm CPU riêng cho máy có ghi hình.

10. Kiểm tra hệ thống · đo tải · AI tự sửa

Vào /admin › Kiểm tra trước mỗi buổi quan trọng. Trang này chạy vài chục phép kiểm song song (tự chạy lại mỗi 5 phút) và kết luận một dòng: Sẵn sàng · Có điểm cần chú ý · Có lỗi cần xử lý trước giờ. Mỗi dòng lỗi đều kèm việc cần làm — không phải đoán.

NhómKiểm gì
Máy chủCPU (tải trung bình / số nhân), RAM, đĩa của thư mục dữ liệu và bản ghi, thời gian chạy, quyền ghi, giờ máy so với máy chủ ngoài (lệch giờ làm chứng chỉ và mã đăng nhập hỏng)
Dịch vụRedis (PING), máy chủ nét vẽ (/health), đăng nhập SSO (discovery), từng container qua dịch vụ tác vụ (chạy / khoẻ / khởi động lại liên tục)
Máy chủ mediaAPI từng máy (độ trễ, số phòng, số người) và sức chứa so với giới hạn admin đặt hoặc khuyến nghị 1 Gbps (≥ 80 % là cần chú ý, đầy là lỗi)
Tên miền, chứng chỉ, cổngDNS của mọi tên miền đang dùng, bắt tay HTTPS 443 và số ngày còn lại của chứng chỉ (< 14 ngày cảnh báo), TURN/TLS 5349 (kể cả trường hợp máy media còn giữ chứng chỉ cũ), STUN UDP 3478, TCP 7881, cổng 80 chuyển hướng
Cấu hình, giấy phép, cập nhậtTệp cấu hình, có quản trị viên, các khoá bí mật đã đặt (chỉ báo có/không), giấy phép còn bao lâu và lần liên lạc trung tâm gần nhất, có bản mới trên kho không, ghi hình có máy egress không

Độ chịu tải thời gian thật: số người / phòng đang có, CPU và RAM máy chủ cập nhật mỗi 15 giây, từng máy media so với mốc, biểu đồ 1 giờ hoặc 24 giờ (đỉnh mỗi phút), đỉnh hôm nay và còn chỗ cho ≈ bao nhiêu người. Mbps hình/tiếng chỉ hiện khi máy media mở cổng số liệu (tuỳ chọn, xem dưới).

Kiểm từ máy này đo thứ máy chủ không tự đo được: độ trễ tới máy chủ, tải xuống / tải lên từ mạng bạn đang ngồi, và nối thử tới từng máy media để biết hình/tiếng đi UDP trực tiếp (tốt nhất), TCP hay phải vòng TURN (mạng chặn UDP — chạy được nhưng nặng máy chủ). Hãy chạy từ đúng mạng mà người chủ trì sẽ dùng.

Tác vụ máy chủ

Web-app không có quyền docker (cố ý — ai chiếm được web-app là chiếm được máy). Mọi việc đụng máy chủ đi qua dịch vụ o3o-cap-nhat (bộ cài đặt sẵn): trang admin ghi một tệp yêu cầu, dịch vụ chỉ chạy đúng danh sách trắng dưới đây rồi ghi kết quả. Không có việc nào xoá dữ liệu hay bản ghi.

ViệcLàm gìRủi ro
Khởi động lại một dịch vụdocker compose restart <dịch vụ>cao với media / web-app / redis (rớt người đang họp vài giây); trung bình với annotation-server, egress, keycloak
Nạp lại nginxnginx -t rồi systemctl reload nginxthấp
Gia hạn chứng chỉ HTTPScertbot renew + nạp lại nginxthấp (máy media nạp chứng chỉ mới khi khởi động lại)
Đồng bộ giờ máy chủbật NTP, ép chỉnh giờthấp
Dọn ảnh Docker cũ & nhật kýdocker image prune -f, journalctl --vacuum-time=7dthấp
Mở một cổng (ufw)chỉ 80/tcp · 443/tcp · 7881/tcp · 5349/tcp · 3478/udp · 50000:60000/udptrung bình

Mỗi lần bấm đều hỏi lại kèm mức rủi ro. Kết quả 50 lần gần nhất nằm trong bảng « Việc đã chạy » và tệp /data/config/tac-vu.log.

AI tự sửa

  1. Tạo khoá API tại console.anthropic.com (tiền tính vào tài khoản của bạn — mỗi lần hỏi ≈ vài nghìn token). Dán vào /admin › Kiểm tra › AI tự sửa, chọn model, bấm Thử khoá rồi Lưu. Khoá nằm trong tệp cấu hình quyền 600 trên máy chủ, không bao giờ trả về trình duyệt.
  2. Chế độ Chỉ gợi ý: bấm Hỏi AI về tình trạng hiện tại (có thể hỏi thêm câu riêng, ví dụ « 14 giờ có 12 cuộc họp cùng lúc, máy chịu được không? »). AI đọc báo cáo kiểm tra + tải + container (đã lọc bí mật), trả chẩn đoán tiếng Việt và đề xuất — chỉ trong danh sách trắng ở trên. Bạn bấm « Chạy việc này » từng cái.
  3. Chế độ Tự sửa việc an toàn: khi kiểm định kỳ (5 phút) thấy lỗi, hệ thống tự hỏi AI và tự chạy một việc rủi ro thấp (nạp nginx, gia hạn chứng chỉ, đồng bộ giờ, dọn Docker); tối đa 6 lần / giờ. Việc rủi ro trung bình / cao vẫn chờ người duyệt. Mọi lần đều có trong « Nhật ký AI ».
Riêng tưChỉ gửi cho AI: tên và kết quả các phép kiểm, số người / phòng, tên container, đuôi kết quả tác vụ. Không gửi khoá, mật khẩu, mã giấy phép, tên người dùng hay nội dung buổi họp; chuỗi trông như khoá bị che thêm một lớp trước khi gửi.

Máy không cài bằng bộ cài (cập nhật mã theo quy trình riêng)

Máy cài bằng cai-o3o-meet.sh đã có dịch vụ o3o-cap-nhat làm luôn việc tác vụ. Máy khác chỉ cần cài dịch vụ tác vụ (không git, không tự cập nhật):

sudo install -m 755 cai-dat/cap-nhat.sh /usr/local/bin/o3o-cap-nhat
sudo cp cai-dat/mau/o3o-tac-vu.service /etc/systemd/system/     # sửa 3 dòng Environment: thư mục compose, .env, CONFIG_DIR
sudo systemctl daemon-reload && sudo systemctl enable --now o3o-tac-vu.service
cat /data/config/tac-vu-nhip        # số giây Unix, đổi mỗi 5 giây = dịch vụ sống

Tuỳ chọn — Mbps hình/tiếng: máy media mở trang số liệu (khoá prometheus_port: 6789 trong cấu hình máy chủ media, khởi động lại dịch vụ media ngoài giờ) thì tab Kiểm tra đọc byte vào/ra và hiện Mbps. Cổng 6789 chạy trên mạng máy chủ — phải chặn từ Internet bằng tường lửa (chỉ cho 127.0.0.1 / mạng Docker), vì trang số liệu lộ số phòng, số người.

Tài liệu thêm