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.vnThay 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ục | Yêu cầu | Ghi chú |
|---|---|---|
| Hệ điều hành | Ubuntu Server 22.04 LTS hoặc 24.04 LTS, bản 64-bit, mới cài sạch | Má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ền | Tài khoản root hoặc có sudo | Bộ cài từ chối chạy khi không phải root. |
| CPU · RAM · đĩa | Tố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ạng | IP công khai tĩnh gắn thẳng vào máy | Má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ài | Má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ổng | Giao thức | Dùng cho |
|---|---|---|
| 22 | TCP | SSH quản trị |
| 80, 443 | TCP | Web, API, WebSocket nét vẽ (/ws), tín hiệu hình/tiếng (/rtc), xin chứng chỉ |
| 7881 | TCP | Media WebRTC qua TCP (khi UDP bị chặn phía người dùng) |
| 5349 | TCP | TURN/TLS — cho người dùng sau mạng công ty chặt |
| 3478 | UDP | TURN/UDP |
| 50000–60000 | UDP | Media WebRTC (hình và tiếng) |
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.
Kiểm DNS đã lan chưa (kết quả phải là IP máy):
dig +short A meet.congty.vn @1.1.1.12. 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.vnCài xong, màn hình in ra ba thứ cần giữ lại:
- Đường vào trang chào mừng kèm khoá một lần:
https://meet.congty.vn/chao-mung?khoa=… - Mã chủ trì dùng chung (8 chữ số) — cách mở cuộc họp khi chưa nối SSO
- Kết quả 7 phép kiểm tại chỗ (web, nét vẽ, máy chủ media, ghi hình, bộ cập nhật, HTTPS) — mỗi dòng ĐẠT hoặc HỎNG kèm lý do
Tuỳ chọn dòng lệnh
| Cờ | Ý nghĩa | |
|---|---|---|
--domain <tên miền> | bắt buộc | Tên miền chính đã trỏ về máy. |
--email <email> | khuyên dùng | Email nhận cảnh báo chứng chỉ Let's Encrypt sắp hết hạn. |
--keycloak | tuỳ chọn | Chư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-mien | tuỳ chọn | Ba 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ọn | Máy sau NAT/router: không tự dò IP, ghim IP công khai cho máy chủ media. |
--repo <url git> | tuỳ chọn | Kho mã khác kho mặc định (bản nội bộ, bản fork). |
--nhanh <token> | tuỳ chọn | Kho 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ọn | Cà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)
- 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).
- Mã nguồn — kéo kho vào
/opt/o3o-meet(hoặc chép từ--nguon). - Sinh cấu hình — tạo
/opt/o3o-meet/cai-dat/.envchứ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--domainthì chỉ cập nhật tên miền. - nginx — site riêng cho tên miền, chuyển tiếp
/rtctới máy chủ media và/wstới máy chủ nét vẽ. - 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.
- 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ậto3o-cap-nhat. - 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:
- 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).
- 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. - 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.
- 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. - 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.
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ẫn | Dành cho |
|---|---|
https://meet.congty.vn/ | Trang vào phòng cho mọi người |
/admin | Quả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-app | Tả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ói | Phòng cùng lúc | Người tham gia mỗi phòng | Cách nhận |
|---|---|---|---|
| Không giấy phép | 2 | không giới hạn | Sẵn sau khi cài |
| Cơ bản miễn phí | 10 | 10 | Đ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 đồng | theo hợp đồng | MORA gửi tệp .lic, bạn tải lên |
- Với gói trả phí, MORA gửi bạn một tệp
.lic. Tải tệp lên ở mục 4 trang cài đặt ban đầu, hoặc bất cứ lúc nào tại/admin › Giấy phép(dán khoá chữ cũng được). - Khoá được kiểm bằng chữ ký số ngay trên máy chủ của bạn, gắn với tên miền đã cài. Máy chủ báo về máy chủ cấp phép mỗi ngày đúng ba thứ: mã giấy phép, tên miền và một dấu máy (băm một chiều, không lộ gì) — không có dữ liệu người dùng. Nhờ đó tab Giấy phép hiện Chưa kích hoạt / Đã kích hoạt tại IP nào, lúc nào / ● trực tuyến, và máy chủ cấp phép phát hiện khoá bị sao chép sang máy khác. Không liên lạc được với máy chủ cấp phép thì hệ thống vẫn chạy bình thường.
- Xin hoặc gia hạn giấy phép: liên hệ MORA qua hotline 1800 4985 hoặc www.mora.vn, cung cấp tên miền đang cài và số phòng cần dùng cùng lúc.
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.gitChạ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.vn7. Sao lưu · gỡ cài
/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).
/opt/o3o-meet kéo lại được từ kho, không cần sao lư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 nginx8. 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ượng | Nguyên nhân thường gặp | Cá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 proxy | Sử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 ai | Tườ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 được | Container ghi hình không đọc được cấu hình hoặc không ghi được /data/recordings | Bộ 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ền | Bỏ qua bước Tài khoản quản trị ở trang cài đặt ban đầu, hoặc SSO chưa đúng client | Sử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ép | sudo 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ãi | Má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ừ --nguon | sudo 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ạn | Cổng 80 bị chặn sau khi cài | Mở 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.
- 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). - 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 - Cài trên máy media (thay tên miền và dán mã vừa lấy):
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
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--sau-nat --ip <IP công khai>. Chạy lại an toàn (lần sau không cần--ghep). - Khai vào máy chính:
/admin › Hệ thống › Máy chủ media › Thêmvớ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.
--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)./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 media | Tối đa người cùng lúc | Tối đa phòng 10 người |
|---|---|---|
| Cổng 1 Gbps · 4 vCPU | 300 | 30 |
| Cổng 1 Gbps · 2 vCPU | 200 | 20 |
| Cổng 10 Gbps · 16 vCPU | 1.600 | 160 |
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óm | Kiể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ủ media | API 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ổng | DNS 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ật | Tệ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ệc | Là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 nginx | nginx -t rồi systemctl reload nginx | thấp |
| Gia hạn chứng chỉ HTTPS | certbot renew + nạp lại nginx | thấ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=7d | thấp |
| Mở một cổng (ufw) | chỉ 80/tcp · 443/tcp · 7881/tcp · 5349/tcp · 3478/udp · 50000:60000/udp | trung 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
- 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. - 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.
- 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 ».
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ốngTuỳ 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
- Bản script bộ cài (đọc trước khi chạy, nếu muốn): cai-o3o-meet.sh
- Kho mã nguồn: gitlab.apps.vn/khahuyvu/o3o-meet — tài liệu vận hành chi tiết (SERVER.md) và giấy phép sử dụng (LICENSE.md) nằm trong kho.
- Sổ tay cho người chủ trì sau khi cài:
https://<tên miền của bạn>/sotay/ - Dùng thử không cần cài: meet.mora.vn