diff --git a/install.sh b/install.sh index fc80bcb..c335c20 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ -#!/usr/bin/env bash -# clawd one-click install script -# Usage: curl -fsSL https://git.cutos.ai/claw-daemon/clawd/raw/branch/main/install.sh | sudo bash -# Requires root and Node.js >= 18 +#!/usr/bin/env bash +# clawd ?????? +# ???curl -fsSL https://git.cutos.ai/claw-daemon/clawd/raw/branch/main/install.sh | sudo bash +# ?? root ???????? Node.js >= 18 set -e @@ -11,26 +11,26 @@ info() { echo -e "${GREEN}[clawd]${NC} $*"; } warn() { echo -e "${YELLOW}[clawd]${NC} $*"; } error() { echo -e "${RED}[clawd]${NC} $*"; exit 1; } -# -- check root +# ?? ?? root ???????????????????????????????????????????????????????????????? if [ "$EUID" -ne 0 ]; then - error "Please run as root: sudo bash install.sh" + error "?? root ?????sudo bash install.sh?" fi -# -- check Node.js +# ?? ?? Node.js ????????????????????????????????????????????????????????????? if ! command -v node &>/dev/null; then - error "Node.js not found. Please install Node.js >= 18 first." + error "??? Node.js????? Node.js >= 18" fi NODE_VER=$(node -e "process.stdout.write(process.versions.node)") MAJOR=$(echo "$NODE_VER" | cut -d. -f1) if [ "$MAJOR" -lt 18 ]; then - error "Node.js version too low (current: $NODE_VER). Need >= 18." + error "Node.js ??????? $NODE_VER???? >= 18" fi -info "Node.js $NODE_VER OK" +info "Node.js $NODE_VER ?" -# -- install dnsmasq (needed for WiFi provisioning) +# ?? ??/?? dnsmasq?WiFi ??????????????????????????????????????????? if ! command -v dnsmasq &>/dev/null; then - info "Installing dnsmasq..." + info "?? dnsmasq?WiFi ?????..." if command -v apt-get &>/dev/null; then apt-get install -y -qq dnsmasq >/dev/null 2>&1 elif command -v yum &>/dev/null; then @@ -38,23 +38,25 @@ if ! command -v dnsmasq &>/dev/null; then elif command -v apk &>/dev/null; then apk add --quiet dnsmasq >/dev/null 2>&1 else - warn "Cannot auto-install dnsmasq. WiFi provisioning may not work." + warn "?????? dnsmasq?WiFi ?????????" fi + # ?? dnsmasq ???????clawd ????? systemctl disable dnsmasq 2>/dev/null || true systemctl stop dnsmasq 2>/dev/null || true fi if command -v dnsmasq &>/dev/null; then - info "dnsmasq OK" + info "dnsmasq ?" fi -# -- enable NetworkManager +# ?? ?? NetworkManager?WiFi ??????????????????????????????????????????? if command -v nmcli &>/dev/null; then if ! systemctl is-active --quiet NetworkManager 2>/dev/null; then - info "Enabling NetworkManager..." + info "?? NetworkManager..." systemctl enable --now NetworkManager 2>/dev/null || true fi - info "NetworkManager OK" + info "NetworkManager ?" + # ?? DNS ???????? /etc ?????? NM_DNSMASQ_DIR="/etc/NetworkManager/dnsmasq-shared.d" mkdir -p "$NM_DNSMASQ_DIR" cat > "$NM_DNSMASQ_DIR/clawd-captive.conf" << 'DNSCONF' @@ -62,19 +64,20 @@ if command -v nmcli &>/dev/null; then # All DNS queries resolve to gateway to trigger captive portal address=/#/10.42.0.1 DNSCONF - info "DNS hijack config written to $NM_DNSMASQ_DIR" + info "DNS ??????? $NM_DNSMASQ_DIR ?" fi -# -- WiFi rfkill unblock +# ?? WiFi rfkill ??????????? WiFi????????????????????????????????? for rf in /sys/class/rfkill/rfkill*; do if [ -f "$rf/type" ] && [ "$(cat "$rf/type")" = "wlan" ]; then if [ "$(cat "$rf/soft")" = "1" ]; then - info "Unblocking WiFi ($(basename "$rf"))..." + info "?? WiFi ($(basename "$rf"))..." echo 0 > "$rf/soft" fi fi done +# ???????? + systemd ??????????? WiFi RFKILL_SCRIPT="/usr/local/bin/clawd-unblock-wifi.sh" cat > "$RFKILL_SCRIPT" << 'SCRIPT' #!/bin/sh @@ -105,40 +108,39 @@ WantedBy=multi-user.target UNIT systemctl daemon-reload systemctl enable clawd-rfkill -info "WiFi rfkill service created" +info "WiFi rfkill ??????? ?" -# -- install ttyd -info "Installing ttyd..." +# ?? ?? ttyd?Web ??????????????????????????????????????????????????????? +info "?? ttyd..." if apt-get install -y ttyd >/dev/null 2>&1; then - info "ttyd installed" + info "ttyd ??? ?" else - warn "ttyd install failed. Web terminal may not be available." + warn "ttyd ?????Web ????????" fi -# -- install clawd +# ?? ?? clawd ??????????????????????????????????????????????????????????????? INSTALL_DIR="/opt/clawd" CONFIG_DIR="/etc/clawd" ENV_FILE="$CONFIG_DIR/env" -CUTOS_REPO="https://git.cutos.ai/claw-daemon/clawd.git" -info "Installing to $INSTALL_DIR ..." +info "??? $INSTALL_DIR ..." mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" -# Download source (prioritise .git repo update over package.json skip) +# ?????????? package.json?????/???????? git/tarball? +CUTOS_REPO="https://git.cutos.ai/claw-daemon/clawd.git" if command -v git &>/dev/null && [ -d ".git" ]; then - # Migrate remote from GitHub to git.cutos.ai if needed CURRENT_REMOTE=$(git remote get-url origin 2>/dev/null || echo "") if echo "$CURRENT_REMOTE" | grep -q "github.com"; then - info "Migrating git remote to git.cutos.ai ..." + info "?? git remote ? git.cutos.ai ..." git remote set-url origin "$CUTOS_REPO" fi - info "Pulling latest code..." + info "??????..." git fetch origin git reset --hard origin/main git clean -fd elif [ -f "package.json" ]; then - info "Source already present (no .git). Skipping download." + info "????????? git??????" elif command -v git &>/dev/null; then git clone --depth=1 "$CUTOS_REPO" . else @@ -146,18 +148,18 @@ else curl -fsSL "$TARBALL_URL" | tar -xz --strip-components=1 fi -# install npm deps -info "Installing npm dependencies..." +# ???? +info "?? npm ??..." npm install --omit=dev --silent -# create symlink +# ??????? ln -sf "$INSTALL_DIR/bin/clawd.js" /usr/local/bin/clawd chmod +x "$INSTALL_DIR/bin/clawd.js" -info "clawd installed to /usr/local/bin/clawd" +info "clawd ???? /usr/local/bin/clawd ?" -# -- create config dir + env file +# ?? ?????? + ?????? ?????????????????????????????????????????????? mkdir -p "$CONFIG_DIR" if [ ! -f "$CONFIG_DIR/config.json" ]; then @@ -169,36 +171,36 @@ if [ ! -f "$CONFIG_DIR/config.json" ]; then "heartbeat_interval": 30 } EOF - info "Config file created: $CONFIG_DIR/config.json" + info "????????$CONFIG_DIR/config.json ?" fi if [ ! -f "$ENV_FILE" ]; then cat > "$ENV_FILE" < "$JOURNAL_CONF" </dev/null || true - info "journald limits configured" + info "journald ??????? ?" fi -# -- enable and start +# ?? ????? ?????????????????????????????????????????????????????????????? systemctl daemon-reload systemctl enable clawd systemctl restart clawd sleep 2 if systemctl is-active --quiet clawd; then - info "clawd service is running" + info "clawd ????? ?" echo "" - echo " View logs: journalctl -u clawd -f" - echo " View status: systemctl status clawd" - echo " Stop: systemctl stop clawd" - echo " Config: $CONFIG_DIR/config.json" - echo " Env vars: $ENV_FILE" - echo " Log file: $CONFIG_DIR/logs/clawd.log" + echo " ????? journalctl -u clawd -f" + echo " ????? systemctl status clawd" + echo " ????? systemctl stop clawd" + echo " ????? $CONFIG_DIR/config.json" + echo " ????? $ENV_FILE" + echo " ????? $CONFIG_DIR/logs/clawd.log" echo "" else - warn "Service failed to start. Check logs:" + warn "?????????????" echo " journalctl -u clawd -n 50 --no-pager" -fi \ No newline at end of file +fi diff --git a/package.json b/package.json index 5529420..3d5ba94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clawd", - "version": "1.2.4", + "version": "1.2.5", "description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket", "main": "lib/client.js", "bin": {