Initial infrastructure setup
This commit is contained in:
commit
91f4ba3dbf
7 changed files with 754 additions and 0 deletions
97
setup.sh
Executable file
97
setup.sh
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Setting up Traefik Multi-Environment Stack"
|
||||
echo "=============================================="
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "Checking prerequisites..."
|
||||
|
||||
command -v docker >/dev/null 2>&1 || {
|
||||
echo -e "${RED}Docker is not installed${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
command -v docker compose >/dev/null 2>&1 || {
|
||||
echo -e "${RED}Docker Compose is not installed${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo -e "${GREEN}Docker and Docker Compose are installed${NC}"
|
||||
|
||||
echo "Creating directory structure..."
|
||||
mkdir -p traefik/{config,logs}
|
||||
|
||||
echo "Setting up SSL certificate storage..."
|
||||
touch traefik/acme.json
|
||||
chmod 600 traefik/acme.json
|
||||
|
||||
chmod +x init-databases.sh
|
||||
|
||||
echo "Creating Docker network..."
|
||||
docker network create web 2>/dev/null || echo -e "${YELLOW}Network 'web' already exists${NC}"
|
||||
|
||||
if [ ! -f .env ]; then
|
||||
echo "Creating .env file..."
|
||||
cp .env.example .env
|
||||
echo -e "${YELLOW}Please edit .env file with your actual values!${NC}"
|
||||
else
|
||||
echo -e "${GREEN}.env file already exists${NC}"
|
||||
fi
|
||||
|
||||
SERVER_IP=$(curl -s ifconfig.me 2>/dev/null || echo "YOUR_SERVER_IP")
|
||||
echo ""
|
||||
echo "Cloudflare DNS Configuration Check"
|
||||
echo "===================================="
|
||||
echo "Make sure these DNS records are configured in Cloudflare:"
|
||||
echo " - quest.vorteq.wulf.cloud -> ${SERVER_IP}"
|
||||
echo " - dev.quest.vorteq.wulf.cloud -> ${SERVER_IP}"
|
||||
echo " - testing.vorteq.wulf.cloud -> ${SERVER_IP}"
|
||||
echo " - traefik.vorteq.wulf.cloud -> ${SERVER_IP}"
|
||||
echo ""
|
||||
echo "Important: Set DNS records to 'DNS only' (grey cloud)"
|
||||
echo ""
|
||||
|
||||
# Generate auth secrets if needed
|
||||
if grep -q "your-.*-secret-here" .env 2>/dev/null; then
|
||||
echo -e "${YELLOW}Generating Better-Auth secrets...${NC}"
|
||||
DEV_SECRET=$(openssl rand -base64 32)
|
||||
TEST_SECRET=$(openssl rand -base64 32)
|
||||
PROD_SECRET=$(openssl rand -base64 32)
|
||||
|
||||
sed -i "s/your-dev-secret-here/$DEV_SECRET/" .env
|
||||
sed -i "s/your-test-secret-here/$TEST_SECRET/" .env
|
||||
sed -i "s/your-prod-secret-here/$PROD_SECRET/" .env
|
||||
echo -e "${GREEN}Generated and saved auth secrets${NC}"
|
||||
else
|
||||
echo -e "${GREEN}Auth secrets already configured${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Pre-flight Checklist"
|
||||
echo "======================"
|
||||
echo "Before running docker compose up, ensure:"
|
||||
echo " - DNS records are configured"
|
||||
echo " - Firewall allows ports 80 and 443"
|
||||
echo " - .env file is configured"
|
||||
echo " - Docker images are built (or registry is accessible)"
|
||||
echo ""
|
||||
|
||||
read -p "Do you want to start the stack now? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Starting services..."
|
||||
docker compose up -d
|
||||
echo ""
|
||||
echo -e "${GREEN}Stack is starting!${NC}"
|
||||
echo ""
|
||||
echo "View logs with: docker compose logs -f"
|
||||
echo "SSL certificates may take a few minutes to provision"
|
||||
else
|
||||
echo ""
|
||||
echo "Setup complete! Run 'docker compose up -d' when ready."
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue