Compare commits
2 commits
54caa66067
...
ba5b3e4dad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba5b3e4dad | ||
|
|
c3e26bd98c |
|
|
@ -34,34 +34,53 @@ services:
|
|||
# Traefik Reverse Proxy Labels
|
||||
# -----------------------------
|
||||
labels:
|
||||
# Enable Traefik
|
||||
# ──────────────────────────────
|
||||
# Enable Traefik for this container
|
||||
# ──────────────────────────────
|
||||
- "traefik.enable=true"
|
||||
|
||||
# HTTP → HTTPS redirect (recommended)
|
||||
# ──────────────────────────────
|
||||
# HTTP → HTTPS redirect router
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.routers.mealie-http.entrypoints=web"
|
||||
- "traefik.http.routers.mealie-http.rule=Host(`mealie.rozic-dev.com`)"
|
||||
- "traefik.http.routers.mealie-http.middlewares=redirect-to-https"
|
||||
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
||||
- "traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true"
|
||||
- "traefik.http.routers.mealie-http.middlewares=mealie-redirect"
|
||||
|
||||
# HTTPS router
|
||||
# ──────────────────────────────
|
||||
# HTTPS router (the real one)
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.routers.mealie.entrypoints=websecure"
|
||||
- "traefik.http.routers.mealie.rule=Host(`mealie.rozic-dev.com`)"
|
||||
- "traefik.http.routers.mealie.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.mealie.tls=true"
|
||||
- "traefik.http.routers.mealie.tls.certresolver=letsencrypt" # ← change only if your resolver has a different name
|
||||
- "traefik.http.routers.mealie.middlewares=mealie-chain"
|
||||
|
||||
# Service port
|
||||
# ──────────────────────────────
|
||||
# Service (where Traefik forwards the traffic)
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.services.mealie.loadbalancer.server.port=9000"
|
||||
|
||||
# Security headers middleware (improved)
|
||||
- "traefik.http.middlewares.mealie-security.headers.customResponseHeaders.X-Robots-Tag=none"
|
||||
# ──────────────────────────────
|
||||
# Middleware: redirect HTTP → HTTPS
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.middlewares.mealie-redirect.redirectscheme.scheme=https"
|
||||
- "traefik.http.middlewares.mealie-redirect.redirectscheme.permanent=true"
|
||||
|
||||
# ──────────────────────────────
|
||||
# Middleware: security headers
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.middlewares.mealie-security.headers.stsSeconds=63072000"
|
||||
- "traefik.http.middlewares.mealie-security.headers.stsIncludeSubdomains=true"
|
||||
- "traefik.http.middlewares.mealie-security.headers.stsPreload=true"
|
||||
- "traefik.http.middlewares.mealie-security.headers.contentTypeNosniff=true"
|
||||
- "traefik.http.middlewares.mealie-security.headers.browserXssFilter=true"
|
||||
- "traefik.http.middlewares.mealie-security.headers.referrerPolicy=same-origin"
|
||||
- "traefik.http.routers.mealie.middlewares=mealie-security"
|
||||
- "traefik.http.middlewares.mealie-security.headers.customResponseHeaders.X-Robots-Tag=none"
|
||||
|
||||
# ──────────────────────────────
|
||||
# Chain: redirect + security headers (applied only to HTTPS router)
|
||||
# ──────────────────────────────
|
||||
- "traefik.http.middlewares.mealie-chain.chain.middlewares=mealie-security"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
|
|
@ -74,6 +93,7 @@ services:
|
|||
restart: always
|
||||
networks:
|
||||
- internal
|
||||
- traefik
|
||||
environment:
|
||||
POSTGRES_DB: mealie
|
||||
POSTGRES_USER: mealie
|
||||
|
|
|
|||
83
uninstall.sh
Executable file
83
uninstall.sh
Executable file
|
|
@ -0,0 +1,83 @@
|
|||
#!/bin/bash
|
||||
# ----------------------------------------------------
|
||||
# Docker Compose Uninstall/Cleanup Script for Mealie
|
||||
# ----------------------------------------------------
|
||||
# This script will stop and remove the Mealie services
|
||||
# defined in the current directory's docker-compose.yml.
|
||||
# It provides an option to permanently remove all associated data (volumes).
|
||||
|
||||
# Function to display messages
|
||||
log() {
|
||||
echo "=> $1"
|
||||
}
|
||||
|
||||
# --- Step 1: Confirmation ---
|
||||
log "WARNING: This script will stop and remove all running Docker containers and networks defined in the current docker-compose.yml file."
|
||||
log " This typically includes 'mealie' and 'mealie-postgres'."
|
||||
echo ""
|
||||
read -r -p "Are you sure you want to proceed? (y/N): " response
|
||||
case "$response" in
|
||||
[yY][eE][sS]|[yY])
|
||||
;;
|
||||
*)
|
||||
log "Operation cancelled by user."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Step 2: Stop and Remove Containers/Networks ---
|
||||
log "Stopping and removing containers and associated default networks..."
|
||||
# `docker compose down` stops the containers and removes the network.
|
||||
docker compose down
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
log "ERROR: 'docker compose down' failed. Check your Docker daemon status."
|
||||
exit 1
|
||||
fi
|
||||
log "Containers and network successfully removed."
|
||||
|
||||
# --- Step 3: Remove Volumes (Data) ---
|
||||
echo ""
|
||||
log "DATA REMOVAL STEP:"
|
||||
log "If you wish to remove ALL persistent data (e.g., PostgreSQL data, Mealie uploads/settings),"
|
||||
log "run the 'docker compose down' command again with the --volumes flag."
|
||||
log "!!! WARNING: THIS IS PERMANENT DATA LOSS !!!"
|
||||
echo ""
|
||||
read -r -p "Do you want to PERMANENTLY remove all associated volumes/data (y/N)? " remove_volumes_response
|
||||
case "$remove_volumes_response" in
|
||||
[yY][eE][sS]|[yY])
|
||||
log "Removing volumes now..."
|
||||
# The -v or --volumes flag removes named volumes declared in the 'volumes' section of the Compose file.
|
||||
# This step is performed after the initial `down` to ensure the volumes aren't in use.
|
||||
docker compose down --volumes
|
||||
if [ $? -eq 0 ]; then
|
||||
log "Volumes successfully removed. All Mealie data is gone."
|
||||
else
|
||||
log "ERROR: Volume removal failed."
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
log "Volumes retained. You can restart the application later with existing data."
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Step 4: Final Cleanup (Optional Images) ---
|
||||
echo ""
|
||||
log "OPTIONAL: Remove the downloaded Mealie and PostgreSQL images."
|
||||
read -r -p "Do you want to remove the downloaded Docker images (y/N)? " remove_images_response
|
||||
case "$remove_images_response" in
|
||||
[yY][eE][sS]|[yY])
|
||||
log "Removing images..."
|
||||
# Attempts to remove the images by their generated names, suppressing errors if they don't exist
|
||||
docker rmi mealie_mealie mealie_postgres 2>/dev/null
|
||||
log "Mealie and PostgreSQL images attempted for removal."
|
||||
;;
|
||||
*)
|
||||
log "Images retained."
|
||||
;;
|
||||
esac
|
||||
|
||||
rm -rf ./mealie-data/
|
||||
rm -rf ./mealie-pgdata/
|
||||
|
||||
log "UNINSTALL SCRIPT COMPLETE."
|
||||
Loading…
Reference in a new issue