From 9274b2c52a29360c9c8b51e7e49a3dac53661ac5 Mon Sep 17 00:00:00 2001 From: chk <79915315+ChKendel@users.noreply.github.com> Date: Wed, 10 Jun 2026 07:08:17 +0200 Subject: [PATCH] yaml --- appRobot_full_portainer_Stack.yaml | 314 +++++++++++++++++++++++++++++ docker-compose-robot.yaml | 0 2 files changed, 314 insertions(+) create mode 100644 appRobot_full_portainer_Stack.yaml create mode 100644 docker-compose-robot.yaml diff --git a/appRobot_full_portainer_Stack.yaml b/appRobot_full_portainer_Stack.yaml new file mode 100644 index 0000000..82ddb56 --- /dev/null +++ b/appRobot_full_portainer_Stack.yaml @@ -0,0 +1,314 @@ +services: + + appRobotGuacamole: + image: abesnier/guacamole:latest + container_name: appRobot_guacamole + ports: + - "8080:8080" + volumes: + - /home/chk/Documents/appServerInstallation/guacamole/config:/config/guacamole + - /home/chk/Documents/appServerInstallation/guacamole/postgres:/config/postgres + restart: unless-stopped + extra_hosts: + - "host.docker.internal:host-gateway" + networks: + - default + + appRobotDriver: + container_name: appRobot_Driver + image: node:24-alpine + working_dir: /usr/src/app + volumes: + - /home/chk/Documents/appRobotDriver:/usr/src/app + command: npm start + restart: unless-stopped + environment: + - NODE_ENV=development + - NODE_OPTIONS=--inspect=0.0.0.0:2081 + - GRBL_BASE_IP=192.168.0.183 + - GRBL_ELLBOW_IP=192.168.0.202 + - GRBL_HAND_IP=192.168.0.250 + - ROBOT_SPEED_MODE=correct + ports: + - "2098:2098" + - "2081:2081" + networks: + - default + + + appRobotSimulation: + container_name: appRobot_Simulation + image: node:24-alpine + working_dir: /usr/src/app + volumes: + - /home/chk/Documents/appRobotSimulation:/usr/src/app + environment: + - TARGET_SERVER=wss://appRobot_Driver:2095 + command: npm start + restart: unless-stopped + ports: + - "1003:1003" + networks: + - default + + + appRobotControl: + image: node:24-alpine + container_name: appRobot_Control + working_dir: /app + command: sh -c "npm install && node --inspect=0.0.0.0:9229 3DInput.js" + ports: + - "10010:10010" + - "9229:9229" + volumes: + - /home/chk/Documents/appRobotControl:/app + environment: + #- NODE_ENV=production + - NODE_ENV=development # mit debugging + - TARGET_SERVER=wss://appRobot_Driver:2095 + depends_on: + - appRobotDriver + restart: unless-stopped + + appRobotHoming: + image: node:24-alpine + container_name: appRobot_Homing + working_dir: /app + volumes: + - /home/chk/Documents/appRobotHoming:/app + - /home/chk/Documents/AppRobotVideo/public/snapshots:/app/public/snapshots + environment: + - WSS_VIDEO_DRIVER=wss://localhost:8448 + - WSS_URL=wss://appRobot_Driver:2095 + - HTTPS_PORT=2093 + - WEBCAM_URL=http://appRobotWebcam:8444 + - BODYTRACKER_URL=http://appRobotBodyTracker:8446 + ports: + - "2093:2093" + depends_on: + - appRobotDriver + command: > + /bin/sh -lc "npm ci || npm install && node server/server.js" + networks: + - default + restart: unless-stopped + +# appRobotDirectBase: +# image: node:20-bullseye +# container_name: appRobot_DirectBase +# network_mode: host +# working_dir: /app +# volumes: +# - /home/chk/Documents/appRobotDirectControlBase:/app +# environment: +# - FluidNcHost=192.168.0.183 +# - FluidNcPort=80 +# - PORT=2098 +# ports: +# - "2098:2098" +# command: > +# /bin/bash -lc " +# npm ci || npm install && +# node server/server.js +# " + # restart: unless-stopped + + + + appRobot_Tunnel: + image: alpine:latest + container_name: appRobot_Tunnel + restart: unless-stopped + environment: + - TZ=Europe/Zurich + volumes: + - /home/chk/Documents/AppServerPortalUI/.ssh:/root/.ssh:ro + command: > + /bin/sh -c " + apk add --no-cache openssh-client autossh && + autossh -M 0 -N -o StrictHostKeyChecking=no \ + -i /root/.ssh/id_ed25519 \ + -o StrictHostKeyChecking=no \ + -o ServerAliveInterval=60 \ + -o ServerAliveCountMax=10 \ + -o ExitOnForwardFailure=yes \ + -N \ + -R 0.0.0.0:9703:portainer:9000 \ + -R 0.0.0.0:9710:appRobot_Control:10010 \ + -R 0.0.0.0:9798:appRobot_Driver:2098 \ + -R 0.0.0.0:9712:appRobot_Simulation:1003\ + -R 0.0.0.0:9743:AppRobotWebcam:8444 \ + -R 0.0.0.0:9780:appRobot_guacamole:8080 \ + -R 0.0.0.0:9793:appRobot_Homing:2093 \ + -R 0.0.0.0:9725:appRobot_AccessBase:443 \ + -R 0.0.0.0:9726:appRobot_AccessEllbow:443 \ + -R 0.0.0.0:9727:appRobot_AccessHand:443 \ + -R 0.0.0.0:9744:appRobot_CodeServer:8443 \ + tunnel@server.schooltech.ch -p 2255 + " + + cloudflared: + image: cloudflare/cloudflared:latest + container_name: appServer_cloudflare + command: tunnel --no-autoupdate run --token eyJhIjoiOWUyYzk0OTI1ZWVlNmE4NjRiZjllZGRiM2ZmMDRmMTUiLCJ0IjoiZDc2YzI2MjAtZGE0ZC00OTJmLWI5YjgtODNjMjgwNjQ5MTFlIiwicyI6IllUbGpPREJtTURndFpHSTVZUzAwWkRnekxXRTRNek10TXpaaE56WTBabUpsT1RBMSJ9 +# networks: +# - default +# - appRobotNet + restart: unless-stopped + + + + + appRobot_nextcloud_db: + image: mariadb:latest + container_name: appRobot_nextcloud_db + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: KantiWattwilABC + MYSQL_DATABASE: nextcloud + MYSQL_USER: nextcloud + MYSQL_PASSWORD: KantiABC122nextcloudX3! + volumes: + - /home/chk/Documents/appRobotNextCloud/db:/var/lib/mysql + + appRobot_nextcloud: + image: nextcloud:latest + container_name: appRobot_nextcloud + restart: unless-stopped + environment: + MYSQL_PASSWORD: KantiABC122nextcloudX3! + MYSQL_DATABASE: nextcloud + MYSQL_USER: nextcloud + MYSQL_HOST: appRobot_nextcloud_db + volumes: + - /home/chk/Documents/appRobotNextCloud/nextcloud:/var/www/html + - /home/chk/Documents:/mnt/server:rw + depends_on: + - appRobot_nextcloud_db + ports: + - "9183:80" + + + appRobot_AccessBase: + image: node:20-bullseye + # Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen) + container_name: appRobot_AccessBase + working_dir: /app + volumes: + - /home/chk/Documents/appRobotControlScara:/app + environment: + - FluidNcHost=192.168.0.183 #fluidncbase.local + - FluidNcPort=80 + - PORT=443 + command: > + /bin/bash -lc " + npm ci || npm install && + node server/server.js + " + restart: unless-stopped + + + appRobot_AccessEllbow: + image: node:20-bullseye + # Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen) + container_name: appRobot_AccessEllbow + working_dir: /app + volumes: + - /home/chk/Documents/appRobotControlScara:/app + environment: + - FluidNcHost=192.168.0.202 #fluidncellbow.local + - FluidNcPort=80 + - PORT=443 + command: > + /bin/bash -lc " + npm ci || npm install && + node server/server.js + " + restart: unless-stopped + + appRobot_AccessHand: + image: node:20-bullseye + # Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen) + container_name: appRobot_AccessHand + working_dir: /app + volumes: + - /home/chk/Documents/appRobotControlScara:/app + environment: + - FluidNcHost=192.168.0.250 #fluidnchand.local + - FluidNcPort=80 + - PORT=443 + command: > + /bin/bash -lc " + npm ci || npm install && + node server/server.js + " + restart: unless-stopped + + + appRobot_CodeServer: + image: lscr.io/linuxserver/code-server + container_name: appRobot_CodeServer + restart: unless-stopped + environment: + PUID: "1000" + PGID: "1000" + TZ: "Europe/Rome" + AUTH: "none" + PASSWORD: "Albula60" + ports: + - "9743:8443" + volumes: + - /home/chk/Documents/appRobotDriver:/workspace/appRobotDriver + - /home/chk/Documents/appRobotHoming:/workspace/appRobotHoming + - /home/chk/Documents/appRobotControl:/workspace/appRobotControl + - /home/chk/Documents/AppRobotVideo/public/snapshots:/workspace/appRobotHoming/public/snapshots + working_dir: /workspace + + yolo: + image: ultralytics/ultralytics:latest + container_name: appRobot_Yolo + working_dir: /app + volumes: + - /home/chk/Documents/appRobotYolo:/app + - /home/chk/Documents/AppRobotVideo/public/snapshots:/snapshots + command: python watcher.py + restart: unless-stopped + + + + + webcam: + build: + context: /tmp + dockerfile_inline: | + FROM node:lts-bookworm-slim + RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /usr/src/app + EXPOSE 8444 + image: approbotwebcam:latest + container_name: AppRobotWebcam + restart: unless-stopped + # 8444 am Host veröffentlicht → direkter LAN-Zugriff (http://:8444) bleibt. + # Wenn ALLES über den Proxy läuft, diesen ports-Block entfernen → proxy-only. + ports: + - "8444:8444" + command: sh -c "npm install --omit=dev && node server.js" + volumes: + - ${APP_PATH:-.}:/usr/src/app + devices: + # by-id (Host) → /dev/videoN (Container) – stabil über Reboots und USB-Re-Plugs. + # Rechte Seite = Pfad den cameras.json + FFmpeg im Container sehen. + - /dev/v4l/by-id/usb-046d_0825_3BB3FE20-video-index0:/dev/video0 # cam0 – C270 (046d:0825) + - /dev/v4l/by-id/usb-046d_081b_342D4F40-video-index0:/dev/video2 # cam1 – C270 (046d:081b) + - /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_9C5591DF-video-index0:/dev/video4 # cam2 – C920 + group_add: + - video + environment: + - NODE_ENV=production + - PORT=8444 + +networks: + default: + driver: bridge + diff --git a/docker-compose-robot.yaml b/docker-compose-robot.yaml new file mode 100644 index 0000000..e69de29