定制 nawasara/cctv 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nawasara/cctv

Composer 安装命令:

composer require nawasara/cctv

包简介

Public CCTV monitoring for the Nawasara superapp framework — Dahua camera registry, live WebRTC/HLS view via go2rtc sidecar, health monitoring, and recording playback.

README 文档

README

Monitoring CCTV publik untuk framework superapp Nawasara. Mendukung kamera Dahua via RTSP, ditampilkan ke browser lewat sidecar go2rtc (RTSP → WebRTC/HLS), dengan health monitoring dan kerangka playback rekaman.

Kenapa butuh sidecar

Browser tidak bisa memutar RTSP secara langsung. go2rtc adalah service terpisah (container) yang menerima RTSP dari kamera dan mem-publish ulang sebagai WebRTC/HLS/MSE yang browser bisa konsumsi. Laravel tidak pernah menyentuh RTSP — ia hanya bicara ke HTTP API go2rtc.

Kamera Dahua  --RTSP-->  go2rtc (sidecar)  --WebRTC/HLS-->  Browser
                              ▲
                              │ HTTP API (register stream, query status)
                         Laravel (paket ini)

Status v0.1.0

Fitur Status
Registry kamera + CRUD (kredensial terenkripsi) ✅ siap
Live view (grid + single focus) via go2rtc ✅ siap
Health monitoring (TCP probe, badge online/offline) ✅ siap
Sinkronisasi stream ke go2rtc ✅ siap
Tabel + UI playback rekaman ✅ siap (UI)
Engine perekaman (record RTSP ke disk) ⏳ menyusul — butuh keputusan retention/storage

UI Recordings sudah lengkap; begitu engine perekaman diaktifkan di versi berikutnya, halaman itu langsung berfungsi tanpa perubahan.

Setup

1. Sidecar go2rtc (docker-compose)

Sudah ditambahkan di docker-compose.dev.yml sebagai service go2rtc (image alexxit/go2rtc), berada di network nawasara-dev yang sama dengan app. Container menjangkau kamera di LAN lewat routing Docker host — tidak perlu network_mode khusus selama host bisa me-route ke subnet kamera.

Reverse-proxy /go2rtc/go2rtc:1984 sudah disiapkan di docker/nginx.conf (pakai resolver + variabel proxy_pass supaya nginx tidak gagal boot kalau sidecar belum up).

2. Environment

CCTV_GO2RTC_API_URL=http://go2rtc:1984      # internal, dipakai Laravel
CCTV_GO2RTC_PUBLIC_URL=/go2rtc              # dipakai browser (via proxy)
CCTV_GO2RTC_MODE=webrtc

3. Migrasi + permission

php artisan migrate
php artisan db:seed --class="Nawasara\\Cctv\\Database\\Seeders\\PermissionSeeder"

Keamanan kredensial kamera

Username/password kamera disimpan terenkripsi at-rest (cast encrypted di model Camera), disembunyikan dari serialisasi ($hidden), dan tidak pernah ditulis ke log. URL RTSP lengkap (dengan kredensial) hanya dibangun sesaat untuk dikirim ke go2rtc, tidak pernah ditampilkan ke user.

⚠️ Saat menambah kamera, masukkan kredensial lewat form CRUD — jangan hardcode di config/repo.

Console commands

Command Fungsi Jadwal
cctv:probe TCP-probe semua kamera aktif, update status online/offline tiap 5 menit
cctv:sync-go2rtc Daftarkan ulang semua kamera ke go2rtc (jaring pengaman bila sidecar restart) tiap jam

Permissions

Permission Untuk
cctv.camera.view Lihat live view + daftar kamera
cctv.camera.create Tambah kamera
cctv.camera.update Edit kamera
cctv.camera.delete Hapus kamera
cctv.recording.view Lihat + putar rekaman
cctv.recording.delete Hapus rekaman

统计信息

  • 总下载量: 44
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-05-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固