Change : UI/UX design

This commit is contained in:
2026-06-21 18:56:18 +01:00
parent b43c87de73
commit ae267a6d9b
6 changed files with 765 additions and 276 deletions

View File

@@ -2,6 +2,8 @@
# =============================================
# backup-myapps.sh — Run on MAIN SERVER
# Backs up: Frappe, Nextcloud, Mautic, n8n, Odoo
# + CI/CD (my-jenkins, management-platform)
# + Infrastructure (K8s ingress, Traefik, SSL certs)
# Storage tiers:
# 1. Local → /root/backups/ (CRITICAL — always runs)
# 2. VM → SSH tunnel → /backups/main-server/
@@ -65,6 +67,8 @@ log_status() {
echo "========================================="
echo "📦 Starting Backup: $BACKUP_NAME"
echo " Apps: Frappe, Nextcloud, Mautic, n8n, Odoo"
echo " CI/CD: my-jenkins, management-platform"
echo " Infra: K8s ingress, Traefik, SSL certs"
echo " Tiers: Local → VM → ☁ Cloudflare R2"
echo "========================================="
@@ -168,7 +172,85 @@ docker exec frappe-erpnext \
|| echo " ⏭️ Frappe config not found (skipping)"
# --------------------------------------------------
# 6. Metadata + checksum
# 6. CI/CD & Infrastructure configs ← NEW SECTION
# --------------------------------------------------
echo ""
echo "🚀 [6b/7] Backing up CI/CD & Infrastructure configs..."
mkdir -p cicd-configs/k8s
# my-cicd folder (Jenkinsfile, docker-compose for my-jenkins)
if [ -d /root/my-cicd ]; then
cp -r /root/my-cicd cicd-configs/my-cicd \
&& echo " ✅ /root/my-cicd (Jenkinsfile + compose)" \
|| echo " ⚠️ my-cicd copy failed"
else
echo " ⏭️ /root/my-cicd not found — skipping"
fi
# my-jenkins Docker volume (jobs, credentials, plugins, build history)
JENKINS_VOL="my-cicd_jenkins_home"
# Try common volume name variants
for VOL_NAME in "my-cicd_jenkins_home" "my-cicd_jenkins-home" "my-cicd_jenkins-data" "jenkins_home"; do
if docker volume inspect "$VOL_NAME" &>/dev/null; then
echo -n " 📁 my-jenkins volume ($VOL_NAME) ... "
docker run --rm \
-v "${VOL_NAME}:/source:ro" \
-v "$(pwd)/cicd-configs:/backup" \
alpine tar czf "/backup/my-jenkins-volume.tar.gz" -C /source . \
&& echo "✅" || echo "⚠️ FAILED (continuing)"
break
fi
done
# management-platform source (excluding pycache)
if [ -d /root/management-platform ]; then
tar czf cicd-configs/management-platform.tar.gz \
--exclude='*/__pycache__' \
--exclude='*.pyc' \
--exclude='*/venv' \
-C /root management-platform \
&& echo " ✅ management-platform source" \
|| echo " ⚠️ management-platform backup failed"
else
echo " ⏭️ /root/management-platform not found — skipping"
fi
# Traefik config folder
if [ -d /root/traefik ]; then
cp -r /root/traefik cicd-configs/traefik \
&& echo " ✅ /root/traefik config" \
|| echo " ⚠️ traefik copy failed"
fi
# acme.json SSL cert backup (critical for domain SSL)
if [ -f /root/acme.json.working-backup ]; then
cp /root/acme.json.working-backup cicd-configs/acme.json.backup \
&& echo " ✅ acme.json (SSL certs)" \
|| echo " ⚠️ acme.json copy failed"
fi
# K8s ingress rules (domain routing config — cloudops, nextcloud, odoo)
kubectl get ingress --all-namespaces -o yaml \
> cicd-configs/k8s/ingress-all.yaml 2>/dev/null \
&& echo " ✅ K8s ingress rules" \
|| echo " ⏭️ kubectl not available — skipping K8s exports"
# K8s services & endpoints (ExternalName services pointing to Docker containers)
kubectl get services --all-namespaces -o yaml \
> cicd-configs/k8s/services-all.yaml 2>/dev/null || true
kubectl get endpoints --all-namespaces -o yaml \
> cicd-configs/k8s/endpoints-all.yaml 2>/dev/null || true
# K8s TLS secrets (cert-manager issued certs for domains)
kubectl get secret --all-namespaces \
--field-selector type=kubernetes.io/tls -o yaml \
> cicd-configs/k8s/tls-secrets.yaml 2>/dev/null \
&& echo " ✅ K8s TLS secrets (domain certs)" || true
echo " ✅ CI/CD & Infrastructure backup done"
# --------------------------------------------------
# 7. Metadata + checksum
# --------------------------------------------------
echo ""
echo "📝 [6/7] Writing backup metadata..."
@@ -179,6 +261,8 @@ Backup Name: $BACKUP_NAME
Backup Date: $(date)
Hostname: $(hostname)
Apps: Frappe, Nextcloud, Mautic, n8n, Odoo
CI/CD: my-jenkins, management-platform
Infra: K8s ingress, Traefik, SSL certs
Volumes: $VOLUME_COUNT volume(s) backed up
Docker info: $(docker --version 2>/dev/null || echo 'N/A')
Storage Tiers:
@@ -198,7 +282,7 @@ done
echo " ✅ Done"
# --------------------------------------------------
# 7. Compress
# 8. Compress
# --------------------------------------------------
echo ""
echo "🗜️ [7/7] Compressing backup..."
@@ -223,7 +307,7 @@ echo ""
echo "✅ [TIER 1] Local backup complete: $BACKUP_ARCHIVE ($COMPRESSED_SIZE)"
# --------------------------------------------------
# 8. Retention — keep only MAX_BACKUPS locally
# 9. Retention — keep only MAX_BACKUPS locally
# --------------------------------------------------
echo ""
echo "🧹 [Retention] Keeping latest ${MAX_BACKUPS} local backups..."
@@ -242,7 +326,7 @@ else
fi
# --------------------------------------------------
# 9. VM transfer [TIER 2] — non-fatal
# 10. VM transfer [TIER 2] — non-fatal
# --------------------------------------------------
echo ""
echo "📤 [TIER 2] Sending backup to VM (${VM_HOST}:${VM_PORT})..."
@@ -266,7 +350,7 @@ else
fi
# --------------------------------------------------
# 10. Cloudflare R2 [TIER 3] — non-fatal
# 11. Cloudflare R2 [TIER 3] — non-fatal
# --------------------------------------------------
echo ""
echo "☁️ [TIER 3] Uploading to Cloudflare R2..."
@@ -376,7 +460,7 @@ PYEOF
fi
# --------------------------------------------------
# 11. Final summary + log
# 12. Final summary + log
# --------------------------------------------------
echo ""
echo "========================================="