| Username | Role | Camera Access | Page Tabs | Status | Actions |
|---|
| Group Name | Cameras | Actions |
|---|
Map Settings
Register at maps.vietmap.vn/console. Used for map display and traffic overlay. Restrict by domain for security. Khác với khóa Live Traffic bên dưới, khóa này được gửi cho trình duyệt của mọi người dùng (để tải tile bản đồ) — an toàn nhờ VietMap giới hạn theo domain, không phải nhờ giữ bí mật. Để trống và lưu Settings sẽ giữ nguyên khóa đã có; bấm "Xoá" để gỡ khóa đang lưu.
Khóa riêng cho API "Live Traffic Tile" của VietMap — endpoint này được VietMap giới hạn chỉ cho phép gọi từ địa chỉ IP công cộng của máy chủ này (đã đăng ký trước với VietMap), nên trình duyệt không bao giờ gọi trực tiếp — mọi yêu cầu đều đi qua server. Khóa chỉ lưu ở server, không bao giờ gửi về trình duyệt kể cả cho admin. Để trống và lưu Settings sẽ giữ nguyên khóa đã có; bấm "Xoá" để gỡ khóa đang lưu.
Thời gian giữa các lần lấy snapshot từ camera. Tăng lên (ví dụ 15–30s) để giảm tải server và băng thông camera khi có nhiều camera.
Số lượng kết nối snapshot tối đa chạy song song. Tăng để lấy ảnh nhanh hơn khi mạng tốt, giảm khi băng thông hạn chế.
Mặc định TẮT. Khi bật: mỗi camera loại RTSP chỉ dial 1 lần rồi giữ kết nối sống, tránh phải kết nối lại mỗi lần lấy snapshot (giảm tải CPU/số kết nối). Đánh đổi: kết nối giữ sống sẽ liên tục nhận toàn bộ luồng video của camera đó (không chỉ lúc lấy snapshot) — tốn băng thông liên tục, không phải chỉ lúc cần. Chỉ nên bật nếu CPU/số kết nối là vấn đề chính và camera có dư băng thông. Xem chi phí thực tế (số camera đang giữ, RAM cache, băng thông) tại trang Giám sát.
Ảnh snapshot lưu trên đĩa cũ hơn ngưỡng này sẽ không được hiển thị — thay vào đó hệ thống hiện ảnh báo "CAMERA OFFLINE" kèm dấu cảnh báo, để tránh trường hợp camera mất kết nối lâu nhưng vẫn hiện ảnh cũ như đang chạy bình thường. Để 0 (tự tính) trừ khi bạn thực sự cần một ngưỡng cố định khác khoảng lấy snapshot đang cấu hình.
Bán kính vòng tròn tìm kiếm camera khi click lên bản đồ (tab Map). Áp dụng cho tất cả user, session.
Khoảng cách tối đa từ camera tới tuyến để tính là "dọc tuyến" trong công cụ 🛣 Theo tuyến (tab Map). Áp dụng cho tất cả user, session.
Dùng chung, thống nhất cho cả lớp "🚨 Traffic Event" (sự cố nhập thủ công, tọa độ + thời điểm xảy ra) và lớp "🤖 AI Event" (tin do hệ thống AI ngoài như OMNIA đẩy vào, tính theo thời điểm nhận tin) trên bản đồ (tab Map): chỉ các sự cố/tin trong khoảng thời gian này tính từ hiện tại mới hiển thị dạng bubble — cũ hơn tự động biến mất khỏi lớp tương ứng. Áp dụng cho tất cả user, session.
Ảnh đính kèm sự cố AI (crop/snapshot nhận từ OMNIA) bị xoá khỏi ổ đĩa sau khoảng thời gian này — chỉ ảnh bị xoá, dữ liệu sự cố (thời gian, vị trí, loại...) vẫn được giữ lại.
Dữ liệu lưu lượng Hawkwise (trafficflow_data/trafficflow.db) cũ hơn khoảng thời gian này bị xoá định kỳ (quét mỗi 6 giờ). Bật "Không giới hạn" để giữ vĩnh viễn, không tự xoá — phù hợp nếu bạn muốn thu thập/phân tích dữ liệu lâu dài.
Áp dụng cho user bị giới hạn thời gian xem (không tick "Không giới hạn thời gian xem" và không đặt giá trị riêng ở form user). Hết thời gian, video dừng và người dùng phải bấm để xem tiếp. Không áp dụng cho link RTSP/RTSPS.
Khi bật, mọi lượt đăng nhập thành công ngoài khung giờ này sẽ tạo cảnh báo bảo mật (xem tab Log → Cảnh báo bảo mật). Ngoài ra hệ thống luôn tự động cảnh báo khi: tài khoản bị khóa do đăng nhập sai nhiều lần, đăng nhập từ IP mới, hoặc đăng nhập từ nhiều IP khác nhau trong thời gian ngắn.
Trạng thái ban đầu của nút 📊 Trạm đo (tab Map) cho người dùng chưa từng tự bấm nút này trên trình duyệt của họ — hữu ích để giảm rối bản đồ trên điện thoại. Ai đã tự bật/tắt thì trình duyệt đó nhớ riêng lựa chọn của họ, không bị mặc định này ghi đè.
RP ID phải khớp chính xác tên miền hiển thị trên thanh địa chỉ trình duyệt (không kèm https://,
không kèm cổng), và Origin phải là https:// + đúng tên miền đó. Sai một trong hai sẽ khiến mọi
thao tác đăng ký/xác minh thiết bị thất bại. Chọn user nào cần xác minh thiết bị cho loại dữ liệu nào ở form
sửa user (mục "Yêu cầu xác minh thiết bị" bên dưới) — bật ở đây chỉ là bật khả năng của cả hệ thống.
Quản lý thiết bị đã đăng ký/chờ duyệt ở tab Thiết bị.
🎨 Màu khung nhận diện AI Analyze
Màu khung đánh dấu (và nhãn chữ) cho từng loại đối tượng khi dùng tính năng 🔍 AI ANALYZE ở khung xem camera. Áp dụng cho tất cả user, session.
🔒 RTSP Server Security
Cổng RTSP (mặc định 8554) yêu cầu xác thực cho mọi kết nối từ bên ngoài (không phải localhost) — quan trọng nếu bạn NAT/forward cổng này ra WAN. Kết nối nội bộ (127.0.0.1) từ các worker cùng máy vẫn không cần xác thực.
Dùng tài khoản user (khuyến nghị): mỗi user ở tab Users có thể xem RTSP bằng chính username/password đăng nhập Web UI của họ — quyền xem tuyến camera (mục "Streams" khi sửa user) áp dụng luôn cho RTSP, viewer chỉ pull được các stream được gán, admin xem được tất cả.
Tài khoản dịch vụ (tuỳ chọn): dùng cho worker/script không gắn với 1 người cụ thể — có toàn quyền mọi stream. Xem/đổi bên dưới.
Sau khi đổi, cập nhật lại URL RTSP (vd: rtsp://USER:PASS@host:8554/stream) trong mọi
worker từ xa (RTSPBase) hoặc ứng dụng xem ngoài đang dùng tài khoản dịch vụ này.
🌐 Bật RTSPS (mã hoá TLS) để mở ra WAN
RTSP thường (port 8554) gửi username/password gần như dạng plaintext (Base64) — chấp nhận được trong LAN, nhưng không nên NAT cổng này thẳng ra Internet. go2rtc hỗ trợ RTSPS (RTSP qua TLS) như một cổng lắng nghe độc lập, mã hoá toàn bộ kết nối — hãy NAT/forward cổng RTSPS ra WAN thay vì cổng RTSP thường.
✓ Cách 1 — tự động, khuyến nghị (nếu đã cấu hình api.acme_domain cho HTTPS Web UI):
RTSP sẽ dùng chung luôn chứng chỉ Let's Encrypt mà go2rtc tự xin và tự gia hạn cho Web UI —
không cần certbot, không cần đường dẫn file chứng chỉ nào cả. Chỉ cần thêm một dòng
vào mục rtsp: trong go2rtc.yaml:
api: listen: ":1984" tls_listen: ":443" acme_domain: "dieuhanh.utmc.io.vn" acme_email: "you@example.com" rtsp: listen: ":8554" # giữ lại cho LAN (tuỳ chọn) tls_listen: ":8556" # ← chỉ cần thêm dòng này — RTSPS tự dùng chứng chỉ ACME ở trên
Khởi động lại go2rtc (chỉ cần chạy file thực thi như bình thường) — cả HTTPS
(443) lẫn RTSPS (8556) đều tự có chứng chỉ hợp lệ, tự gia hạn định kỳ, không cần thao tác gì thêm.
Sau đó NAT/forward cả 2 cổng 443 và 8556 ra WAN (giữ 80 mở tạm thời/khi gia hạn cho thử thách ACME).
URL dùng bên ngoài: rtsps://USER:PASS@dieuhanh.utmc.io.vn:8556/stream.
Cách 2 — thủ công (nếu không dùng ACME cho Web UI): tự lấy chứng chỉ bằng certbot và trỏ trực tiếp file cert/key:
sudo certbot certonly --standalone -d dieuhanh.utmc.io.vn
rtsp: listen: ":8554" tls_listen: ":8556" tls_cert: "/etc/letsencrypt/live/dieuhanh.utmc.io.vn/fullchain.pem" tls_key: "/etc/letsencrypt/live/dieuhanh.utmc.io.vn/privkey.pem"
Cách này cần tự renew chứng chỉ mỗi ~90 ngày (crontab
certbot renew + restart go2rtc, hoặc --deploy-hook). Cách 1 không có
nhược điểm này vì go2rtc tự gia hạn.
🌐 Reverse Proxy — đã tách thành chương trình riêng
Việc dùng chung HTTPS (cổng 443/80, chứng chỉ Let's Encrypt) cho go2rtc và các trang web khác
trên máy chủ này nay do chương trình https-proxy.exe đảm nhiệm — chạy độc lập, nên khi go2rtc
bận/treo/khởi động lại thì các trang web khác vẫn hoạt động bình thường.
Cấu hình domain, cổng, chứng chỉ tại trang quản trị của https-proxy
(mặc định http://127.0.0.1:8090 trên máy chủ). go2rtc chỉ cần lắng nghe HTTP nội bộ
(ví dụ api.listen: ":1984") và bỏ acme_domain khỏi go2rtc.yaml.
🧩 Chế độ chạy dịch vụ (Modules)
Bỏ tick dịch vụ nào để go2rtc không khởi động dịch vụ đó ở lần chạy tiếp theo — hữu ích khi chỉ cần chạy một phần hệ thống. Cần khởi động lại go2rtc để áp dụng.
Loại thiết bị
| Tên loại | Thao tác |
|---|
Danh sách thiết bị
| Tên | IP | Loại | Thao tác |
|---|
Camera Types
Define snapshot URL patterns per vendor/model family| Name | Snapshot Path | Port | HTTPS | ONVIF | RTSP | PTZ | Cameras | Actions |
|---|
Stream Assignments
✓ Saved| Stream | Camera Type |
|---|
Cấu hình Camera (RCP XML)
Gửi lệnh HTTP đến từng camera, ghi log thành công / thất bại
IP, username & password được lấy tự động từ link RTSP của camera trong cấu hình go2rtc.
Định dạng: IP
hoặc IP password
(password riêng ghi đè password chung)
HTTP Digest/Basic Auth. Password dùng cho những dòng IP không có password riêng.
▸ Tham số RCP XML (tự động từ preset)
URL: /rcp.xml?command&type&direction&num&payload
| STT | IP Camera | HTTP | Config | Apply | Ghi chú |
|---|
Mỗi tuyến một màu, vẽ theo đường thật (VietMap Direction) — để nhận biết tuyến nào trên bản đồ đã được cấu hình theo dõi. Di chuột vào tên tuyến ở bảng bên dưới để làm nổi bật trên bản đồ; bấm vào một tuyến trên bản đồ để sửa tuyến đó.
| # | Tên tuyến đường | Điểm đầu | Điểm cuối | Điểm giữa | Thao tác |
|---|---|---|---|---|---|
| Đang tải… | |||||
| Thời gian | Tuyến đường | Khoảng cách | Thực tế (s) | Chuẩn (s) | Trễ (s) | TTI |
|---|---|---|---|---|---|---|
| Chọn ngày và bấm "🔍 Tra cứu" để xem dữ liệu | ||||||
| Từ ngày | Đến ngày | Loại | Nhãn hiển thị | Ghi chú | Thao tác |
|---|---|---|---|---|---|
| Đang tải… | |||||
Đối soát cấu hình camera
go2rtc.yaml với camera thực sự đang chạy trên server, để phát hiện
camera bị khai báo sai cú pháp / URL (không load được) hoặc bị trùng tên (khai báo 2 lần, cái sau đè cái trước).
Muốn kiểm tra thêm camera nào hoàn toàn chưa được khai báo trong file config, dán danh sách tên camera
bạn đang quản lý vào ô bên dưới (mỗi tên một dòng) — không cần tick "Kiểm tra" lại, danh sách sẽ tự so khớp.
⚠ Camera bị khai báo trùng tên trong config
Mỗi tên dưới đây xuất hiện từ 2 lần trở lên dưới mục streams: — chỉ khai báo cuối cùng thực sự chạy, các khai báo trước đó bị ghi đè và mất camera.
❌ Có trong config nhưng chưa thực sự chạy
Đã khai báo dưới streams: nhưng server không nạp được — kiểm tra lại cú pháp YAML (thụt lề, dấu `:`) hoặc URL/nguồn stream của các camera này.
| Tên camera (trong config) |
|---|
🚫 Chưa có trong config go2rtc.yaml
Có trong danh sách bạn dán ở trên, nhưng chưa được khai báo trong file config — camera này chưa từng được thêm vào hệ thống.
| Tên camera (từ danh sách của bạn) |
|---|
🔐 Thiết bị xác minh (WebAuthn)
| User | Tên thiết bị | Trạng thái | Đăng ký lúc | Dùng lần cuối | Thao tác |
|---|
🔑 Tích hợp đẩy dữ liệu (Integration API Key)
| Tên | Đường dẫn cho phép | Trạng thái | Dùng lần cuối | Thao tác |
|---|
🧪 Test API Push
🗂 Gán icon theo loại sự cố (Category Rules)
| TypeID | SubtypeID | Nhãn | Icon | Thao tác |
|---|
👁 Loại sự cố đã nhận được (Observed Categories)
| TypeID | SubtypeID | RecordType | Mô tả mẫu | Số lần | Lần cuối | Thao tác |
|---|
🔑 Tích hợp đẩy dữ liệu (Integration API Key)
/api/trafficdata/hawkwise/v1/flow-push rồi gửi key cho đội Hawkwise cấu hình bên họ.
Bảng dưới đây chỉ hiển thị các tích hợp dùng đúng đường dẫn đẩy dữ liệu đo đếm lưu lượng nêu trên;
quản lý toàn bộ (xoay key, xem lại key...) vẫn làm chung ở tab 🤖 AI Event.
| Tên | Đường dẫn cho phép | Trạng thái | Dùng lần cuối | Thao tác |
|---|
📍 Điểm đo đã gán (Sensor Mapping)
| Tên hiển thị | source_uuid | Tọa độ | Trạng thái | Thao tác |
|---|
👁 Camera đã nhận nhưng chưa gán (Chưa mapping)
| source_uuid | Tọa độ hệ thống gửi | Số lần | Lần cuối | Thao tác |
|---|
📨 Nhật ký bản tin đã nhận (Push Log)
/api/trafficdata/hawkwise/v1/flow-push — kể cả những lần bị từ chối do thiếu/sai API key
(chỉ không có nội dung bản tin, vì hệ thống từ chối trước khi đọc phần thân request). Chọn khoảng
thời gian rồi bấm "Tra cứu" để xem — không tự hiển thị liên tục để tránh làm rối giao diện. Kết quả
nhóm theo từng nguồn (source_uuid), kèm tên điểm đo đã gán (nếu có) để biết đúng vị trí thực tế.
Đây là nhật ký tạm thời để debug, không phải log lưu trữ lâu dài.
🧪 Test API Push
general/evidence/details,
snake_case), không phải đặc tả camelCase cũ.
🖼 Icon theo loại sự cố (Thể loại)
| Thể loại | Icon | Màu nền | Thao tác |
|---|---|---|---|