This commit is contained in:
2025-10-08 18:07:03 +02:00
parent fcac39a5ae
commit 37b1d6dafc
8 changed files with 50 additions and 50 deletions

View File

@@ -11,19 +11,19 @@ description: Export, import, and manage PostgreSQL databases
- **Cleanup utilities**: Keep only the latest dumps, remove old backups - **Cleanup utilities**: Keep only the latest dumps, remove old backups
- **Hook integration**: Custom pre/post operations for each database action - **Hook integration**: Custom pre/post operations for each database action
### 🪝 Extensibility ### <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/meat-hook.svg" alt="hook" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Extensibility
- **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import` - **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import`
- **Stack-specific logic**: Each stack can have unique operational requirements - **Stack-specific logic**: Each stack can have unique operational requirements
- **Environment access**: Hooks inherit all environment variables - **Environment access**: Hooks inherit all environment variables
- **Dry-run aware**: Test hook execution without side effects - **Dry-run aware**: Test hook execution without side effects
### 🌐 Network Management ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/globe.svg" alt="network" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Network Management
- **Unified network**: All stacks communicate on a single Docker network - **Unified network**: All stacks communicate on a single Docker network
- **CLI overrides**: Change network on-the-fly without editing configs - **CLI overrides**: Change network on-the-fly without editing configs
- **Traefik integration**: Seamless reverse proxy setup with proper network awareness - **Traefik integration**: Seamless reverse proxy setup with proper network awareness
- **Multi-network support**: Special stacks can have additional internal networks - **Multi-network support**: Special stacks can have additional internal networks
### 🔧 Environment Control ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/wrench.svg" alt="tools" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Environment Control
- **Global overrides**: Set environment variables via CLI flags - **Global overrides**: Set environment variables via CLI flags
- **Layered configs**: Root `.env` + stack `.env` + CLI overrides - **Layered configs**: Root `.env` + stack `.env` + CLI overrides
- **Precedence rules**: CLI > Stack > Root configuration hierarchy - **Precedence rules**: CLI > Stack > Root configuration hierarchy

View File

@@ -77,14 +77,14 @@ The `sexy` stack uses hooks for Directus schema management:
### Hook Best Practices ### Hook Best Practices
**DO:** <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **DO:**
- Return 0 for success, 1 for failure - Return 0 for success, 1 for failure
- Use indented output: `echo " Message"` - Use indented output: `echo " Message"`
- Make non-critical operations return 0 - Make non-critical operations return 0
- Check container status before `docker exec` - Check container status before `docker exec`
- Test in dry-run mode first - Test in dry-run mode first
**DON'T:** <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/cancel.svg" alt="cancel" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **DON'T:**
- Assume containers are running - Assume containers are running
- Use blocking operations without timeouts - Use blocking operations without timeouts
- Forget error handling - Forget error handling

View File

@@ -25,5 +25,5 @@ chmod +x kompose.sh
# Export all databases # Export all databases
./kompose.sh "*" db:export ./kompose.sh "*" db:export
# That's it! 🎉 # That's it! <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/firework-rocket.svg" alt="celebration" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;">
``` ```

View File

