73 lines
2.1 KiB
Bash
73 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Interactive / CI installer for Telemt Panel Docker
|
|
# Usage: ./deploy/install.sh [--mode standalone|fleet] [--non-interactive]
|
|
|
|
MODE="${PANEL_MODE:-standalone}"
|
|
NON_INTERACTIVE=0
|
|
DATA_DIR="${DATA_DIR:-/var/lib/telemt-panel}"
|
|
IMAGE="${PANEL_IMAGE:-git.shts.su/denozord/telemtpanel:latest}"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--mode) MODE="$2"; shift 2 ;;
|
|
--non-interactive) NON_INTERACTIVE=1; shift ;;
|
|
--data-dir) DATA_DIR="$2"; shift 2 ;;
|
|
--image) IMAGE="$2"; shift 2 ;;
|
|
*) echo "Unknown arg: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [[ "$NON_INTERACTIVE" -eq 0 ]]; then
|
|
read -r -p "PANEL_MODE [standalone/fleet] ($MODE): " input || true
|
|
MODE="${input:-$MODE}"
|
|
fi
|
|
|
|
mkdir -p "$DATA_DIR"
|
|
|
|
JWT_SECRET="${JWT_SECRET:-$(openssl rand -hex 32)}"
|
|
PANEL_ENCRYPTION_KEY="${PANEL_ENCRYPTION_KEY:-$(openssl rand -hex 32)}"
|
|
BOOTSTRAP_PASSWORD="${BOOTSTRAP_PASSWORD:-$(openssl rand -hex 12)}"
|
|
TELEMT_API_URL="${TELEMT_API_URL:-http://127.0.0.1:9091}"
|
|
PANEL_PUBLIC_URL="${PANEL_PUBLIC_URL:-http://127.0.0.1:8080}"
|
|
|
|
echo "Pulling $IMAGE ..."
|
|
docker pull "$IMAGE"
|
|
|
|
NET_ARGS=()
|
|
ENV_ARGS=(
|
|
-e "PANEL_MODE=$MODE"
|
|
-e "JWT_SECRET=$JWT_SECRET"
|
|
-e "PANEL_ENCRYPTION_KEY=$PANEL_ENCRYPTION_KEY"
|
|
-e "PANEL_PUBLIC_URL=$PANEL_PUBLIC_URL"
|
|
-e "BOOTSTRAP_USERNAME=${BOOTSTRAP_USERNAME:-admin}"
|
|
-e "BOOTSTRAP_PASSWORD=$BOOTSTRAP_PASSWORD"
|
|
-e "DATABASE_URL=sqlite:/data/app.db"
|
|
)
|
|
|
|
if [[ "$MODE" == "standalone" ]]; then
|
|
ENV_ARGS+=(-e "TELEMT_API_URL=$TELEMT_API_URL")
|
|
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
NET_ARGS=(--network host)
|
|
else
|
|
NET_ARGS=(-p 8080:8080 --add-host=host.docker.internal:host-gateway)
|
|
ENV_ARGS+=(-e "TELEMT_API_URL=${TELEMT_API_URL/127.0.0.1/host.docker.internal}")
|
|
fi
|
|
else
|
|
NET_ARGS=(-p 8080:8080)
|
|
fi
|
|
|
|
docker rm -f telemt-panel 2>/dev/null || true
|
|
docker run -d --name telemt-panel --restart unless-stopped \
|
|
"${NET_ARGS[@]}" \
|
|
"${ENV_ARGS[@]}" \
|
|
-v "$DATA_DIR:/data" \
|
|
"$IMAGE"
|
|
|
|
echo
|
|
echo "Telemt Panel started (mode=$MODE)."
|
|
echo "Admin: ${BOOTSTRAP_USERNAME:-admin} / $BOOTSTRAP_PASSWORD"
|
|
echo "URL: $PANEL_PUBLIC_URL"
|
|
echo "See docs/install.md for firewall and Telemt [server.api] whitelist."
|