This commit is contained in:
2026-04-28 11:05:42 +07:00
parent 7cace210d6
commit 81c727b7a6
8 changed files with 102 additions and 99 deletions
+25 -20
View File
@@ -25,21 +25,13 @@ Dashboard giám sát camera IP gọn nhẹ chạy trên Orange Pi, dựa trên M
## Chạy dev (máy dev)
### 0) Tạo file .env
```bash
cp .env.example .env
```
Sửa các biến trong `.env` theo IP/port thực tế (MediaMTX, recordings, CORS).
### 1) Chạy backend
```bash
python3 -m venv api/.venv
source api/.venv/bin/activate
pip install -r api/requirements.txt
python3 api/run.py
python3 -m api.run
```
### 2) Chạy frontend
@@ -53,29 +45,42 @@ Frontend dev server đã được cấu hình proxy `/api` và `/videos` sang `h
## Cấu hình
Khuyến nghị cấu hình bằng file `.env` (copy từ `.env.example`).
Backend tự tạo file cấu hình tại `api/data/config.json` khi chạy lần đầu.
Backend chỉ dùng file `api/data/config.json` (không đọc `.env`).
- `mediamtx_api_url`: ví dụ `http://127.0.0.1:9997`
- `mediamtx_webrtc_url`: ví dụ `http://127.0.0.1:8889`
- `recordings_dir`: ví dụ `/recordings`
- `mediamtx_api_user`: username API (nếu bật auth trong MediaMTX)
- `mediamtx_api_pass`: password API (nếu bật auth trong MediaMTX)
- `recordings_dir`: ví dụ `./mediamtx/recordings` (cùng máy) hoặc đường dẫn mount NFS/SMB
- `api_port`: cổng chạy backend (mặc định `8008`)
- `cameras`: danh sách camera (name + rtsp_url)
- `schedule`: lịch ghi hình
Có thể override WebRTC base URL ở frontend bằng biến môi trường `VITE_MEDIAMTX_WEBRTC_URL`.
Ví dụ `config.json`:
Có thể set giá trị mặc định khi chạy lần đầu bằng ENV (backend):
- `MEDIAMTX_API_URL` (ví dụ `http://192.168.88.10:9997`)
- `MEDIAMTX_WEBRTC_URL` (ví dụ `http://192.168.88.10:8889`)
- `RECORDINGS_DIR` (ví dụ `/recordings` hoặc đường dẫn mount NFS/SMB)
```json
{
"mediamtx_api_url": "http://127.0.0.1:9997",
"mediamtx_webrtc_url": "http://127.0.0.1:8889",
"mediamtx_api_user": null,
"mediamtx_api_pass": null,
"recordings_dir": "/mnt/ssd/IPCam_OrangePi_Dashboard/mediamtx/recordings",
"api_port": 8008,
"cameras": [],
"schedule": {
"enabled": true,
"weekdays_from": "18:00",
"weekdays_to": "08:00",
"weekend_all_day": true
}
}
```
## Chạy tách 2 thiết bị (cùng LAN)
- Máy A (MediaMTX + ổ lưu recordings): chạy MediaMTX, mở cổng `9997/tcp`, `8889/tcp`, `8189/udp`, `8554/tcp`
- Máy B (Dashboard backend + frontend): chạy FastAPI + serve web UI
- Playback: máy B cần đọc được thư mục recordings của máy A (khuyến nghị mount NFS/SMB v`RECORDINGS_DIR`)
- Playback: máy B cần đọc được thư mục recordings của máy A (khuyến nghị mount NFS/SMB và set `recordings_dir` trong `api/data/config.json`)
Chi tiết xem `INSTALL.md`.