78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
# Portainer Stack Backup Script
|
|
|
|
Dieses Skript sichert **alle Docker-Compose-Stacks aus Portainer** über die Portainer-API.
|
|
Es exportiert **immer die aktuell aktive Compose-Version** jedes Stacks und speichert sie
|
|
übersichtlich nach Stack-Namen.
|
|
|
|
Optional kann das Ergebnis zusätzlich als `tar.gz` archiviert werden.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- Backup **aller Portainer Stacks**
|
|
- Export der **aktuellen** `docker-compose.yml` je Stack
|
|
- Optionales `tar.gz`-Archiv
|
|
- Geeignet für:
|
|
- manuelle Nutzung
|
|
- Cronjobs
|
|
- Server / Docker-Hosts
|
|
|
|
---
|
|
|
|
## Voraussetzungen
|
|
|
|
Auf dem System müssen folgende Tools vorhanden sein:
|
|
|
|
| Tool | Benötigt |
|
|
|----|----|
|
|
| `bash` | ja |
|
|
| `curl` | ja |
|
|
| `jq` | ja |
|
|
| `tar` | **nur wenn** `CREATE_ARCHIVE=1` |
|
|
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
Skript ausführbar machen:
|
|
|
|
```bash
|
|
chmod +x shell_portainer_stack_backup.sh
|
|
```
|
|
|
|
---
|
|
|
|
## Konfiguration (`settings.env`)
|
|
|
|
Die Datei `settings.env` muss **im selben Verzeichnis** wie das Skript liegen.
|
|
|
|
### Beispiel:
|
|
|
|
```bash
|
|
# Portainer connection
|
|
PORTAINER_URL="https://192.168.178.25:9443"
|
|
|
|
# Portainer API key
|
|
API_KEY="ptr_xxxxxxxxxxxxxxxxxxxxxx"
|
|
|
|
# Base output directory
|
|
OUT_DIR="/home/thorsten/Portainer_Backup"
|
|
|
|
# Create archive?
|
|
# 1 = create tar.gz and remove directory afterwards
|
|
# 0 = keep directory only
|
|
CREATE_ARCHIVE=1
|
|
```
|
|
|
|
## Hinweise & Einschränkungen
|
|
|
|
- Das Skript sichert **nur die Stack-Definitionen**, **keine Volumes / Daten**
|
|
- Git-basierte Stacks werden als **aktuelle, aufgelöste Compose-Datei** gesichert
|
|
- Der API-Key benötigt mindestens:
|
|
- Zugriff auf Stacks
|
|
- Zugriff auf das jeweilige Endpoint
|
|
|
|
---
|