mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-06-09 22:12:07 +00:00
52c67d6d92
- Add internal/webui/ package with //go:build embedui tag for optional SPA embedding (handler.go serves static files with SPA fallback) - Add internal/version/ shared semver comparison (DRY: extracted from gateway/update_check.go and updater/updater.go) - Enhance UpdateChecker: release notes, ETag caching, filter lite-v* tags - Add web UI build stage to Dockerfile with ENABLE_EMBEDUI build arg - Simplify CI: 7 Docker variants → 4 (base, latest, full, otel) - Add SHA256 checksums job to release workflow - Add Makefile build-full target (embeds web UI in Go binary) - Default make up now embeds web UI (no separate nginx needed) - Add WITH_WEB_NGINX=1 flag for optional nginx reverse proxy - Update README + 30 translated READMEs: make up, port 18790 - Update docker-compose comments and prepare-env.sh - About dialog: show release notes with markdown rendering - Health card: amber badge for available updates BREAKING: Default Docker setup no longer requires selfservice overlay. Web dashboard served at :18790 (same port as API).
102 lines
3.2 KiB
Bash
102 lines
3.2 KiB
Bash
#!/usr/bin/env bash
|
|
# GoClaw installer — downloads the latest binary from GitHub Releases.
|
|
#
|
|
# Usage:
|
|
# curl -fsSL https://raw.githubusercontent.com/nextlevelbuilder/goclaw/main/scripts/install.sh | bash
|
|
# curl -fsSL ... | bash -s -- --version v1.30.0
|
|
# curl -fsSL ... | bash -s -- --dir /opt/goclaw
|
|
#
|
|
# Supported: Linux (amd64/arm64), macOS (amd64/arm64)
|
|
|
|
set -euo pipefail
|
|
|
|
REPO="nextlevelbuilder/goclaw"
|
|
INSTALL_DIR="${GOCLAW_INSTALL_DIR:-/usr/local/bin}"
|
|
MIGRATIONS_DIR="/usr/local/share/goclaw/migrations"
|
|
VERSION=""
|
|
|
|
# ── Parse args ──
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--version) VERSION="$2"; shift 2 ;;
|
|
--dir) INSTALL_DIR="$2"; shift 2 ;;
|
|
--help|-h)
|
|
echo "Usage: install.sh [--version v1.x.x] [--dir /path]"
|
|
exit 0
|
|
;;
|
|
*) echo "Unknown option: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
# ── Detect OS/arch ──
|
|
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
|
ARCH="$(uname -m)"
|
|
case "$ARCH" in
|
|
x86_64) ARCH="amd64" ;;
|
|
aarch64|arm64) ARCH="arm64" ;;
|
|
*) echo "Unsupported architecture: $ARCH"; exit 1 ;;
|
|
esac
|
|
|
|
case "$OS" in
|
|
linux|darwin) ;;
|
|
*) echo "Unsupported OS: $OS"; exit 1 ;;
|
|
esac
|
|
|
|
# ── Resolve version ──
|
|
if [ -z "$VERSION" ]; then
|
|
echo "Fetching latest release..."
|
|
VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | head -1 | sed 's/.*"tag_name": *"\([^"]*\)".*/\1/')"
|
|
fi
|
|
echo "Installing GoClaw ${VERSION} (${OS}/${ARCH})..."
|
|
|
|
# ── Download ──
|
|
ASSET="goclaw-${VERSION#v}-${OS}-${ARCH}.tar.gz"
|
|
URL="https://github.com/${REPO}/releases/download/${VERSION}/${ASSET}"
|
|
TMP="$(mktemp -d)"
|
|
trap 'rm -rf "$TMP"' EXIT
|
|
|
|
echo "Downloading ${URL}..."
|
|
curl -fsSL -o "${TMP}/${ASSET}" "$URL"
|
|
|
|
# ── Extract & install ──
|
|
tar -xzf "${TMP}/${ASSET}" -C "$TMP"
|
|
|
|
# Check write permission, use sudo if needed
|
|
if [ -w "$INSTALL_DIR" ]; then
|
|
cp "${TMP}/goclaw" "${INSTALL_DIR}/goclaw"
|
|
chmod +x "${INSTALL_DIR}/goclaw"
|
|
mkdir -p "${MIGRATIONS_DIR}"
|
|
cp -r "${TMP}/migrations/"* "${MIGRATIONS_DIR}/"
|
|
else
|
|
echo "Installing to ${INSTALL_DIR} (requires sudo)..."
|
|
sudo cp "${TMP}/goclaw" "${INSTALL_DIR}/goclaw"
|
|
sudo chmod +x "${INSTALL_DIR}/goclaw"
|
|
sudo mkdir -p "${MIGRATIONS_DIR}"
|
|
sudo cp -r "${TMP}/migrations/"* "${MIGRATIONS_DIR}/"
|
|
fi
|
|
|
|
echo ""
|
|
echo "GoClaw ${VERSION} installed to ${INSTALL_DIR}/goclaw"
|
|
echo "Migrations installed to ${MIGRATIONS_DIR}"
|
|
echo ""
|
|
echo "The binary includes an embedded web dashboard — no separate nginx needed."
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Set up PostgreSQL (pgvector):"
|
|
echo " docker run -d --name goclaw-pg -p 5432:5432 -e POSTGRES_PASSWORD=goclaw pgvector/pgvector:pg18"
|
|
echo ""
|
|
echo " 2. Set environment variables:"
|
|
echo " export GOCLAW_POSTGRES_DSN='postgres://postgres:goclaw@localhost:5432/postgres?sslmode=disable'"
|
|
echo " export GOCLAW_MIGRATIONS_DIR='${MIGRATIONS_DIR}'"
|
|
echo ""
|
|
echo " 3. Start the onboard wizard (runs migrations automatically):"
|
|
echo " goclaw onboard"
|
|
echo ""
|
|
echo " 4. Start the gateway:"
|
|
echo " source .env.local && goclaw"
|
|
echo ""
|
|
echo " Web dashboard: http://localhost:18790"
|
|
echo " Health check: curl http://localhost:18790/health"
|
|
echo ""
|
|
echo " To update later: goclaw update --apply"
|