#!/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 ""