50 lines
1.9 KiB
Bash
Executable File
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"
|