173 lines
4.9 KiB
Bash
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 ""
|