WebCam als schlanke alternative zum appVideoControl

This commit is contained in:
chk
2026-06-02 22:19:08 +02:00
commit 9b1ae2ae14
11 changed files with 842 additions and 0 deletions

66
docker-compose.yaml Normal file
View File

@@ -0,0 +1,66 @@
name: approbotwebcam
# ── Portainer Web-Editor: dieses YAML direkt einfügen ───────────────────────
# Voraussetzungen auf dem Server:
# 1. docker network create appRobotNet
# 2. Code-Verzeichnis liegt auf dem Server (git clone / rsync / Synology Drive)
# 3. In Portainer unter "Environment variables" setzen:
# APP_PATH=/absoluter/pfad/zum/appRobotWebcam
#
# Beim ersten Deploy baut Portainer das Image (Node.js + FFmpeg).
# Danach reicht "Redeploy" kein Rebuild nötig ausser bei System-Updates.
# ─────────────────────────────────────────────────────────────────────────────
services:
webcam:
build:
context: /tmp # Leerer Build-Context: kein COPY nötig, Code kommt per Bind-Mount
dockerfile_inline: |
FROM node:lts-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ffmpeg \
v4l-utils \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
EXPOSE 8080
image: approbotwebcam:latest
container_name: AppRobotWebcam
restart: unless-stopped
# npm install läuft einmalig beim Start, danach gecacht in node_modules
command: sh -c "npm install && node server.js"
volumes:
# APP_PATH in Portainer setzen, z.B. /volume1/docker/appRobotWebcam
# Lokal (ohne Portainer): APP_PATH nicht setzen → Fallback auf ./
- ${APP_PATH:-.}:/usr/src/app
ports:
- "8444:8080"
environment:
- NODE_ENV=production
- PORT=8080
- DEV0=/dev/video0
- DEV1=/dev/video2
# Optional Defaults: 640x480 @ 30fps, Qualität 5
# - CAM0_WIDTH=640
# - CAM0_HEIGHT=480
# - CAM0_FPS=30
# - CAM0_QUALITY=5
devices:
- /dev/video0:/dev/video0
- /dev/video2:/dev/video2
# Kamera-Zugriffsrechte: Node-Prozess braucht Gruppe 'video'
group_add:
- video
networks:
- appRobotNet
networks:
appRobotNet:
external: true