37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Idempotentes Setup auf dem VPS. Aus dem Repo-Root mit `sudo bash deploy/install.sh` aufrufen.
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="${REPO_DIR:-/opt/aitrader}"
|
|
USER_NAME="aitrader"
|
|
|
|
echo "[1/6] System-Pakete"
|
|
apt-get update
|
|
apt-get install -y python3 python3-venv git curl ufw
|
|
|
|
echo "[2/6] Service-User"
|
|
id "$USER_NAME" &>/dev/null || useradd --system --create-home --shell /usr/sbin/nologin "$USER_NAME"
|
|
|
|
echo "[3/6] Repo-Verzeichnis"
|
|
mkdir -p "$REPO_DIR/data"
|
|
chown -R "$USER_NAME":"$USER_NAME" "$REPO_DIR"
|
|
|
|
echo "[4/6] uv installieren (für $USER_NAME)"
|
|
sudo -u "$USER_NAME" bash -c 'command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh'
|
|
|
|
echo "[5/6] venv + dependencies"
|
|
cd "$REPO_DIR"
|
|
sudo -u "$USER_NAME" bash -c "cd '$REPO_DIR' && \$HOME/.local/bin/uv venv --python 3.12 && \$HOME/.local/bin/uv pip install -e ."
|
|
|
|
echo "[6/6] systemd-Units installieren"
|
|
cp deploy/systemd/aitrader.service /etc/systemd/system/
|
|
cp deploy/systemd/aitrader-dashboard.service /etc/systemd/system/
|
|
systemctl daemon-reload
|
|
|
|
echo
|
|
echo "Fertig. Nächste Schritte:"
|
|
echo " 1) .env in $REPO_DIR/.env eintragen (Keys!)"
|
|
echo " 2) systemctl enable --now aitrader.service"
|
|
echo " 3) systemctl enable --now aitrader-dashboard.service"
|
|
echo " 4) journalctl -u aitrader -f"
|