Make gateway-bound UIs reproducible
This commit is contained in:
@@ -33,7 +33,8 @@ werden keine zweiten Instanzen dieser Dienste angelegt.
|
|||||||
Portainer läuft als separater, optionaler Verwaltungscontainer
|
Portainer läuft als separater, optionaler Verwaltungscontainer
|
||||||
`mike-ai-portainer`, teilt den Netzwerk-Namespace des WireGuard-Gateways und
|
`mike-ai-portainer`, teilt den Netzwerk-Namespace des WireGuard-Gateways und
|
||||||
ist unter `https://192.168.1.212:9443` erreichbar. Seine Einstellungen liegen
|
ist unter `https://192.168.1.212:9443` erreichbar. Seine Einstellungen liegen
|
||||||
im Docker-Volume `portainer_data`. Portainer beobachtet beziehungsweise
|
im Docker-Volume `portainer_data`, das vom Athena-Backup mitgesichert wird.
|
||||||
|
Portainer beobachtet beziehungsweise
|
||||||
verwaltet Docker, ist aber keine Abhängigkeit des Inferenz-Stacks.
|
verwaltet Docker, ist aber keine Abhängigkeit des Inferenz-Stacks.
|
||||||
|
|
||||||
## Standardbefehle
|
## Standardbefehle
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ services:
|
|||||||
- /tmp:size=16m,mode=1777
|
- /tmp:size=16m,mode=1777
|
||||||
volumes:
|
volumes:
|
||||||
- "${WIREGUARD_CONFIG_FILE:-/etc/mike-ai/wireguard/fritz-athena.conf}:/run/secrets/fritz-athena.conf:ro"
|
- "${WIREGUARD_CONFIG_FILE:-/etc/mike-ai/wireguard/fritz-athena.conf}:/run/secrets/fritz-athena.conf:ro"
|
||||||
|
# Namespace-sharing services cannot publish ports themselves. The owner
|
||||||
|
# must keep these bindings so a gateway recreation cannot hide their UIs.
|
||||||
|
ports:
|
||||||
|
- "8099:8099"
|
||||||
|
- "9443:9443"
|
||||||
networks:
|
networks:
|
||||||
frontend:
|
frontend:
|
||||||
ipv4_address: 172.30.10.254
|
ipv4_address: 172.30.10.254
|
||||||
@@ -750,6 +755,20 @@ services:
|
|||||||
retries: 12
|
retries: 12
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
|
portainer:
|
||||||
|
image: ${PORTAINER_IMAGE:-portainer/portainer-ce@sha256:511f3f06c96fe3b993ebeaafde311c1959cae73a7ef825dba6397d51b450dffa}
|
||||||
|
container_name: mike-ai-portainer
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: "service:wireguard-gateway"
|
||||||
|
command: [--no-setup-token]
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- portainer-data:/data
|
||||||
|
depends_on:
|
||||||
|
wireguard-gateway:
|
||||||
|
condition: service_healthy
|
||||||
|
security_opt: ["no-new-privileges:true"]
|
||||||
|
|
||||||
backup:
|
backup:
|
||||||
image: ${BACKUP_IMAGE:-offen/docker-volume-backup@sha256:19102d8e59eb1d598cf8c647c2b21100abaadc5a1c808ac643fa612e323c3013}
|
image: ${BACKUP_IMAGE:-offen/docker-volume-backup@sha256:19102d8e59eb1d598cf8c647c2b21100abaadc5a1c808ac643fa612e323c3013}
|
||||||
container_name: mike-ai-backup
|
container_name: mike-ai-backup
|
||||||
@@ -768,6 +787,7 @@ services:
|
|||||||
- piper-data:/backup/volumes/piper-data:ro
|
- piper-data:/backup/volumes/piper-data:ro
|
||||||
- router-state:/backup/volumes/router-state:ro
|
- router-state:/backup/volumes/router-state:ro
|
||||||
- router-images:/backup/volumes/router-images:ro
|
- router-images:/backup/volumes/router-images:ro
|
||||||
|
- portainer-data:/backup/volumes/portainer-data:ro
|
||||||
security_opt: ["no-new-privileges:true"]
|
security_opt: ["no-new-privileges:true"]
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
@@ -794,3 +814,5 @@ volumes:
|
|||||||
piper-data:
|
piper-data:
|
||||||
router-state:
|
router-state:
|
||||||
router-images:
|
router-images:
|
||||||
|
portainer-data:
|
||||||
|
name: portainer_data
|
||||||
|
|||||||
+3
-4
@@ -15,10 +15,9 @@ Sie bleiben auf der Daten-SSD oder werden anhand der gepinnten Angaben in
|
|||||||
`config/install.env.example` erneut geladen. Die Dashboard-Historie liegt
|
`config/install.env.example` erneut geladen. Die Dashboard-Historie liegt
|
||||||
dauerhaft unter `/data/llama-dashboard`.
|
dauerhaft unter `/data/llama-dashboard`.
|
||||||
|
|
||||||
Der optionale Portainer-Container gehört nicht zum Athena-Kern. Seine lokale
|
Portainers lokale Konfiguration liegt im Docker-Volume `portainer_data` und
|
||||||
Konfiguration liegt im Docker-Volume `portainer_data`; ohne dessen Sicherung
|
wird zusammen mit den übrigen nicht reproduzierbaren Volumes gesichert und
|
||||||
kann Portainer jederzeit neu angelegt und einmalig eingerichtet werden, ohne
|
wiederhergestellt.
|
||||||
Router, Modelle oder Dashboard-Daten zu verlieren.
|
|
||||||
|
|
||||||
### Neuaufbau
|
### Neuaufbau
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -491,7 +491,9 @@ build_and_start() {
|
|||||||
llama-fast llama-medium llama-large llama-ultra llama-uncensored
|
llama-fast llama-medium llama-large llama-ultra llama-uncensored
|
||||||
docker compose --env-file "$SECRETS_DIR/stack.env" --profile image create image-worker
|
docker compose --env-file "$SECRETS_DIR/stack.env" --profile image create image-worker
|
||||||
docker compose --env-file "$SECRETS_DIR/stack.env" up -d --build \
|
docker compose --env-file "$SECRETS_DIR/stack.env" up -d --build \
|
||||||
wireguard-gateway xtts piper tts-gateway profile-controller router llama-dashboard backup
|
wireguard-gateway xtts piper tts-gateway profile-controller router llama-dashboard portainer backup
|
||||||
|
docker compose --env-file "$SECRETS_DIR/stack.env" up -d \
|
||||||
|
--no-deps --force-recreate llama-dashboard portainer
|
||||||
if [[ ${WIREGUARD_MODE:-container} == container ]]; then
|
if [[ ${WIREGUARD_MODE:-container} == container ]]; then
|
||||||
systemctl restart mike-ai-container-vpn-guard.service
|
systemctl restart mike-ai-container-vpn-guard.service
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -49,9 +49,18 @@ case "$command" in
|
|||||||
[[ $# -eq 0 ]] || { echo "core akzeptiert keine weiteren Services" >&2; exit 2; }
|
[[ $# -eq 0 ]] || { echo "core akzeptiert keine weiteren Services" >&2; exit 2; }
|
||||||
run "$ROOT_DIR/platform/mcp/install-tools.sh"
|
run "$ROOT_DIR/platform/mcp/install-tools.sh"
|
||||||
run "${compose[@]}" up -d --build \
|
run "${compose[@]}" up -d --build \
|
||||||
wireguard-gateway piper xtts tts-gateway profile-controller router llama-dashboard backup
|
wireguard-gateway piper xtts tts-gateway profile-controller router llama-dashboard portainer backup
|
||||||
|
# network_mode: service:wireguard-gateway stores the gateway container
|
||||||
|
# ID. Rebind namespace consumers after every gateway replacement.
|
||||||
|
run "${compose[@]}" up -d --no-deps --force-recreate llama-dashboard portainer
|
||||||
else
|
else
|
||||||
run "${compose[@]}" up -d --build --no-deps "$@"
|
run "${compose[@]}" up -d --build --no-deps "$@"
|
||||||
|
for service in "$@"; do
|
||||||
|
if [[ $service == wireguard-gateway ]]; then
|
||||||
|
run "${compose[@]}" up -d --no-deps --force-recreate llama-dashboard portainer
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
purge-legacy)
|
purge-legacy)
|
||||||
|
|||||||
+2
-1
@@ -60,7 +60,7 @@ backup_root=$work/backup
|
|||||||
[[ -d $backup_root/volumes ]] || die "Backup enthält keine Docker-Volumes."
|
[[ -d $backup_root/volumes ]] || die "Backup enthält keine Docker-Volumes."
|
||||||
|
|
||||||
# Stop only users of the restored volumes. WireGuard, SSH and networking stay up.
|
# Stop only users of the restored volumes. WireGuard, SSH and networking stay up.
|
||||||
for container in mike-ai-router mike-ai-profile-controller mike-ai-piper; do
|
for container in mike-ai-router mike-ai-profile-controller mike-ai-piper mike-ai-portainer; do
|
||||||
if [[ $(docker inspect -f '{{.State.Running}}' "$container" 2>/dev/null || true) == true ]]; then
|
if [[ $(docker inspect -f '{{.State.Running}}' "$container" 2>/dev/null || true) == true ]]; then
|
||||||
docker stop "$container" >/dev/null
|
docker stop "$container" >/dev/null
|
||||||
fi
|
fi
|
||||||
@@ -81,6 +81,7 @@ restore_volume() {
|
|||||||
restore_volume mike-ai_piper-data "$backup_root/volumes/piper-data"
|
restore_volume mike-ai_piper-data "$backup_root/volumes/piper-data"
|
||||||
restore_volume mike-ai_router-state "$backup_root/volumes/router-state"
|
restore_volume mike-ai_router-state "$backup_root/volumes/router-state"
|
||||||
restore_volume mike-ai_router-images "$backup_root/volumes/router-images"
|
restore_volume mike-ai_router-images "$backup_root/volumes/router-images"
|
||||||
|
restore_volume portainer_data "$backup_root/volumes/portainer-data"
|
||||||
|
|
||||||
cd "$ROOT_DIR"
|
cd "$ROOT_DIR"
|
||||||
./manage.sh deploy core
|
./manage.sh deploy core
|
||||||
|
|||||||
Reference in New Issue
Block a user