refactor: rename postgresus to databasus

rebrand backup service following upstream project rename.
updates docker image to databasus/databasus:latest,
adds healthcheck, and includes cleanup function for
migration from old container name.
This commit is contained in:
Yury Kossakovsky
2025-12-28 11:00:07 -07:00
parent 8b16b37265
commit 944844871a
12 changed files with 79 additions and 54 deletions

View File

@@ -149,6 +149,7 @@ LT_PASSWORD_HASH=
USER_DOMAIN_NAME=
LETSENCRYPT_EMAIL=
COMFYUI_HOSTNAME=comfyui.yourdomain.com
DATABASUS_HOSTNAME=databasus.yourdomain.com
DIFY_HOSTNAME=dify.yourdomain.com
DOCLING_HOSTNAME=docling.yourdomain.com
FLOWISE_HOSTNAME=flowise.yourdomain.com
@@ -162,7 +163,6 @@ NEO4J_HOSTNAME=neo4j.yourdomain.com
NOCODB_HOSTNAME=nocodb.yourdomain.com
PADDLEOCR_HOSTNAME=paddleocr.yourdomain.com
PORTAINER_HOSTNAME=portainer.yourdomain.com
POSTGRESUS_HOSTNAME=postgresus.yourdomain.com
POSTIZ_HOSTNAME=postiz.yourdomain.com
PROMETHEUS_HOSTNAME=prometheus.yourdomain.com
QDRANT_HOSTNAME=qdrant.yourdomain.com
@@ -474,7 +474,7 @@ DIFY_EXPOSE_NGINX_PORT=8080
DIFY_EXPOSE_NGINX_SSL_PORT=9443
###########################################################################################
COMPOSE_PROFILES="n8n,portainer,monitoring,postgresus"
COMPOSE_PROFILES="n8n,portainer,monitoring,databasus"
PROMETHEUS_PASSWORD_HASH=
SEARXNG_PASSWORD_HASH=
COMFYUI_PASSWORD_HASH=

View File

@@ -18,6 +18,7 @@ All notable changes to this project are documented in this file.
- **n8n 2.1.0+ compatibility** - Switch to static ffmpeg binary (apk removed upstream in n8n 2.1.0)
### Changed
- **Postgresus → Databasus** - Rebrand to Databasus with new Docker image `databasus/databasus:latest`. Now supports PostgreSQL, MySQL, MariaDB, and MongoDB backups
- **Git sync** - Replaced `git pull` with `git fetch + reset` for more reliable updates (handles accidental local commits)
## [November 2025]

View File

