Viseron installeren en gebruiken
Viseron is op het moment dat dit artikel geschreven wordt nog vrij nieuw op het gebied van open source-opties voor NVR’s. Het heeft een aantal goede functies, maar is zeker nog jong.
Voordelen
- Vrij eenvoudig om in Docker te laten draaien.
- Werkt met RTSP-gebaseerde camera’s en MJpeg-streams
- Bewegingsdetectie
- Objectdetectie
- Gezichtsherkenning (niet getest in dit artikel, maar beweerd op hun website)
Nadelen
- Gebruikt een yaml-configuratiebestand om alles in te stellen (geen eenvoudige webgebruikersinterface/formulier)
- Geen ONVIF-opties voor cameradetectie of -instellingen.
- Gebrek aan feedback op bewegings-/objectdetectie voor visuele afstemming
Viseron biedt een vrij eenvoudige, schone interface. Het heeft niet veel toeters en bellen als het gaat om het instellen en configureren van camera’s, bewegingsdetectie of objectdetectie.
Alle configuratie wordt gedaan via een yaml-configuratiebestand. Ze ondersteunen wel een “secrets”-bestand voor het opslaan van uw camera-ip’s, gebruikersnamen en wachtwoorden, los van het hoofdconfiguratiebestand, maar het wordt nog steeds gedaan via een configuratiebestand.
Viseron maakt het hoofdconfiguratiebestand beschikbaar voor bewerking via een bestandseditor in de webbrowser, waardoor u het niet in uw terminal of een aparte teksteditor hoeft te openen.
De eerste ervaring in het algemeen
Gelukkig is het configuratiebestand vrij eenvoudig om mee te werken en het geeft je een goede boilerplate om mee te beginnen. De documentatie over opties die beschikbaar zijn om te gebruiken in het configuratiebestand, maar die nog niet in de boilerplate worden weergegeven, is wat summier. Het instellen van mijn camera’s was niet zo moeilijk toen ik eenmaal begreep welke waarden waar moesten komen. Ik kon een secrets.yaml-bestand gebruiken dat in dezelfde map stond als het hoofdbestand configuration.yml om de IP’s, gebruikersnamen en wachtwoorden van mijn camera’s in te voeren, in plaats van het hoofdconfiguratiebestand te gebruiken voor al deze gevoelige details.
De camera’s werden over het algemeen snel gedetecteerd en verschenen snel in de interface van de camera. Het systeem biedt geen echt live conglomeratiebeeld (meerdere camera’s in een raster of lay-out). Het beeld van de hoofdcamera’s leek ongeveer elke 7 tot 10 seconden te worden bijgewerkt, maar niet vaker dan dat tijdens mijn gebruik en testen.
Je kunt naar een liveweergave per camera gaan, en naar een weergave van alle opnamen die een camera maakt. Als u echter bij ‘alle’ opnamen wilt, moet u wel wat dieper graven.
Kortom, Viseron is een prima optie voor iemand die een aantal camera’s rondom zijn huis of bedrijf in de gaten wil houden en opnames wil maken op basis van objectbeweging, en niet alleen beweging in het algemeen.
De installatie van Viseron
Ten eerste moet je docker en docker-compose op uw systeem geïnstalleerd hebben. Als u deze nog niet hebt, volgt u de onderstaande sectie en gebruikt u mijn eenvoudige script dat is ontworpen om u te helpen ze eenvoudig te installeren. Als u ze al hebt geïnstalleerd, kunt u gerust doorgaan naar de volgende sectie over het installeren van Viseron zelf.
Installatie via een eenvoudig script
Je kunt Docker-CE, Docker-Compose, Portainer-CE en NGinX Proxy Manager eenvoudig installeren met behulp van dit snelle installatiescript dat ik heb gemaakt en onderhoud op Github.
Gebruik gewoon de opdracht:
wget https://gitlab.com/bmcgonag/docker_installs/-/raw/main/install_docker_nproxyman.sh
Om het script te downloaden naar de gewenste host.
Wijzig de machtigingen om het script uitvoerbaar te maken: chmod +x ./install_docker_nproxyman.sh
en voer vervolgens het script uit met de opdracht: ./install_docker_nproxyman.sh
Wanneer het script wordt uitgevoerd, vraagt het u om uw hostbesturingssysteem te selecteren en vraagt het u vervolgens welke stukjes software u wilt installeren.
Voer gewoon ‘y’ in voor elk ding dat u wilt installeren.
Op een gegeven moment wordt u mogelijk ook om uw supergebruiker (sudo) wachtwoord gevraagd.
Laat het script de installatie voltooien.
Op dit punt kunt u het beste uitloggen en opnieuw inloggen, omdat u dan de opdrachten docker
en docker-compose
kunt gebruiken zonder dat u sudo ervoor hoeft te zetten.
Viseron installeren in Docker
Nu je docker en docker-compose hebt geïnstalleerd, moet je een map maken om Viseron in te installeren. Ik plaats al mijn docker-gebaseerde applicaties/services liefst in een bovenliggende docker-map, met de applicatie- of service-installatie als een eigen map.
Om dit in Linux te doen, doet u gewoon het volgende: mkdir -p docker/viseron
De opdracht hierboven zegt dat je de map “docker” moet aanmaken als die nog niet bestaat. Als dat wel zo is, gebruik dan gewoon de map die daar staat. Vervolgens wordt dezelfde controle uitgevoerd voor de map “viseron” en gebeurt hetzelfde.
Ga nu naar de map “viseron” met de opdracht: cd docker/viseron
We maken een nieuw bestand in deze map met de naam “docker-compose.yml”. Dit is een yaml-bestand (uitgesproken als “yammel”) dat we gebruiken om te definiëren hoe we de Viseron-applicatie kunnen ophalen, waar we video-opnames kunnen opslaan, welke poorten we kunnen gebruiken en hoe de applicatie in docker moet heten.
nano docker-compose.yml
Kopieer het onderstaande codeblok en plak het in het bestand.
version: "2.4"
services:
viseron:
image: roflcoopter/viseron:latest
container_name: viseron
volumes:
- {recordings path}:/recordings
- {config path}:/config
- /etc/localtime:/etc/localtime:ro
ports:
- 8888:8888
environment:
- PUID=1000
- PGID=1000
De bovenstaande samengestelde inhoud komt rechtstreeks uit de Viseron-documentatie op het moment van schrijven van dit artikel.
OPMERKING: Controleer altijd de documentatie op bijgewerkte installatieprocedures, aangezien de kans groter is dat deze na verloop van tijd actueel en nauwkeurig is.
Zorg ervoor dat je in de bovenstaande inhoud alleen toegewezen items (volumes, poorten) aan de linkerkant van de dubbele punt ‘:’ vervangt. De rechterkant van de dubbele punt is wat de docker-container gebruikt om de applicatie te laten draaien, en je mag die waarden nooit wijzigen. De linkerkant is echter wat uw hostmachine (de machine waarop docker draait) gebruikt. Dus als je de Viseron-webinterface op poort 9612 wilt bereiken, wijzigt de poorttoewijzing zodat deze eruitziet als - 9612:8888
Tenzij je de standaardpoorttoewijzing wilt wijzigen, kunt u deze gewoon 8888:8888
laten staan. Je krijgt dan toegang tot de webgebruikersinterface via poort 8888 wanneer dat nodig is.
Voor de volumetoewijzingen verander ik graag mijn volumes zodat ze allemaal in de huidige directory staan. In Linux doen we dit met de ./
voor het pad naar de locatie.
Dus in mijn compose-bestand heb ik {config path}
gewijzigd in ./data/config
.
Voor de {recordings path}
zou ik dit normaal gesproken ook in de huidige map zetten, maar omdat opnames kunnen groeien en behoorlijk groot kunnen worden, wilt u misschien een externe NAS of een andere toegewezen netwerkschijf gebruiken. Zorg er dus voor dat u hier het juiste pad invoert naar waar u de opnames wilt opslaan. Over het algemeen vindt u een pad voor een NAS in /mnt/some/path...
, maar dat is niet altijd het geval, dus het is belangrijk dat u weet waar uw netwerkopslag is gekoppeld.
Zodra je deze paar details hebt bijgewerkt, sla je het bestand op met CTRL + O, bevestig door op Enter te drukken en verlaat je de nano-editor met CTRL + X.
Nu gaan we het Viseron-systeem opstarten. Je kunt dit doen met de opdracht: docker compose up -d
(als je een oudere versie van docker-compose gebruikt, moet je mogelijk docker-compose up -d
uitvoeren.)
Geef de applicatie tijd om te downloaden en ga aan de slag. Wanneer u een ‘done’-bericht ziet, kunt u uw favoriete webbrowser openen en naar het IP-adres van uw hostmachine gaan en naar de poort die u aan de linkerkant van de dubbele punt hebt toegewezen. Als u dezelfde machine gebruikt als waar u voor zit, kunt u localhost
gebruiken in plaats van het IP-adres van de machine als u dat liever wil.
Ik ging naar http://10.0.0.10:8541
toen ik poort 8541 op mijn host toewees aan de containerpoort 8888 in mijn docker-compose.yml-bestand.
Je ziet de Viseron-app laden en een spinner. De spinner blijft gewoon draaien, omdat je nog geen camera’s aan het configuratiebestand hebt toegevoegd. Dat gaan we nu instellen.
De Viseron-configuratiebestanden
Zoals eerder vermeld, gebruikt Viseron yaml-configuratiebestanden om camera’s en opties voor het systeem in te stellen. Je hebt twee bestanden nodig om veiliger te zijn, maar standaard is het hoofdconfiguratiebestand al ingesteld. Je kunt dit bestand rechtstreeks vanuit de web-gebruikersinterface openen, bewerken en opslaan. Je kunt de server zelfs opnieuw opstarten nadat je wijzigingen hebt aangebracht en deze hebt opgeslagen om deze wijzigingen door te voeren.
De hoofdconfiguratie ziet er niet precies zo uit als mijn voorbeeld hieronder, maar het komt wel in de buurt van wat ik ga laten zien.Nogmaals, in de Viseron-documentatie bieden ze een voorbeeldconfiguratiebestand met meer details dan wat ik hier zal hebben. Mijn bestand is er slechts één om u op weg te helpen.
Klik op het “hamburger”-pictogram linksboven op het Viseron-scherm om het navigatiepaneel te openen. Hier kunt u op de optie “Configuratie” klikken om rechtstreeks in de browser naar uw standaard configuration.yml-bestand te gaan.
Het zou er ongeveer zo uit moeten zien:
ffmpeg:
camera:
viseron_camera:
name:Driveway
host: 10.0.0.16
path: /mjpg/video.mjpg
port: 80
stream_format: mjpeg
fps: 25
viseron_camera2:
name: Front Door
host: !secret cam2_ip
path: /mjpg/video.mjpg
stream_format: mjpeg
port: !secret cam2_port
fps: 15
viseron_camera3:
name: Back Yard
host: !secret cam3_ip
path: /h265Preview01_sub
port: !secret cam3_port
username: !secret cam3_username
password: !secret cam3_password
stream_format: rtsp
fps: 15
darknet:
object_detector:
cameras:
viseron_camera:
fps: 5
scan_on_motion_only: false
labels:
- label: person
confidence: 0.8
trigger_recorder: true
viseron_camera2:
fps: 5
scan_on_motion_only: true
labels:
- label: person
confidence: 0.65
trigger_recorder: true
viseron_camera3:
fps: 5
scan_on_motion_only: true
labels:
- label: person
confidence: 0.75
trigger_recorder: true
mog2:
motion_detector:
cameras:
viseron_camera:
fps: 5
viseron_camera2:
fps: 5
nvr:
viseron_camera:
viseron_camera2:
viseron_camera3:
Ik heb de bovenstaande configuratie-instelling in een gemengde indeling gelaten. Ik heb de verbindingsinformatie van camera 1 rechtstreeks in het configuratiebestand ingesteld en u bent meer dan in staat en welkom om dit te doen als u dat wilt. Camera 2 en Camera 3 heb ik echter ingesteld om een tweede yaml-bestand te gebruiken met de naam “secrets.yaml”. De naam van dit bestand en de locatie zijn erg belangrijk. Het is echter handig, omdat u deze configuratie eenvoudig kunt delen tussen machines of met anderen, zonder dat u zich zorgen hoeft te maken dat uw gevoelige camera-informatie openbaar wordt.
Het bestand “secrets.yaml” is ook vrij eenvoudig in te stellen. We maken gewoon een nieuw bestand in dezelfde map waar het hoofdbestand configuration.yml zich bevindt. In dit geval staat het in onze docker/viseron/data/config-map.
Eenmaal in die map gebruikt u de volgende opdracht om het nieuwe bestand te maken:
nano secrets.yaml
Zodra u het in de teksteditor opent, begint u met het toevoegen van de waarde die u wilt gebruiken in het configuratiebestand, gevolgd door een dubbele punt ‘:’, en vervolgens de werkelijke waarde. Zet één waarde-set op elke regel.
Voorbeeld hieronder:
cam2_ip: 10.0.0.17
cam2_port: 443
cam3_username: colani
cam3_password: geheim
cam3_ip: 10.0.0.18
cam3_port: 554
Zodra u uw bestand hebt ingesteld, slaat u het op met CTRL + O, drukt u op Enter om te bevestigen en gebruikt u CTRL + X om de nano-teksteditor te verlaten. Nu, in uw configuratiebestand, overal waar u een secrets.yaml-variabele wilt gebruiken, plaatst u gewoon !secret <variablename>
in plaats van de werkelijke waarde.
Sla uw wijzigingen op en klik vervolgens op de knop ‘Server opnieuw opstarten’ om te controleren of uw instellingen naar wens werken.
En we zijn klaar, je hebt nu een NVR-systeem dat draait, met optionele bewegings- en objectdetectie. Het gebruik van TPM-apparaten zoals de Google Coral kan zeker helpen bij het verwijderen van de CPU-belasting van objectdetectie, vooral als u meer camera’s toevoegt, maar met mijn tests op 2 camera’s leek het te werken met heel weinig extra CPU-gebruik.
Kleine opmerking
Een nadeel van het Viseron-systeem is dat u geen inspraak hebt in het automatisch verwijderen van oude opnames. Dit is een functie die ik over het hoofd zie, omdat u zich hiermee geen zorgen meer hoeft te maken dat u op een gegeven moment geen opslagruimte meer hebt, vooral niet als u meer camera’s aan het systeem toevoegt.
Ik denk dat Viseron een geweldige start heeft en ik ben enthousiast om te zien dat het met de tijd meer mogelijkheden en functies krijgt. Ik hoop echt dat ze succesvol zullen zijn en een andere geweldige open source-optie aan het NVR-landschap zullen toevoegen.
Ondersteun mijn website’s, kanaal en inhoud
Ondersteun mijn kanaal en mijn voortdurende inspanningen via Patreon:
https://patreon.com/Colani
Bron: https://wiki.opensourceisawesome.com/