Init
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user