Host-Agent Installation (agent/)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016h8oztcj2AdAUDyAKeXf6W
This commit is contained in:
Claude
2026-10-13 20:19:26 +00:00
parent 69ed10e2c3
commit aa8c3e4847
2 changed files with 59 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
# Host-Agent fuer weitere Standorte (ADR GC-030, Stufe 1: nur lesende Telemetrie).
# Eigenes Compose-Projekt, beruehrt nichts anderes auf dem Server.
# Der Agent baut die Verbindung zum Hub selbst auf (ausgehend); es werden keine Ports geoeffnet.
# Docker-Zugriff nur ueber einen Socket-Proxy mit ausschliesslich lesendem CONTAINERS-Endpunkt.
name: ${GC_PROJECT:-gc-agent}
services:
socket-proxy:
image: tecnativa/docker-socket-proxy:0.2.0
container_name: ${GC_PROJECT:-gc-agent}-socket-proxy
restart: unless-stopped
environment:
CONTAINERS: "1"
POST: "0"
INFO: "0"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks: [agent]
agent:
image: git1.mrmoe.de/mscadm/gc-hostagent:latest
container_name: ${GC_PROJECT:-gc-agent}
restart: unless-stopped
depends_on: [socket-proxy]
environment:
GC_HUB_URL: "${GC_HUB_URL:?GC_HUB_URL setzen}"
GC_AGENT_TOKEN: "${GC_AGENT_TOKEN:-}"
GC_AGENT_ALLOW_PLAIN: "${GC_AGENT_ALLOW_PLAIN:-0}"
GC_DOCKER_URL: "http://socket-proxy:2375"
GC_AGENT_DATA: "/data"
volumes:
- agent-data:/data
read_only: true
cap_drop: [ALL]
security_opt: ["no-new-privileges:true"]
networks: [agent]
networks:
agent:
volumes:
agent-data:
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
# Host-Agent an einem weiteren Standort installieren (ein Aufruf, idempotent).
# GC_HUB_URL=https://dashboard.beispiel.de GC_AGENT_TOKEN=<Einmal-Token aus dem Dashboard> sh join-agent.sh
# Das Token gilt 15 Minuten und nur einmal; danach nutzt der Agent seinen eigenen Schluessel (Volume).
# Projekt: gc-agent (GC_PROJECT aenderbar). Beruehrt keine anderen Container, Netze oder Systemeinstellungen.
set -eu
: "${GC_HUB_URL:?GC_HUB_URL setzen}"
P="${GC_PROJECT:-gc-agent}"
D="${GC_DIR:-$HOME/$P}"
mkdir -p "$D" && cd "$D"
curl -fsSL https://git1.mrmoe.de/mscadm/ground-control-install/raw/branch/main/agent/docker-compose.yml -o docker-compose.yml
umask 077
printf 'GC_PROJECT=%s\nGC_HUB_URL=%s\nGC_AGENT_TOKEN=%s\nGC_AGENT_ALLOW_PLAIN=%s\n' "$P" "$GC_HUB_URL" "${GC_AGENT_TOKEN:-}" "${GC_AGENT_ALLOW_PLAIN:-0}" > .env
export DOCKER_CONFIG="$D/.docker"; mkdir -p "$DOCKER_CONFIG"
docker compose pull -q
docker compose up -d
# Das Token wird nach der Anmeldung nicht mehr benoetigt und aus der Konfiguration entfernt.
sleep 8
sed -i 's/^GC_AGENT_TOKEN=.*/GC_AGENT_TOKEN=/' .env
docker compose logs --tail 5 agent
echo "Fertig: Der Standort erscheint im Dashboard unter Standorte."