@@ -81,9 +81,9 @@
reverse_proxy postiz:5000
}
# Postgresus
{$POSTGRESUS_HOSTNAME} {
reverse_proxy postgresus:4005
# Databasus
{$DATABASUS_HOSTNAME} {
reverse_proxy databasus:4005
}
# Letta

View File

@@ -94,7 +94,7 @@ The installer also makes the following powerful open-source tools **available fo
✅ [**Portainer**](https://www.portainer.io/) - A lightweight, secure web UI to manage your Docker environment (containers, images, volumes, networks) with ease.
✅ [**Postgresus**](https://github.com/RostislavDugin/postgresus) - PostgreSQL monitoring and automated backups with a self-hosted UI.
✅ [**Databasus**](https://github.com/databasus/databasus) - Database backups & monitoring with a self-hosted UI.
✅ [**Postiz**](https://postiz.com/) - An open-source social media scheduling and publishing platform.
@@ -179,20 +179,20 @@ After successful installation, your services are up and running! Here's how to g
- **n8n:** `n8n.yourdomain.com` (Log in with the email address you provided during installation and the initial password from the summary report. You may be prompted to change this password on first login.)
- **ComfyUI:** `comfyui.yourdomain.com` (Node-based Stable Diffusion UI)
- **Databasus:** `databasus.yourdomain.com`
- **Dify:** `dify.yourdomain.com` (AI application development platform with comprehensive LLMOps capabilities)
- **Docling:** `docling.yourdomain.com` (Universal document converter with REST API; web UI available at `/ui`)
- **Flowise:** `flowise.yourdomain.com` (Log in with the email address you provided during installation and the initial password from the summary report.)
- **Grafana:** `grafana.yourdomain.com`
- **Langfuse:** `langfuse.yourdomain.com`
- **LightRAG:** `lightrag.yourdomain.com`
- **Letta:** `letta.yourdomain.com`
- **LibreTranslate:** `translate.yourdomain.com`
- **LightRAG:** `lightrag.yourdomain.com`
- **Neo4j:** `neo4j.yourdomain.com`
- **NocoDB:** `nocodb.yourdomain.com`
- **Open WebUI:** `webui.yourdomain.com`
- **PaddleOCR:** `paddleocr.yourdomain.com`
- **Portainer:** `portainer.yourdomain.com` (Protected by Caddy basic auth; on first login, complete Portainer admin setup)
- **Postgresus:** `postgresus.yourdomain.com`
- **Postiz:** `postiz.yourdomain.com`
- **Prometheus:** `prometheus.yourdomain.com` (Typically used as a data source for Grafana)
- **Qdrant:** `qdrant.yourdomain.com`

View File

@@ -34,29 +34,29 @@ After creating the tunnel, go to the **Published application routes** tab to add
| Service | Public Hostname | Service URL | Auth Notes |
| ------------------ | ----------------------------- | ---------------------------- | ------------------- |
| **n8n** | n8n.yourdomain.com | `http://n8n:5678` | Built-in login |
| **Flowise** | flowise.yourdomain.com | `http://flowise:3001` | Built-in login |
| **Open WebUI** | webui.yourdomain.com | `http://open-webui:8080` | Built-in login |
| **Langfuse** | langfuse.yourdomain.com | `http://langfuse-web:3000` | Built-in login |
| **Grafana** | grafana.yourdomain.com | `http://grafana:3000` | Built-in login |
| **Prometheus** | prometheus.yourdomain.com | `http://prometheus:9090` | ⚠️ Loses Caddy auth |
| **Portainer** | portainer.yourdomain.com | `http://portainer:9000` | Built-in login |
| **Neo4j** | neo4j.yourdomain.com | `http://neo4j:7474` | Built-in login |
| **ComfyUI** | comfyui.yourdomain.com | `http://comfyui:8188` | ⚠️ Loses Caddy auth |
| **SearXNG** | searxng.yourdomain.com | `http://searxng:8080` | ⚠️ Loses Caddy auth |
| **Databasus** | databasus.yourdomain.com | `http://databasus:4005` | Built-in login |
| **Dify** ¹ | dify.yourdomain.com | `http://nginx:80` | Built-in login |
| **Docling** | docling.yourdomain.com | `http://docling:5001` | ⚠️ Loses Caddy auth |
| **Flowise** | flowise.yourdomain.com | `http://flowise:3001` | Built-in login |
| **Grafana** | grafana.yourdomain.com | `http://grafana:3000` | Built-in login |
| **Langfuse** | langfuse.yourdomain.com | `http://langfuse-web:3000` | Built-in login |
| **Letta** | letta.yourdomain.com | `http://letta:8283` | No auth |
| **Weaviate** | weaviate.yourdomain.com | `http://weaviate:8080` | API key recommended |
| **Qdrant** | qdrant.yourdomain.com | `http://qdrant:6333` | API key recommended |
| **LibreTranslate** | libretranslate.yourdomain.com | `http://libretranslate:5000` | ⚠️ Loses Caddy auth |
| **LightRAG** | lightrag.yourdomain.com | `http://lightrag:9621` | No auth |
| **Neo4j** | neo4j.yourdomain.com | `http://neo4j:7474` | Built-in login |
| **Open WebUI** | webui.yourdomain.com | `http://open-webui:8080` | Built-in login |
| **PaddleOCR** | paddleocr.yourdomain.com | `http://paddleocr:8080` | ⚠️ Loses Caddy auth |
| **Portainer** | portainer.yourdomain.com | `http://portainer:9000` | Built-in login |
| **Postiz** | postiz.yourdomain.com | `http://postiz:5000` | Built-in login |
| **Prometheus** | prometheus.yourdomain.com | `http://prometheus:9090` | ⚠️ Loses Caddy auth |
| **Qdrant** | qdrant.yourdomain.com | `http://qdrant:6333` | API key recommended |
| **RAGApp** | ragapp.yourdomain.com | `http://ragapp:8000` | ⚠️ Loses Caddy auth |
| **RagFlow** | ragflow.yourdomain.com | `http://ragflow:80` | Built-in login |
| **Postiz** | postiz.yourdomain.com | `http://postiz:5000` | Built-in login |
| **PostgreSUS** | postgresus.yourdomain.com | `http://postgresus:4005` | No auth |
| **WAHA** | waha.yourdomain.com | `http://waha:3000` | API key recommended |
| **Docling** | docling.yourdomain.com | `http://docling:5001` | ⚠️ Loses Caddy auth |
| **LibreTranslate** | libretranslate.yourdomain.com | `http://libretranslate:5000` | ⚠️ Loses Caddy auth |
| **PaddleOCR** | paddleocr.yourdomain.com | `http://paddleocr:8080` | ⚠️ Loses Caddy auth |
| **Dify** ¹ | dify.yourdomain.com | `http://nginx:80` | Built-in login |
| **SearXNG** | searxng.yourdomain.com | `http://searxng:8080` | ⚠️ Loses Caddy auth |
| **Supabase** ¹ | supabase.yourdomain.com | `http://kong:8000` | Built-in login |
| **WAHA** | waha.yourdomain.com | `http://waha:3000` | API key recommended |
| **Weaviate** | weaviate.yourdomain.com | `http://weaviate:8080` | API key recommended |
**⚠️ Security Warning:**
- Services marked **"Loses Caddy auth"** have basic authentication via Caddy that is bypassed by the tunnel. Use [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/) or keep them internal.

View File

@@ -22,7 +22,8 @@ volumes:
paddleocr_cache:
paddlex_data:
portainer_data:
postgresus_data:
databasus_data:
name: localai_postgresus_data
postiz-config:
postiz-uploads:
prometheus_data:
@@ -335,7 +336,7 @@ services:
PADDLEOCR_PASSWORD_HASH: ${PADDLEOCR_PASSWORD_HASH}
PADDLEOCR_USERNAME: ${PADDLEOCR_USERNAME}
PORTAINER_HOSTNAME: ${PORTAINER_HOSTNAME}
POSTGRESUS_HOSTNAME: ${POSTGRESUS_HOSTNAME}
DATABASUS_HOSTNAME: ${DATABASUS_HOSTNAME}
POSTIZ_HOSTNAME: ${POSTIZ_HOSTNAME}
PROMETHEUS_HOSTNAME: ${PROMETHEUS_HOSTNAME}
PROMETHEUS_PASSWORD_HASH: ${PROMETHEUS_PASSWORD_HASH}
@@ -836,13 +837,19 @@ services:
redis:
condition: service_healthy
postgresus:
image: rostislavdugin/postgresus:latest
container_name: postgresus
profiles: ["postgresus"]
databasus:
image: databasus/databasus:latest
container_name: databasus
profiles: ["databasus"]
restart: unless-stopped
volumes:
- postgresus_data:/postgresus-data
- databasus_data:/databasus-data
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:4005/ || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
comfyui:
image: yanwk/comfyui-boot:cu124-slim

View File

@@ -6,7 +6,7 @@
#
# Features:
# - Single-screen checklist for service selection
# - Default services: n8n, portainer, monitoring, postgresus
# - Default services: n8n, portainer, monitoring, databasus
# - Preserves previously selected services on re-run
# - Updates COMPOSE_PROFILES in .env file
#
@@ -41,15 +41,16 @@ base_services_data=(
"cloudflare-tunnel" "Cloudflare Tunnel (Zero-Trust Secure Access)"
"comfyui" "ComfyUI (Node-based Stable Diffusion UI)"
"crawl4ai" "Crawl4ai (Web Crawler for AI)"
"docling" "Docling (Universal Document Converter to Markdown/JSON)"
"databasus" "Databasus (Database backups & monitoring)"
"dify" "Dify (AI Application Development Platform with LLMOps)"
"docling" "Docling (Universal Document Converter to Markdown/JSON)"
"flowise" "Flowise (AI Agent Builder)"
"gost" "Gost Proxy (HTTP/HTTPS proxy for AI services outbound traffic)"
"gotenberg" "Gotenberg (Document Conversion API)"
"langfuse" "Langfuse Suite (AI Observability - includes Clickhouse, Minio)"
"letta" "Letta (Agent Server & SDK)"
"lightrag" "LightRAG (Graph-based RAG with knowledge graphs)"
"libretranslate" "LibreTranslate (Self-hosted translation API - 50+ languages)"
"lightrag" "LightRAG (Graph-based RAG with knowledge graphs)"
"monitoring" "Monitoring Suite (Prometheus, Grafana, cAdvisor, Node-Exporter)"
"n8n" "n8n, n8n-worker, n8n-import (Workflow Automation)"
"neo4j" "Neo4j (Graph Database)"
@@ -58,7 +59,6 @@ base_services_data=(
"open-webui" "Open WebUI (ChatGPT-like Interface)"
"paddleocr" "PaddleOCR (OCR API Server)"
"portainer" "Portainer (Docker management UI)"
"postgresus" "Postgresus (PostgreSQL backups & monitoring)"
"postiz" "Postiz (Social publishing platform)"
"python-runner" "Python Runner (Run your custom Python code from ./python-runner)"
"qdrant" "Qdrant (Vector Database)"
@@ -92,7 +92,7 @@ while [ $idx -lt ${#base_services_data[@]} ]; do
else
# .env has no COMPOSE_PROFILES or it's empty/just quotes, use hardcoded defaults
case "$tag" in
"n8n"|"portainer"|"monitoring"|"postgresus") status="ON" ;;
"n8n"|"portainer"|"monitoring"|"databasus") status="ON" ;;
*) status="OFF" ;;
esac
fi

View File

@@ -70,8 +70,9 @@ bash "$SCRIPT_DIR/05_configure_services.sh" || {
}
log_success "Service configuration completed."
# Clean up legacy n8n worker containers from old naming convention
# Clean up legacy containers from old naming conventions
cleanup_legacy_n8n_workers
cleanup_legacy_postgresus
# Pull latest versions of selected containers based on updated .env
set_telemetry_stage "update_docker_pull"

View File

@@ -89,10 +89,10 @@ if is_profile_active "portainer"; then
}")
fi
# Postgresus
if is_profile_active "postgresus"; then
SERVICES_ARRAY+=(" \"postgresus\": {
\"hostname\": \"$(json_escape "$POSTGRESUS_HOSTNAME")\",
# Databasus
if is_profile_active "databasus"; then
SERVICES_ARRAY+=(" \"databasus\": {
\"hostname\": \"$(json_escape "$DATABASUS_HOSTNAME")\",
\"credentials\": {
\"note\": \"PostgreSQL credentials are shown in the PostgreSQL card\"
}
@@ -495,12 +495,12 @@ if is_profile_active "n8n"; then
((STEP_NUM++))
fi
# Step 3: Configure database backups (if postgresus active)
if is_profile_active "postgresus"; then
# Step 3: Configure database backups (if databasus active)
if is_profile_active "databasus"; then
QUICK_START_ARRAY+=(" {
\"step\": $STEP_NUM,
\"title\": \"Configure database backups\",
\"description\": \"Set up Postgresus for automated PostgreSQL backups\"
\"description\": \"Set up Databasus for automated database backups\"
}")
((STEP_NUM++))
fi

View File

@@ -129,9 +129,9 @@ if is_profile_active "searxng"; then
check_image_update "searxng" "searxng/searxng:latest"
fi
if is_profile_active "postgresus"; then
log_subheader "Postgresus"
check_image_update "postgresus" "ghcr.io/postgresus/postgresus:latest"
if is_profile_active "databasus"; then
log_subheader "Databasus"
check_image_update "databasus" "databasus/databasus:latest"
fi
# Summary

View File

@@ -638,6 +638,22 @@ cleanup_legacy_n8n_workers() {
fi
}
# Clean up legacy postgresus container after rename to databasus
# This function removes the old "postgresus" container if it exists,
# allowing the new "databasus" container to take its place.
# Usage: cleanup_legacy_postgresus
cleanup_legacy_postgresus() {
local container_name="postgresus"
# Check if container exists (running or stopped)
if docker ps -a --format '{{.Names}}' | grep -q "^${container_name}$"; then
log_info "Found legacy postgresus container, migrating to databasus..."
docker stop "$container_name" 2>/dev/null || true
docker rm -f "$container_name" 2>/dev/null || true
log_success "Legacy postgresus container removed. Databasus will use existing data via volume alias."
fi
}
#=============================================================================
# USER DETECTION
#=============================================================================

View File

@@ -191,13 +191,13 @@
category: 'infra',
docsUrl: 'https://docs.portainer.io'
},
'postgresus': {
name: 'Postgresus',
description: 'PostgreSQL Backups & Monitoring',
icon: 'PG',
color: 'bg-[#336791]',
'databasus': {
name: 'Databasus',
description: 'Database Backups & Monitoring',
icon: 'DB',
color: 'bg-[#155DFC]',
category: 'database',
docsUrl: 'https://postgresus.com/'
docsUrl: 'https://databasus.com/'
},
'langfuse': {
name: 'Langfuse',