Viseron kasutamine operatsioonisüsteemiga Debian: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
(Uus lehekülg: '===Sissejuhatus=== TODO ===Kasulikud lisamaterjalid=== * TODO')
 
Resümee puudub
 
(ei näidata sama kasutaja 10 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  +
  +
TODO
  +
  +
* https://github.com/roflcoopter/viseron
  +
* https://hub.docker.com/u/roflcoopter
  +
  +
===Keskkonna ettevalmistamine===
  +
  +
* nt Debian v. 13 operatsioonisüsteemil põhinev dockerhost
  +
* rtsp st tavalised ip kaamerad
  +
  +
Tundub, et tulemusena uuemal ajal docker maht asub mitte /var/lib/docker aga /var/lib/containerd kataloogis
  +
  +
<pre>
  +
root@viseron-plms:~# df -T -t ext4 -h
  +
Filesystem Type Size Used Avail Use% Mounted on
  +
/dev/mapper/system-root ext4 13G 1.7G 11G 14% /
  +
/dev/vdb ext4 63G 919M 59G 2% /srv
  +
/dev/vdc ext4 24G 8.3G 15G 37% /var/lib/containerd
  +
</pre>
  +
  +
===Misc===
  +
  +
bind mounts
  +
  +
<pre>
  +
TODO
  +
</pre>
  +
  +
docker compose
  +
  +
<pre>
  +
root@viseron-plms:/srv/viseron/dc# cat docker-compose.yaml
  +
services:
  +
viseron:
  +
image: roflcoopter/viseron:latest
  +
container_name: viseron
  +
shm_size: "1024mb"
  +
volumes:
  +
- /srv/viseron/volume/segments:/segments
  +
- /srv/viseron/volume/snapshots:/snapshots
  +
- /srv/viseron/volume/thumbnails:/thumbnails
  +
- /srv/viseron/volume/event_clips:/event_clips
  +
- /srv/viseron/volume/timelapse:/timelapse
  +
- /srv/viseron/volume/config:/config
  +
- /etc/localtime:/etc/localtime:ro
  +
ports:
  +
- 8888:8888
  +
</pre>
  +
  +
tulemus
  +
  +
<pre>
  +
root@viseron-plms:/srv/viseron/dc# docker compose up -d
  +
  +
root@viseron-plms:/srv/viseron/dc# docker compose ls
  +
NAME STATUS CONFIG FILES
  +
dc running(1) /srv/viseron/dc/docker-compose.yaml
  +
  +
root@viseron-plms:~# docker image ls
  +
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
  +
roflcoopter/viseron:latest 6d7b4c1ff718 8.79GB 2.8GB U
  +
</pre>
  +
  +
Viseron seadistamine
  +
  +
Settings -> Configuration
  +
  +
kus
  +
  +
<pre>
  +
ffmpeg:
  +
camera:
  +
camera_1: # This value has to be unique across all cameras
  +
name: Sissesoit
  +
host: 192.0.0.11
  +
port: 554
  +
path: /Streaming/Channels/1
  +
username: kasutajanimi
  +
password: parool
  +
  +
camera_2: # This value has to be unique across all cameras
  +
name: Valjasoit
  +
host: 192.0.0.12
  +
port: 554
  +
path: /Streaming/Channels/1
  +
username: kasutajanimi
  +
password: parool
  +
  +
## Then add an object detector
  +
darknet:
  +
object_detector:
  +
cameras:
  +
camera_1: # Attach detector to the configured camera_1 above
  +
fps: 1
  +
scan_on_motion_only: false # Scan for objects even when there is no motion
  +
labels:
  +
- label: person
  +
confidence: 0.75
  +
trigger_event_recording: true
  +
  +
## You can also use motion detection
  +
mog2:
  +
motion_detector:
  +
cameras:
  +
camera_1: # Attach detector to the configured camera_2 above
  +
fps: 1
  +
  +
  +
## To tie everything together we need to configure one more component.
  +
nvr:
  +
camera_1: # Run NVR for camera_1
  +
camera_2: # Run NVR for camera_2
  +
</pre>
  +
  +
Logi
  +
  +
<pre>
  +
root@viseron-plms:/srv/viseron/dc# docker compose logs --tail 40 | grep camera_1
  +
viseron | 2026-03-22 16:49:47.988 [ERROR ] [viseron.components.ffmpeg.stream.camera_1] - [h264 @ 0x563437464280] left block unavailable for requested intra4x4 mode -1
  +
viseron | 2026-03-22 16:49:52.248 [INFO ] [viseron.components] - Setup of domain camera for component ffmpeg with identifier camera_1 took 5.4 seconds
  +
viseron | 2026-03-22 16:49:52.261 [INFO ] [viseron.components] - Setup of domain motion_detector for component mog2 with identifier camera_1 took 0.0 seconds
  +
viseron | 2026-03-22 16:49:52.278 [INFO ] [viseron.components] - Setup of domain object_detector for component darknet with identifier camera_1 took 0.0 seconds
  +
viseron | 2026-03-22 16:49:52.337 [INFO ] [viseron.components.nvr.nvr.camera_1] - NVR for camera Sissesoit initialized
  +
viseron | 2026-03-22 16:49:52.339 [INFO ] [viseron.components] - Setup of domain nvr for component nvr with identifier camera_1 took 0.1 seconds
  +
</pre>
  +
  +
===Nginx frontend===
  +
  +
====Tööpõhimõte====
  +
  +
Väited
  +
  +
* viseron töötab iseenesest alati / url path peal
  +
  +
Kui frontend käivitada /viseron/ url path peal, siis tuleb öelda
  +
  +
* viseron rakendusele, et ta genereeriks lõppkasutajale linke jms aadress arvestades url path algusse '/viseron' elemendi
  +
* nginx rakendusele, et ta teenindaks sissetulevaid lõppkasutaja päringuid aadressilt algusega '/viseron' url path, aga proksiks nad viseronile / url path peale
  +
  +
====Viseron seadistamine====
  +
  +
<pre>
  +
...
  +
  +
webserver:
  +
subpath: "/viseron"
  +
</pre>
  +
  +
====Nginx seadistamine====
  +
  +
<pre>
  +
root@plms-tm:~# cat /etc/nginx/conf.d/default.conf
  +
map $http_upgrade $connection_upgrade {
  +
default upgrade;
  +
'' close;
  +
}
  +
  +
...
  +
  +
  +
root@plms-tm:~# cat /etc/nginx/sites-enabled/xxx.auul.pri.ee.conf
  +
  +
...
  +
  +
location /viseron/ {
  +
proxy_pass http://192.0.0.56:8888/; # Note: trailing slash strips the /viseron prefix
  +
proxy_set_header Host $http_host;
  +
proxy_set_header X-Real-IP $remote_addr;
  +
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  +
proxy_set_header X-Forwarded-Proto $scheme;
  +
  +
# WebSocket support (required for live updates)
  +
proxy_http_version 1.1;
  +
proxy_set_header Upgrade $http_upgrade;
  +
proxy_set_header Connection $connection_upgrade;
  +
proxy_read_timeout 86400;
  +
auth_basic "Basic auth";
  +
auth_basic_user_file /etc/nginx/htpasswd;
  +
}
  +
  +
...
  +
  +
</pre>
  +
  +
===nvidia cuda===
  +
  +
TODO
  +
  +
===Hailo===
   
 
TODO
 
TODO

Viimane redaktsioon: 22. märts 2026, kell 22:27

Sissejuhatus

TODO

Keskkonna ettevalmistamine

  • nt Debian v. 13 operatsioonisüsteemil põhinev dockerhost
  • rtsp st tavalised ip kaamerad

Tundub, et tulemusena uuemal ajal docker maht asub mitte /var/lib/docker aga /var/lib/containerd kataloogis

root@viseron-plms:~# df -T -t ext4 -h
Filesystem              Type  Size  Used Avail Use% Mounted on
/dev/mapper/system-root ext4   13G  1.7G   11G  14% /
/dev/vdb                ext4   63G  919M   59G   2% /srv
/dev/vdc                ext4   24G  8.3G   15G  37% /var/lib/containerd

Misc

bind mounts

TODO

docker compose

root@viseron-plms:/srv/viseron/dc# cat docker-compose.yaml
services:
  viseron:
    image: roflcoopter/viseron:latest
    container_name: viseron
    shm_size: "1024mb"
    volumes:
      - /srv/viseron/volume/segments:/segments
      - /srv/viseron/volume/snapshots:/snapshots
      - /srv/viseron/volume/thumbnails:/thumbnails
      - /srv/viseron/volume/event_clips:/event_clips
      - /srv/viseron/volume/timelapse:/timelapse
      - /srv/viseron/volume/config:/config
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8888:8888

tulemus

root@viseron-plms:/srv/viseron/dc# docker compose up -d

root@viseron-plms:/srv/viseron/dc# docker compose ls
NAME                STATUS              CONFIG FILES
dc                  running(1)          /srv/viseron/dc/docker-compose.yaml

root@viseron-plms:~# docker image ls
IMAGE                        ID             DISK USAGE   CONTENT SIZE   EXTRA
roflcoopter/viseron:latest   6d7b4c1ff718       8.79GB          2.8GB    U

Viseron seadistamine

Settings -> Configuration

kus

ffmpeg:
  camera:
    camera_1:  # This value has to be unique across all cameras
      name: Sissesoit
      host: 192.0.0.11
      port: 554
      path: /Streaming/Channels/1
      username: kasutajanimi
      password: parool

    camera_2:  # This value has to be unique across all cameras
      name: Valjasoit
      host: 192.0.0.12
      port: 554
      path: /Streaming/Channels/1
      username: kasutajanimi
      password: parool

## Then add an object detector
darknet:
  object_detector:
    cameras:
      camera_1:  # Attach detector to the configured camera_1 above
        fps: 1
        scan_on_motion_only: false  # Scan for objects even when there is no motion
        labels:
          - label: person
            confidence: 0.75
            trigger_event_recording: true

## You can also use motion detection
mog2:
  motion_detector:
    cameras:
      camera_1:  # Attach detector to the configured camera_2 above
        fps: 1


## To tie everything together we need to configure one more component.
nvr:
  camera_1:  # Run NVR for camera_1
  camera_2:  # Run NVR for camera_2

Logi

root@viseron-plms:/srv/viseron/dc# docker compose logs --tail 40 | grep camera_1
viseron  | 2026-03-22 16:49:47.988 [ERROR   ] [viseron.components.ffmpeg.stream.camera_1] - [h264 @ 0x563437464280] left block unavailable for requested intra4x4 mode -1
viseron  | 2026-03-22 16:49:52.248 [INFO    ] [viseron.components] - Setup of domain camera for component ffmpeg with identifier camera_1 took 5.4 seconds
viseron  | 2026-03-22 16:49:52.261 [INFO    ] [viseron.components] - Setup of domain motion_detector for component mog2 with identifier camera_1 took 0.0 seconds
viseron  | 2026-03-22 16:49:52.278 [INFO    ] [viseron.components] - Setup of domain object_detector for component darknet with identifier camera_1 took 0.0 seconds
viseron  | 2026-03-22 16:49:52.337 [INFO    ] [viseron.components.nvr.nvr.camera_1] - NVR for camera Sissesoit initialized
viseron  | 2026-03-22 16:49:52.339 [INFO    ] [viseron.components] - Setup of domain nvr for component nvr with identifier camera_1 took 0.1 seconds

Nginx frontend

Tööpõhimõte

Väited

  • viseron töötab iseenesest alati / url path peal

Kui frontend käivitada /viseron/ url path peal, siis tuleb öelda

  • viseron rakendusele, et ta genereeriks lõppkasutajale linke jms aadress arvestades url path algusse '/viseron' elemendi
  • nginx rakendusele, et ta teenindaks sissetulevaid lõppkasutaja päringuid aadressilt algusega '/viseron' url path, aga proksiks nad viseronile / url path peale

Viseron seadistamine

...

webserver:
  subpath: "/viseron"

Nginx seadistamine

root@plms-tm:~# cat /etc/nginx/conf.d/default.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

...


root@plms-tm:~# cat /etc/nginx/sites-enabled/xxx.auul.pri.ee.conf

...

location /viseron/ {
    proxy_pass http://192.0.0.56:8888/;  # Note: trailing slash strips the /viseron prefix
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # WebSocket support (required for live updates)
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_read_timeout 86400;
    auth_basic "Basic auth";
    auth_basic_user_file /etc/nginx/htpasswd;
}

...

nvidia cuda

TODO

Hailo

TODO

Kasulikud lisamaterjalid

  • TODO