@@ -7,7 +7,7 @@ description: Common issues and solutions
### Common Issues ### Common Issues
#### 🚫 404 Error from Traefik #### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/cancel.svg" alt="error" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> 404 Error from Traefik
**Problem:** Websites return 404 even though containers are running **Problem:** Websites return 404 even though containers are running
@@ -33,7 +33,7 @@ http://your-server:8080
docker inspect blog_app | grep traefik docker inspect blog_app | grep traefik
``` ```
#### 💾 Database Import Fails #### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/save.svg" alt="database" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Database Import Fails
**Problem:** `db:import` command fails **Problem:** `db:import` command fails
@@ -55,7 +55,7 @@ ls -lh news/*.sql
./kompose.sh news db:import 2>&1 | tee import.log ./kompose.sh news db:import 2>&1 | tee import.log
``` ```
#### 🔌 Container Won't Connect to Network #### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/plug.svg" alt="connection" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Container Won't Connect to Network
**Problem:** Container fails to join kompose network **Problem:** Container fails to join kompose network
@@ -70,7 +70,7 @@ docker network create kompose
./kompose.sh "*" up -d ./kompose.sh "*" up -d
``` ```
#### 🪝 Hooks Not Executing #### <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/meat-hook.svg" alt="hook" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Hooks Not Executing
**Problem:** Custom hooks aren't running **Problem:** Custom hooks aren't running

View File

@@ -11,40 +11,40 @@ description: Learn about Kompose, your Docker Compose Symphony Conductor for man
### Why Kompose? ### Why Kompose?
🎯 **One Command to Rule Them All** - Manage dozens of stacks with a single command <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/archery-target.svg" alt="target" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **One Command to Rule Them All** - Manage dozens of stacks with a single command
🔄 **Database Wizardry** - Export, import, and clean up PostgreSQL databases like a boss <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/reload.svg" alt="reload" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Database Wizardry** - Export, import, and clean up PostgreSQL databases like a boss
🎪 **Hook System** - Extend functionality with custom pre/post operation hooks <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/circus-tent.svg" alt="tent" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Hook System** - Extend functionality with custom pre/post operation hooks
🌐 **Network Maestro** - Smart network management with CLI overrides <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/globe.svg" alt="network" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Network Maestro** - Smart network management with CLI overrides
🔐 **Environment Juggler** - Override any environment variable on the fly <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/padlock.svg" alt="lock" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Environment Juggler** - Override any environment variable on the fly
🎨 **Beautiful Output** - Color-coded logs and status indicators <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/paint-brush.svg" alt="colors" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Beautiful Output** - Color-coded logs and status indicators
🧪 **Dry-Run Mode** - Test changes before applying them <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/round-bottom-flask.svg" alt="test" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Dry-Run Mode** - Test changes before applying them
### 🎼 Stack Management ### <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/musical-notes.svg" alt="music" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Stack Management
- **Pattern-based selection**: Target stacks with globs, comma-separated lists, or wildcards - **Pattern-based selection**: Target stacks with globs, comma-separated lists, or wildcards
- **Bulk operations**: Execute commands across multiple stacks simultaneously - **Bulk operations**: Execute commands across multiple stacks simultaneously
- **Status monitoring**: Visual feedback with color-coded success/failure indicators - **Status monitoring**: Visual feedback with color-coded success/failure indicators
- **Smart filtering**: Include/exclude stacks with flexible pattern matching - **Smart filtering**: Include/exclude stacks with flexible pattern matching
### 💾 Database Operations ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/save.svg" alt="database" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Database Operations
- **Automated backups**: Export PostgreSQL databases with timestamped dumps - **Automated backups**: Export PostgreSQL databases with timestamped dumps
- **Smart imports**: Auto-detect latest dumps or specify exact files - **Smart imports**: Auto-detect latest dumps or specify exact files
- **Drop & recreate**: Safe database import with connection termination - **Drop & recreate**: Safe database import with connection termination
- **Cleanup utilities**: Keep only the latest dumps, remove old backups - **Cleanup utilities**: Keep only the latest dumps, remove old backups
- **Hook integration**: Custom pre/post operations for each database action - **Hook integration**: Custom pre/post operations for each database action
### 🪝 Extensibility ### <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/meat-hook.svg" alt="hook" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Extensibility
- **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import` - **Custom hooks**: Define `pre_db_export`, `post_db_export`, `pre_db_import`, `post_db_import`
- **Stack-specific logic**: Each stack can have unique operational requirements - **Stack-specific logic**: Each stack can have unique operational requirements
- **Environment access**: Hooks inherit all environment variables - **Environment access**: Hooks inherit all environment variables
- **Dry-run aware**: Test hook execution without side effects - **Dry-run aware**: Test hook execution without side effects
### 🌐 Network Management ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/globe.svg" alt="network" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Network Management
- **Unified network**: All stacks communicate on a single Docker network - **Unified network**: All stacks communicate on a single Docker network
- **CLI overrides**: Change network on-the-fly without editing configs - **CLI overrides**: Change network on-the-fly without editing configs
- **Traefik integration**: Seamless reverse proxy setup with proper network awareness - **Traefik integration**: Seamless reverse proxy setup with proper network awareness
- **Multi-network support**: Special stacks can have additional internal networks - **Multi-network support**: Special stacks can have additional internal networks
### 🔧 Environment Control ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/wrench.svg" alt="tools" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Environment Control
- **Global overrides**: Set environment variables via CLI flags - **Global overrides**: Set environment variables via CLI flags
- **Layered configs**: Root `.env` + stack `.env` + CLI overrides - **Layered configs**: Root `.env` + stack `.env` + CLI overrides
- **Precedence rules**: CLI > Stack > Root configuration hierarchy - **Precedence rules**: CLI > Stack > Root configuration hierarchy

View File

@@ -116,7 +116,7 @@ Import PostgreSQL database from SQL dump file.
./kompose.sh <stack> db:import path/to/dump.sql ./kompose.sh <stack> db:import path/to/dump.sql
``` ```
**⚠️ WARNING:** Drops and recreates the database! **<img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/warning-sign.svg" alt="warning" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> WARNING:** Drops and recreates the database!
### db:cleanup ### db:cleanup

View File

@@ -107,17 +107,17 @@ DB_HOST=news-postgres # Overrides root
### Security ### Security
- Use strong, random passwords - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Use strong, random passwords
- Never commit `.env` files to version control - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Never commit `.env` files to version control
- Use `.env.example` as template - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Use `.env.example` as template
- Rotate secrets regularly - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Rotate secrets regularly
### Organization ### Organization
- Document custom variables - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Document custom variables
- Group related variables - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Group related variables
- Use consistent naming - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Use consistent naming
- Keep defaults in root `.env` - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/check-mark.svg" alt="check" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Keep defaults in root `.env`
## Generating Secrets ## Generating Secrets

View File

@@ -3,7 +3,7 @@ title: Auth Stack - The Bouncer at Your Digital Club
description: "You shall not pass... without proper credentials!" description: "You shall not pass... without proper credentials!"
--- ---
# 🔐 Auth Stack - The Bouncer at Your Digital Club # <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/padlock.svg" alt="lock" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Auth Stack - The Bouncer at Your Digital Club
> *"You shall not pass... without proper credentials!"* - Keycloak, probably > *"You shall not pass... without proper credentials!"* - Keycloak, probably
@@ -13,18 +13,18 @@ This stack is your authentication and identity management powerhouse. Think of i
## The Star of the Show ## The Star of the Show
### 🎭 Keycloak ### <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/theater.svg" alt="theater" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Keycloak
**Container**: `auth_keycloak` **Container**: `auth_keycloak`
**Image**: `quay.io/keycloak/keycloak:latest` **Image**: `quay.io/keycloak/keycloak:latest`
**Home**: https://auth.pivoine.art **Home**: https://auth.pivoine.art
Keycloak is like having a Swiss Army knife for authentication. It handles: Keycloak is like having a Swiss Army knife for authentication. It handles:
- 👤 **Single Sign-On (SSO)**: Log in once, access everything. Magic! - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/person.svg" alt="user" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Single Sign-On (SSO)**: Log in once, access everything. Magic!
- 🎫 **Identity Brokering**: Connect with Google, GitHub, and other OAuth providers - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/ticket.svg" alt="ticket" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Identity Brokering**: Connect with Google, GitHub, and other OAuth providers
- 👥 **User Management**: Keep track of who's who in your digital zoo - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/three-friends.svg" alt="users" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **User Management**: Keep track of who's who in your digital zoo
- 🔒 **OAuth 2.0 & OpenID Connect**: Industry-standard security protocols (the fancy stuff) - <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/locked-fortress.svg" alt="security" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **OAuth 2.0 & OpenID Connect**: Industry-standard security protocols (the fancy stuff)
- 🛡️ **Authorization Services**: Fine-grained control over who can do what - <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/shield.svg" alt="shield" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Authorization Services**: Fine-grained control over who can do what
## Configuration Breakdown ## Configuration Breakdown
@@ -53,11 +53,11 @@ Running in `edge` mode because we're living on the edge (behind Traefik)! This t
| Variable | What It Does | Cool Factor | | Variable | What It Does | Cool Factor |
|----------|-------------|-------------| |----------|-------------|-------------|
| `KC_DB` | Database type (postgres) | 🐘 Elephants never forget | | `KC_DB` | Database type (postgres) | <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/elephant.svg" alt="elephant" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Elephants never forget |
| `KC_DB_URL` | JDBC connection string | 🔌 The digital umbilical cord | | `KC_DB_URL` | JDBC connection string | <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/plug.svg" alt="plug" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> The digital umbilical cord |
| `KC_HOSTNAME` | Public-facing URL | 🌐 Your internet identity | | `KC_HOSTNAME` | Public-facing URL | <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/globe.svg" alt="globe" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Your internet identity |
| `KC_PROXY` | Proxy mode setting | 🎭 Trust the middleman | | `KC_PROXY` | Proxy mode setting | <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/theater.svg" alt="proxy" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Trust the middleman |
| `KC_FEATURES` | Enabled features (docker) | 🐳 Whale hello there! | | `KC_FEATURES` | Enabled features (docker) | <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/whale-tail.svg" alt="docker" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Whale hello there! |
## Ports & Networking ## Ports & Networking
@@ -119,13 +119,13 @@ A: Clear your browser cache, Keycloak loves to cache things
**Q: Database connection issues?** **Q: Database connection issues?**
A: Ensure the `data` stack is running and healthy A: Ensure the `data` stack is running and healthy
## Security Notes 🔒 ## Security Notes <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/locked-fortress.svg" alt="security" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;">
- 🚨 **Change the default admin password** (seriously, do it now) - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/siren.svg" alt="alert" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> **Change the default admin password** (seriously, do it now)
- 🔐 Database credentials are shared via root `.env` - <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/padlock.svg" alt="lock" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Database credentials are shared via root `.env`
- 🌐 Always access via HTTPS in production - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/globe.svg" alt="globe" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Always access via HTTPS in production
- 📝 Enable audit logging for compliance - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/scroll-unfurled.svg" alt="log" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Enable audit logging for compliance
- 🎯 Use realms to separate different applications/teams - <img src="https://game-icons.net/icons/000000/transparent/1x1/delapouite/archery-target.svg" alt="target" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;"> Use realms to separate different applications/teams
## Fun Facts ## Fun Facts
@@ -142,4 +142,4 @@ A: Ensure the `data` stack is running and healthy
--- ---
*Remember: With great authentication power comes great responsibility. Don't be the person who uses "admin/admin" in production.* 🦸‍♂️ *Remember: With great authentication power comes great responsibility. Don't be the person who uses "admin/admin" in production.* <img src="https://game-icons.net/icons/000000/transparent/1x1/lorc/superhero.svg" alt="hero" style="display:inline; width:1.2em; height:1.2em; vertical-align:-0.15em;">