Initial commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
CYAN='\033[0;36m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${CYAN}========================================${NC}"
|
||||
echo -e "${CYAN} THE DARK ELITE HUB - DEPLOYMENT${NC}"
|
||||
echo -e "${CYAN}========================================${NC}"
|
||||
echo
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo -e "${RED}Run with sudo.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f .env ]; then
|
||||
echo -e "${YELLOW}No .env file found. Creating from .env.example...${NC}"
|
||||
cp .env.example .env
|
||||
if command -v openssl >/dev/null 2>&1; then
|
||||
SECRET=$(openssl rand -hex 32)
|
||||
sed -i "s|HUB_SECRET=.*|HUB_SECRET=$SECRET|" .env
|
||||
echo -e "${GREEN}Auto-generated HUB_SECRET in .env${NC}"
|
||||
fi
|
||||
echo
|
||||
echo -e "${YELLOW}You must edit .env now and set HUB_PASSWORD.${NC}"
|
||||
echo -e "Press ENTER after you have edited .env, or Ctrl+C to abort."
|
||||
read
|
||||
fi
|
||||
|
||||
if grep -q "change-me-to-a-real-password\|replace-with" .env; then
|
||||
echo -e "${RED}.env still has placeholder values. Edit it before deploying.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo -e "${CYAN}==> Installing Docker...${NC}"
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
systemctl enable --now docker
|
||||
fi
|
||||
|
||||
if ! docker compose version >/dev/null 2>&1; then
|
||||
echo -e "${RED}Docker Compose plugin missing. Install docker-compose-plugin and re-run.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}==> Setting up /opt/hub from skeleton...${NC}"
|
||||
mkdir -p /opt/hub
|
||||
rsync -a --ignore-existing skel/ /opt/hub/
|
||||
mkdir -p /opt/hub/caddy/data /opt/hub/caddy/config
|
||||
chmod -R u+rw /opt/hub
|
||||
|
||||
if ! docker network inspect hub >/dev/null 2>&1; then
|
||||
echo -e "${CYAN}==> Creating hub network...${NC}"
|
||||
docker network create hub
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}==> Pulling images and starting stacks...${NC}"
|
||||
docker compose --env-file .env up -d
|
||||
|
||||
echo
|
||||
echo -e "${CYAN}==> Waiting for services...${NC}"
|
||||
sleep 15
|
||||
|
||||
IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} DEPLOY COMPLETE${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo
|
||||
echo -e "Hub URL: ${CYAN}http://$IP/${NC}"
|
||||
echo -e "Login: ${CYAN}http://$IP/login/${NC}"
|
||||
echo
|
||||
echo -e "${YELLOW}Note: ZIMs and PDFs are EMPTY. Upload via:${NC}"
|
||||
echo -e " Library admin: http://$IP/library/ (top of page)"
|
||||
echo -e " PDF library: http://$IP/pdfs/"
|
||||
echo
|
||||
echo -e "${CYAN}========================================${NC}"
|
||||
echo -e "${CYAN} MAP TILES${NC}"
|
||||
echo -e "${CYAN}========================================${NC}"
|
||||
echo
|
||||
echo "Maps page and Overlay page require base.pmtiles."
|
||||
echo "Download size: ~4-25 GB depending on detail level."
|
||||
echo "Download time: 10 min - 1 hour."
|
||||
echo
|
||||
read -p "Download North America map tiles now? [Y/n]: " yn
|
||||
yn=${yn:-Y}
|
||||
if [[ "$yn" =~ ^[Yy]$ ]]; then
|
||||
bash "$SCRIPT_DIR/fetch-maps.sh"
|
||||
else
|
||||
echo
|
||||
echo -e "${YELLOW}Skipped.${NC}"
|
||||
echo -e "Run ${CYAN}$SCRIPT_DIR/fetch-maps.sh${NC} anytime to download maps later."
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}Done.${NC}"
|
||||
Reference in New Issue
Block a user