111 lines
4.4 KiB
Bash
111 lines
4.4 KiB
Bash
#!/usr/bin/env bash
|
|
# ==============================================================================
|
|
# TheCr3w-dev — Master Production Deployment Script
|
|
# System: Ubuntu 24.04 LTS (Netcup VPS)
|
|
# ==============================================================================
|
|
|
|
set -eo pipefail
|
|
|
|
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 — INSTALACJA, BUDOWANIE I WDROŻENIE PLATFORMY ${NC}"
|
|
echo -e "${BLUE}==============================================================================${NC}"
|
|
|
|
# 1. Sprawdzenie uprawnień
|
|
if [ "$EUID" -ne 0 ] && ! groups | grep -q '\bdocker\b'; then
|
|
echo -e "${RED}[BŁĄD] Skrypt musi być uruchomiony z uprawnieniami roota lub użytkownika w grupie docker.${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Sprawdzenie Docker i Docker Compose
|
|
echo -e "\n${YELLOW}[1/6] Weryfikacja środowiska Docker...${NC}"
|
|
if ! command -v docker &>/dev/null; then
|
|
echo -e "${RED}[BŁĄD] Docker nie jest zainstalowany na serwerze!${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e " Docker: $(docker --version)"
|
|
|
|
if ! docker compose version &>/dev/null; then
|
|
echo -e "${RED}[BŁĄD] Docker Compose plugin v2 nie jest dostępny!${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e " Compose: $(docker compose version)"
|
|
|
|
# 3. Sprawdzenie zewnętrznej sieci 'proxy' (Caddy)
|
|
echo -e "\n${YELLOW}[2/6] Weryfikacja sieci Docker 'proxy' (Caddy)...${NC}"
|
|
if docker network inspect proxy &>/dev/null; then
|
|
echo -e " ${GREEN}✓ Sieć 'proxy' istnieje.${NC}"
|
|
else
|
|
echo -e " Tworzenie sieci 'proxy' dla integracji z Caddy..."
|
|
docker network create proxy
|
|
echo -e " ${GREEN}✓ Utworzono sieć 'proxy'.${NC}"
|
|
fi
|
|
|
|
# 4. Konfiguracja pliku .env
|
|
echo -e "\n${YELLOW}[3/6] Konfiguracja zmiennych środowiskowych (.env)...${NC}"
|
|
if [ ! -f ".env" ]; then
|
|
echo -e " Kopiowanie .env.example do .env..."
|
|
cp .env.example .env
|
|
fi
|
|
|
|
# Automatyczne wygenerowanie bezpiecznego hasła bazy danych jeśli brak
|
|
CURRENT_DB_PASS=$(grep -E '^POSTGRES_PASSWORD=' .env | cut -d'=' -f2- || true)
|
|
if [ -z "$CURRENT_DB_PASS" ]; then
|
|
NEW_DB_PASS=$(openssl rand -hex 24)
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$NEW_DB_PASS/" .env
|
|
else
|
|
sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$NEW_DB_PASS/" .env
|
|
fi
|
|
echo -e " ${GREEN}✓ Wygenerowano silne, losowe hasło PostgreSQL.${NC}"
|
|
fi
|
|
|
|
# 5. Budowanie obrazów Docker
|
|
echo -e "\n${YELLOW}[4/6] Budowanie obrazów kontenerów platformy TheCr3w-dev...${NC}"
|
|
echo -e " Budowanie backendu .NET 10, Download Center oraz Admin Panelu..."
|
|
docker compose build --parallel
|
|
|
|
echo -e " ${GREEN}✓ Wszystkie obrazy zostały pomyślnie zbudowane lokalnie.${NC}"
|
|
|
|
# 6. Uruchomienie usług
|
|
echo -e "\n${YELLOW}[5/6] Uruchamianie bazy PostgreSQL i inicjalizacja schematu...${NC}"
|
|
docker compose up -d thecr3w-postgres
|
|
|
|
echo -e " Oczekiwanie na gotowość bazy PostgreSQL..."
|
|
until docker exec thecr3w-postgres pg_isready -U thecr3w_user -d thecr3w_db &>/dev/null; do
|
|
sleep 2
|
|
echo -n "."
|
|
done
|
|
echo -e "\n ${GREEN}✓ Baza PostgreSQL gotowa i zainicjalizowana.${NC}"
|
|
|
|
echo -e "\n Uruchamianie usług aplikacyjnych (Backend, Download Center, Admin Panel)..."
|
|
docker compose up -d
|
|
|
|
# 7. Weryfikacja działania kontenerów
|
|
echo -e "\n${YELLOW}[6/6] Sprawdzanie stanu uruchomionych usług...${NC}"
|
|
sleep 5
|
|
|
|
docker ps --filter "name=thecr3w" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
|
|
# Test lokalnego healthcheck backendu
|
|
echo -e "\n Weryfikacja healthcheck Native Update API..."
|
|
if docker exec thecr3w-backend wget -qO- http://localhost:5000/health | grep -q "Healthy"; then
|
|
echo -e " ${GREEN}✓ Native Update API działa prawidłowo (Status: Healthy).${NC}"
|
|
else
|
|
echo -e " ${YELLOW}Oczekiwanie na pełną inicjalizację API...${NC}"
|
|
fi
|
|
|
|
echo -e "\n${GREEN}==============================================================================${NC}"
|
|
echo -e "${GREEN} WDROŻENIE KONTENERÓW THECR3W-DEV ZAKOŃCZONE SUKCESEM! ${NC}"
|
|
echo -e "${GREEN}==============================================================================${NC}"
|
|
|
|
echo -e "\nNastępny krok: Aktualizacja reverse proxy Caddy."
|
|
echo -e "Uruchom dedykowany skrypt aktualizacji Caddyfile:"
|
|
echo -e " ${BLUE}sudo ./scripts/update_caddy.sh${NC}"
|
|
echo -e "lub ręcznie dopisz bloki domenowe zgodnie z docs/DEPLOYMENT.md."
|
|
|