Files
gree-controller/install-lxc.sh
T
2026-08-23 21:34:07 +02:00

50 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
[[ ${EUID:-$(id -u)} -eq 0 ]] || { echo "Run as root: sudo ./install-lxc.sh" >&2; exit 1; }
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT"
apt-get update
apt-get install -y --no-install-recommends build-essential curl ca-certificates pkg-config
if ! command -v cargo >/dev/null 2>&1; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
source /root/.cargo/env
fi
cargo build --release
id gree-controller >/dev/null 2>&1 || useradd --system --home /var/lib/gree-controller --shell /usr/sbin/nologin gree-controller
install -d -o gree-controller -g gree-controller -m 0750 /var/lib/gree-controller
install -d -o root -g root -m 0755 /opt/gree-controller
install -o root -g root -m 0755 target/release/gree-controller /opt/gree-controller/gree-controller
install -o root -g root -m 0644 systemd/gree-controller.service /etc/systemd/system/gree-controller.service
if [[ ! -f /etc/gree-controller.env ]]; then
token="$(od -An -N24 -tx1 /dev/urandom | tr -d ' \n')"
cat > /etc/gree-controller.env <<ENV
GREE_CONTROLLER_BIND=0.0.0.0:8787
GREE_CONTROLLER_DATABASE=/var/lib/gree-controller/gree-controller.db
GREE_CONTROLLER_APP_TOKEN=$token
GREE_CONTROLLER_SIMULATE=true
GREE_CONTROLLER_AUTO_SEED=true
GREE_CONTROLLER_POLL_INTERVAL_SECONDS=15
GREE_CONTROLLER_ZONE_INTERVAL_SECONDS=5
GREE_CONTROLLER_DISCOVERY_TIMEOUT_MS=3000
GREE_CONTROLLER_DISCOVERY_BROADCAST=255.255.255.255:7000
GREE_CONTROLLER_ID=gree-controller
RUST_LOG=info,tower_http=info
HA_URL=
HA_TOKEN=
HA_ENTITY_ID=
ENV
chmod 0600 /etc/gree-controller.env
echo "Generated API token: $token"
echo "Saved to /etc/gree-controller.env"
fi
systemctl daemon-reload
systemctl enable --now gree-controller.service
systemctl --no-pager --full status gree-controller.service || true
ip="$(hostname -I | awk '{print $1}')"
echo "Panel: http://${ip:-LXC_ADDRESS}:8787"
echo "Logs: journalctl -u gree-controller -f"