68 lines
1.7 KiB
Markdown
68 lines
1.7 KiB
Markdown
# Portainer Stack Backup Script
|
|
|
|
This script connects to a Portainer instance and exports all stacks with their configurations, environment variables, and docker-compose files.
|
|
|
|
## Prerequisites
|
|
|
|
- `curl` (usually pre-installed on macOS)
|
|
- `jq` for JSON processing: `brew install jq`
|
|
|
|
## Usage
|
|
|
|
1. Make sure the script is executable:
|
|
```bash
|
|
chmod +x portainer-backup.sh
|
|
```
|
|
|
|
2. Run the script:
|
|
```bash
|
|
./portainer-backup.sh
|
|
```
|
|
|
|
3. When prompted, enter:
|
|
- Portainer URL (e.g., `http://localhost:9000`)
|
|
- Username
|
|
- Password
|
|
|
|
Alternatively, you can edit the script and set these variables at the top:
|
|
```bash
|
|
PORTAINER_URL="http://your-portainer-url:9000"
|
|
USERNAME="your-username"
|
|
PASSWORD="your-password"
|
|
```
|
|
|
|
## Output
|
|
|
|
The script creates a `portainer-stacks-backup` directory containing:
|
|
|
|
```
|
|
portainer-stacks-backup/
|
|
├── stack-name-1/
|
|
│ ├── stack-info.json # Complete stack information
|
|
│ ├── environment-variables.json # Environment variables as JSON
|
|
│ ├── .env # Environment variables in .env format
|
|
│ ├── docker-compose.yml # Stack's compose file
|
|
│ └── metadata.txt # Human-readable metadata
|
|
├── stack-name-2/
|
|
│ └── ...
|
|
```
|
|
|
|
## What gets backed up
|
|
|
|
For each stack:
|
|
- Complete stack configuration (JSON format)
|
|
- Environment variables (both JSON and .env formats)
|
|
- Docker Compose file content
|
|
- Metadata (creation date, status, type, etc.)
|
|
|
|
## Error Handling
|
|
|
|
The script includes error handling for:
|
|
- Missing dependencies
|
|
- Authentication failures
|
|
- Network connectivity issues
|
|
- API errors
|
|
|
|
## Security Note
|
|
|
|
The script handles authentication via JWT tokens. Passwords are prompted securely (hidden input) if not set in the script. |