gandalf.hofmanns/setup.sh

173 lines
4.9 KiB
Bash

#!/bin/bash
# =============================================================================
# JETSON ORIN NANO 8GB - COMPLETE SETUP SCRIPT
# Run this ONCE after JetPack flash
# =============================================================================
set -e
USER="d"
WIFI_SSID="Home.8"
WIFI_PASS="123"
STATIC_IP="192.168.1.50"
GATEWAY="192.168.1.1"
echo "=========================================="
echo " JETSON ORIN NANO - HOME HUB SETUP"
echo "=========================================="
# 1. System Update
echo "[1/10] System Update..."
sudo apt update && sudo apt upgrade -y
# 2. Install required packages
echo "[2/10] Installing packages..."
sudo apt install -y \
docker.io docker-compose \
hostapd bridge-utils \
git curl wget htop \
python3-pip \
alsa-utils pulseaudio \
ffmpeg \
nvtop
# 3. Add user to docker group
echo "[3/10] Docker permissions..."
sudo usermod -aG docker $USER
# 4. Create swap (8GB for Whisper models)
echo "[4/10] Creating 8GB swap..."
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 5. Set static IP for eth0
echo "[5/10] Network configuration..."
sudo tee /etc/netplan/01-netcfg.yaml << EOF
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
addresses:
- ${STATIC_IP}/24
routes:
- to: default
via: ${GATEWAY}
nameservers:
addresses:
- 127.0.0.1
- 1.1.1.1
EOF
# 6. Disable NetworkManager for wlan (we use hostapd)
echo "[6/10] Disable NetworkManager for wlan..."
sudo tee /etc/NetworkManager/conf.d/99-unmanaged-wlan.conf << EOF
[keyfile]
unmanaged-devices=interface-name:wlan*
EOF
# 7. Setup Bridge for AP
echo "[7/10] Bridge configuration..."
sudo tee /etc/network/interfaces.d/br0 << EOF
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
EOF
# 8. hostapd configuration (Bridge Mode - NO NAT!)
echo "[8/10] hostapd configuration..."
sudo tee /etc/hostapd/hostapd.conf << EOF
interface=wlan0
bridge=br0
driver=nl80211
ssid=${WIFI_SSID}
hw_mode=a
channel=36
wmm_enabled=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=${WIFI_PASS}
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
country_code=CH
# 802.11n/ac settings
ieee80211n=1
ieee80211ac=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
vht_capab=[SHORT-GI-80][MAX-MPDU-11454]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
EOF
sudo sed -i 's|#DAEMON_CONF=""|DAEMON_CONF="/etc/hostapd/hostapd.conf"|' /etc/default/hostapd
# 9. Enable services
echo "[9/10] Enable services..."
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl enable docker
# 10. Create docker directory structure
echo "[10/10] Creating directory structure..."
mkdir -p /home/$USER/docker/{homeassistant,adguard,whisper,jellyfin,portainer,filebrowser,syncthing,ollama,piper,rustdesk,homepage,npm}
mkdir -p /home/$USER/docker/homeassistant/config
mkdir -p /home/$USER/docker/adguard/{work,conf}
mkdir -p /home/$USER/docker/whisper/{models,wyoming}
mkdir -p /home/$USER/docker/jellyfin/{config,cache}
mkdir -p /home/$USER/docker/npm/{data,letsencrypt}
mkdir -p /home/$USER/docker/syncthing
mkdir -p /home/$USER/sync
# Copy all config files
cp /home/$USER/jetson-setup/docker-compose.yml /home/$USER/docker/
cp -r /home/$USER/jetson-setup/homepage/* /home/$USER/docker/homepage/
cp -r /home/$USER/jetson-setup/whisper-webui-jetson /home/$USER/docker/
# Create filebrowser database
touch /home/$USER/docker/filebrowser/database.db
# Install Cockpit for system management (Web UI)
sudo apt install -y cockpit
# Set permissions
chown -R $USER:$USER /home/$USER/docker
chown -R $USER:$USER /home/$USER/sync
echo ""
echo "=========================================="
echo " SETUP COMPLETE!"
echo "=========================================="
echo ""
echo " NEXT STEPS:"
echo " 1. REBOOT: sudo reboot"
echo " 2. After reboot, start services:"
echo " cd ~/docker && docker-compose up -d"
echo ""
echo " WEB UIs (alle im Browser!):"
echo " ─────────────────────────────────────────"
echo " http://192.168.1.50:3001 → Homepage Dashboard"
echo " http://192.168.1.50:81 → Nginx Proxy Manager"
echo " http://192.168.1.50:9443 → Portainer (Docker)"
echo " http://192.168.1.50:9090 → Cockpit (System)"
echo " http://192.168.1.50:8123 → Home Assistant"
echo " http://192.168.1.50:3000 → AdGuard Setup"
echo " http://192.168.1.50:7860 → Whisper (Speech→Text)"
echo " http://192.168.1.50:8096 → Jellyfin (Media)"
echo " http://192.168.1.50:8081 → FileBrowser (Cloud)"
echo " http://192.168.1.50:8384 → Syncthing"
echo ""
echo " RUSTDESK Server: 192.168.1.50"
echo " → Ports: 21115-21119"
echo " → Key: cat ~/docker/rustdesk/id_ed25519.pub"
echo ""
echo " WiFi AP: ${WIFI_SSID} (CHANGE PASSWORD!)"
echo ""