fix one machine only
This commit is contained in:
+2
-63
@@ -4,18 +4,7 @@ Tài liệu này hướng dẫn triển khai trên Orange Pi (Linux). Mục tiê
|
||||
|
||||
## 0) Mô hình triển khai
|
||||
|
||||
### A) 1 thiết bị (đơn giản nhất)
|
||||
|
||||
- MediaMTX + Dashboard backend + Dashboard frontend chạy cùng máy
|
||||
|
||||
### B) 2 thiết bị (cùng LAN / cùng lớp mạng)
|
||||
|
||||
- Máy A: chạy MediaMTX + lưu recordings
|
||||
- Máy B: chạy Dashboard backend + frontend
|
||||
- Máy B sẽ gọi:
|
||||
- MediaMTX API của máy A (port 9997) để add/remove camera + bật/tắt recording
|
||||
- WebRTC/WHEP của máy A (port 8889 + UDP 8189) để xem live
|
||||
- Playback: máy B cần đọc được recordings của máy A (khuyến nghị mount NFS/SMB)
|
||||
- MediaMTX + Dashboard backend + Dashboard frontend chạy cùng máy.
|
||||
|
||||
## 1) Yêu cầu
|
||||
|
||||
@@ -42,13 +31,6 @@ recordPath: /recordings/%path/%Y-%m-%d_%H-%M-%S-%f
|
||||
recordPartDuration: 5m
|
||||
```
|
||||
|
||||
Nếu chạy mô hình 2 thiết bị, đảm bảo MediaMTX trả về đúng IP LAN để client kết nối ICE:
|
||||
|
||||
```yaml
|
||||
webrtcAdditionalHosts:
|
||||
- 192.168.88.10
|
||||
```
|
||||
|
||||
### 2.1) Nếu MediaMTX API bị 401 Unauthorized
|
||||
|
||||
401 nghĩa là request thiếu thông tin xác thực hợp lệ. Khi bật auth trong MediaMTX, bạn cần tạo user có quyền `api` và cấu hình backend dashboard gửi Basic Auth.
|
||||
@@ -88,33 +70,6 @@ Mở firewall/cổng (tuỳ hệ thống):
|
||||
- `9997/tcp` MediaMTX Control API
|
||||
- `8189/udp` ICE
|
||||
|
||||
## 2.1) Playback khi tách 2 thiết bị (mount recordings)
|
||||
|
||||
Vì MediaMTX ghi file recordings trên máy A, nên Dashboard (máy B) cần truy cập được folder này để:
|
||||
|
||||
- list file `/api/recordings`
|
||||
- serve file `/videos/...`
|
||||
|
||||
Khuyến nghị dùng NFS (Linux-Linux):
|
||||
|
||||
Máy A:
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nfs-kernel-server
|
||||
echo "/recordings 192.168.88.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
|
||||
sudo exportfs -ra
|
||||
```
|
||||
|
||||
Máy B:
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nfs-common
|
||||
sudo mkdir -p /recordings
|
||||
sudo mount -t nfs 192.168.88.10:/recordings /recordings
|
||||
```
|
||||
|
||||
## 3) Backend FastAPI
|
||||
|
||||
### 3.1 Cài dependencies
|
||||
@@ -131,6 +86,7 @@ pip install -r api/requirements.txt
|
||||
Backend chỉ đọc cấu hình từ `api/data/config.json` (không đọc `.env`).
|
||||
Chạy lần đầu sẽ tự tạo file này (lưu camera + schedule + các tham số backend).
|
||||
Danh sách camera trong `config.json` sẽ được backend đồng bộ từ `mediamtx.yml`.
|
||||
Các thông số kết nối MediaMTX (`mediamtx_api_url`, `mediamtx_webrtc_url`, credentials, `recordings_dir`) do user điền trong dashboard Settings hoặc chỉnh trực tiếp `config.json`.
|
||||
|
||||
Bạn có thể chỉnh:
|
||||
|
||||
@@ -147,21 +103,6 @@ Các thao tác trong Settings:
|
||||
- MediaMTX record: bật/tắt `pathDefaults.record` trong `mediamtx.yml`
|
||||
- Restart MediaMTX Docker: gọi `docker compose -f mediamtx/docker-compose.yml restart mediamtx`
|
||||
|
||||
Nếu chạy mô hình 2 thiết bị, set theo IP máy A (MediaMTX), ví dụ:
|
||||
|
||||
```json
|
||||
{
|
||||
"mediamtx_api_url": "http://192.168.88.10:9997",
|
||||
"mediamtx_webrtc_url": "http://192.168.88.10:8889",
|
||||
"mediamtx_api_user": null,
|
||||
"mediamtx_api_pass": null,
|
||||
"recordings_dir": "./mediamtx/recordings",
|
||||
"api_port": 8008,
|
||||
"cameras": [],
|
||||
"schedule": { "enabled": true, "weekdays_from": "18:00", "weekdays_to": "08:00", "weekend_all_day": true }
|
||||
}
|
||||
```
|
||||
|
||||
### 3.3 Chạy backend
|
||||
|
||||
```bash
|
||||
@@ -212,8 +153,6 @@ server {
|
||||
}
|
||||
```
|
||||
|
||||
Nếu chạy mô hình 2 thiết bị, phần Nginx ở máy B không cần proxy tới MediaMTX. Frontend sẽ gọi trực tiếp `mediamtx_webrtc_url` (máy A).
|
||||
|
||||
## 5) Systemd service (khuyến nghị)
|
||||
|
||||
### 5.1 Backend service
|
||||
|
||||
Reference in New Issue
Block a user