91 lines
3.6 KiB
Bash
91 lines
3.6 KiB
Bash
#!/usr/bin/env bash
|
|
# ==============================================================================
|
|
# TheCr3w-dev — Bezpieczny skrypt aktualizacji Caddyfile
|
|
# Lokalizacja Caddyfile: /opt/proxy/Caddyfile
|
|
# Kontener: caddy
|
|
# ==============================================================================
|
|
|
|
set -eo pipefail
|
|
|
|
CADDYFILE="/opt/proxy/Caddyfile"
|
|
CADDY_CONTAINER="caddy"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_FILE="/opt/proxy/Caddyfile.bak_${TIMESTAMP}"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}==============================================================================${NC}"
|
|
echo -e "${BLUE} THECR3W-DEV — BEZPIECZNA AKTUALIZACJA REVERSE PROXY CADDY ${NC}"
|
|
echo -e "${BLUE}==============================================================================${NC}"
|
|
|
|
# 1. Sprawdzenie uprawnień
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo -e "${RED}[BŁĄD] Skrypt wymaga uprawnień roota (sudo).${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Sprawdzenie obecności pliku
|
|
if [ ! -f "$CADDYFILE" ]; then
|
|
echo -e "${RED}[BŁĄD] Plik $CADDYFILE nie istnieje!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. Kopia zapasowa
|
|
echo -e "\n${YELLOW}[1/4] Tworzenie kopii zapasowej Caddyfile...${NC}"
|
|
cp "$CADDYFILE" "$BACKUP_FILE"
|
|
echo -e " ${GREEN}✓ Kopia zapasowa zapisana w: $BACKUP_FILE${NC}"
|
|
|
|
# 4. Sprawdzenie czy domeny są już skonfigurowane
|
|
echo -e "\n${YELLOW}[2/4] Weryfikacja istniejących wpisów domenowych...${NC}"
|
|
if grep -q "app.thecr3wnet.com" "$CADDYFILE"; then
|
|
echo -e " ${YELLOW}Uwaga: app.thecr3wnet.com jest już zdefiniowana w Caddyfile.${NC}"
|
|
else
|
|
echo -e " Dopisywanie reguł dla app.thecr3wnet.com i download.thecr3wnet.com..."
|
|
cat << 'EOF' >> "$CADDYFILE"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# TheCr3w-dev Ecosystem Services
|
|
# ------------------------------------------------------------------------------
|
|
app.thecr3wnet.com {
|
|
reverse_proxy thecr3w-backend:5000 {
|
|
header_up X-Forwarded-Proto {scheme}
|
|
header_up X-Real-IP {remote_host}
|
|
}
|
|
}
|
|
|
|
download.thecr3wnet.com {
|
|
reverse_proxy thecr3w-download-center:80 {
|
|
header_up X-Forwarded-Proto {scheme}
|
|
header_up X-Real-IP {remote_host}
|
|
}
|
|
}
|
|
EOF
|
|
echo -e " ${GREEN}✓ Dopisek dodany pomyślnie.${NC}"
|
|
fi
|
|
|
|
# 5. Walidacja składni w kontenerze Caddy
|
|
echo -e "\n${YELLOW}[3/4] Walidacja składni wewnątrz kontenera Caddy...${NC}"
|
|
if docker exec "$CADDY_CONTAINER" caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile; then
|
|
echo -e " ${GREEN}✓ Składnia Caddyfile jest w 100% poprawna!${NC}"
|
|
else
|
|
echo -e "${RED}[BŁĄD] Błąd walidacji składni! Przywracanie kopii zapasowej...${NC}"
|
|
cp "$BACKUP_FILE" "$CADDYFILE"
|
|
echo -e " Przywrócono oryginalny plik z kopii: $BACKUP_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# 6. Przeładowanie Caddy bez przestojów
|
|
echo -e "\n${YELLOW}[4/4] Przeładowanie Caddy (Zero-Downtime Reload)...${NC}"
|
|
docker exec "$CADDY_CONTAINER" caddy reload --config /etc/caddy/Caddyfile
|
|
echo -e " ${GREEN}✓ Caddy pomyślnie przeładowany bez przestojów!${NC}"
|
|
|
|
echo -e "\n${GREEN}==============================================================================${NC}"
|
|
echo -e "${GREEN} KONFIGURACJA DOMEN ZAKOŃCZONA SUKCESEM! ${NC}"
|
|
echo -e "${GREEN} Domeny aktywne: ${NC}"
|
|
echo -e "${GREEN} - https://app.thecr3wnet.com (Native Update API) ${NC}"
|
|
echo -e "${GREEN} - https://download.thecr3wnet.com (The Cr3w Download Center) ${NC}"
|
|
echo -e "${GREEN}==============================================================================${NC}"
|