Last active
March 6, 2026 21:10
-
-
Save johnschult/e238ae7125bd6cfaff8e95d5e5415127 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Fraction AI Stack - post_start.sh | |
| # Lives in /workspace, copied to /post_start.sh by template start command | |
| set -e | |
| echo "=== Fraction AI Stack Starting ===" | |
| mkdir -p /workspace/bin /workspace/lib/ollama /workspace/ollama /workspace/logs \ | |
| /workspace/venv /workspace/openwebui \ | |
| /workspace/tailscale-state | |
| # --- System dependencies --- | |
| if [ ! -f /workspace/.deps_installed ]; then | |
| echo "[deps] Installing system dependencies..." | |
| apt-get update -qq | |
| apt-get install -y -qq software-properties-common curl pciutils | |
| add-apt-repository -y ppa:deadsnakes/ppa | |
| apt-get update -qq | |
| apt-get install -y -qq python3.11 python3.11-venv python3.11-distutils | |
| touch /workspace/.deps_installed | |
| else | |
| echo "[deps] Already installed." | |
| fi | |
| # --- Tailscale --- | |
| if [ ! -f /workspace/bin/tailscaled ]; then | |
| echo "[tailscale] Installing..." | |
| curl -fsSL https://tailscale.com/install.sh | sh | |
| cp /usr/sbin/tailscaled /workspace/bin/tailscaled | |
| cp /usr/bin/tailscale /workspace/bin/tailscale | |
| else | |
| echo "[tailscale] Already installed." | |
| fi | |
| echo "[tailscale] Starting tailscaled (userspace networking)..." | |
| pkill -f tailscaled 2>/dev/null || true | |
| sleep 1 | |
| /workspace/bin/tailscaled \ | |
| --tun=userspace-networking \ | |
| --statedir=/workspace/tailscale-state \ | |
| --socket=/workspace/tailscale.sock \ | |
| > /workspace/logs/tailscaled.log 2>&1 & | |
| sleep 3 | |
| if [ -n "$TAILSCALE_AUTH_KEY" ]; then | |
| echo "[tailscale] Bringing up tailnet..." | |
| /workspace/bin/tailscale \ | |
| --socket=/workspace/tailscale.sock \ | |
| up \ | |
| --authkey="$TAILSCALE_AUTH_KEY" \ | |
| --hostname=fraction-runpod \ | |
| --accept-routes | |
| TAILSCALE_IP=$(/workspace/bin/tailscale --socket=/workspace/tailscale.sock ip -4 2>/dev/null || echo "unknown") | |
| echo "[tailscale] Up. IP: $TAILSCALE_IP" | |
| else | |
| echo "[tailscale] WARNING: TAILSCALE_AUTH_KEY not set — skipping tailnet join." | |
| fi | |
| # --- Ollama --- | |
| if [ ! -f /workspace/bin/ollama ]; then | |
| echo "[ollama] Installing..." | |
| curl -fsSL https://ollama.com/install.sh | sh | |
| cp /usr/local/bin/ollama /workspace/bin/ollama | |
| cp -r /usr/local/lib/ollama/* /workspace/lib/ollama/ | |
| else | |
| echo "[ollama] Already installed." | |
| fi | |
| export PATH=/workspace/bin:$PATH | |
| export OLLAMA_MODELS=/workspace/ollama | |
| export OLLAMA_HOST=0.0.0.0 | |
| export OLLAMA_KEEP_ALIVE=-1 | |
| export OLLAMA_CONTEXT_LENGTH=8192 | |
| export LD_LIBRARY_PATH=/workspace/lib/ollama:$LD_LIBRARY_PATH | |
| pkill -f "ollama serve" 2>/dev/null || true | |
| sleep 2 | |
| echo "[ollama] Starting..." | |
| /workspace/bin/ollama serve > /workspace/logs/ollama.log 2>&1 & | |
| echo "[ollama] Waiting for API..." | |
| until curl -s http://127.0.0.1:11434/api/tags > /dev/null 2>&1; do | |
| sleep 2 | |
| done | |
| echo "[ollama] Ready." | |
| if ! /workspace/bin/ollama list | grep -q "qwen2.5:7b-instruct"; then | |
| echo "[ollama] Pulling qwen2.5:7b-instruct..." | |
| /workspace/bin/ollama pull qwen2.5:7b-instruct | |
| else | |
| echo "[ollama] Model already present." | |
| fi | |
| # --- Open WebUI --- | |
| if [ ! -f /workspace/venv/bin/open-webui ]; then | |
| echo "[owui] Installing Open WebUI (this takes a few minutes)..." | |
| python3.11 -m venv /workspace/venv | |
| /workspace/venv/bin/pip install --upgrade pip | |
| /workspace/venv/bin/pip install open-webui | |
| else | |
| echo "[owui] Already installed." | |
| fi | |
| export OLLAMA_BASE_URL=http://127.0.0.1:11434 | |
| export DATA_DIR=/workspace/openwebui | |
| echo "[owui] Starting..." | |
| /workspace/venv/bin/open-webui serve > /workspace/logs/owui.log 2>&1 & | |
| echo "=== Stack started. Logs in /workspace/logs ===" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment