fix: add network manager GUI and manual network configuration

- Add networkmanagerapplet for GUI network management in GNOME
- Add network status checking to bash initialization
- Add network_help function for manual configuration guidance
- Create comprehensive MANUAL_NETWORK_SETUP.md documentation
- Update ISO label to workshop-friendly name
- Fix NetworkManager configuration for live ISO

This resolves the issue where network manager was not accessible
in the live USB boot environment and provides fallback options
for manual network configuration when internet is not available.
This commit is contained in:
2025-09-16 00:10:25 +02:00
parent 0daef10532
commit 023f0acef3
2 changed files with 312 additions and 35 deletions

View File

@@ -12,6 +12,8 @@ let
isoImage = { isoImage = {
makeEfiBootable = true; makeEfiBootable = true;
makeUsbBootable = true; makeUsbBootable = true;
# Custom boot menu label for workshop
label = "CODECRISPIES_WORKSHOP";
}; };
}; };
@@ -234,7 +236,6 @@ isoConfig
networking = { networking = {
networkmanager = { networkmanager = {
enable = true; enable = true;
#wifi.enable = true;
dns = "none"; # We use dnsmasq dns = "none"; # We use dnsmasq
ensureProfiles = { ensureProfiles = {
environmentFiles = [ "/etc/NetworkManager/workshop-wifi.env" ]; environmentFiles = [ "/etc/NetworkManager/workshop-wifi.env" ];
@@ -365,6 +366,7 @@ isoConfig
curl curl
git git
networkmanager networkmanager
networkmanagerapplet # Network Manager GUI for GNOME
docker docker
docker-compose docker-compose
gnome-terminal gnome-terminal
@@ -566,14 +568,24 @@ isoConfig
echo "Mode: Local Development (Offline Co-op Cloud)" echo "Mode: Local Development (Offline Co-op Cloud)"
echo "" echo ""
# DNS Health Check # Network Health Check
if command -v nslookup >/dev/null 2>&1; then echo "🌐 Network Status:"
if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then if systemctl is-active --quiet NetworkManager; then
echo " DNS wildcard ready: *.workshop.local 127.0.0.1" echo " NetworkManager running"
else nmcli -t -f STATE general | head -1
echo " DNS not working! Run: sudo systemctl restart dnsmasq" else
fi echo " NetworkManager not running"
fi echo " Start with: sudo systemctl start NetworkManager"
fi
# DNS Health Check
if command -v nslookup >/dev/null 2>&1; then
if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then
echo " DNS wildcard ready: *.workshop.local 127.0.0.1"
else
echo " DNS not working! Run: sudo systemctl restart dnsmasq"
fi
fi
# Ensure /root/.local/bin is in PATH (safety net) # Ensure /root/.local/bin is in PATH (safety net)
if [[ ":$PATH:" != *":/root/.local/bin:"* ]]; then if [[ ":$PATH:" != *":/root/.local/bin:"* ]]; then
@@ -1208,32 +1220,64 @@ isoConfig
fi fi
} }
help() { network_help() {
echo "🚀 CODE CRISPIES Workshop Commands:" echo "🌐 Network Configuration Help:"
echo "" echo ""
echo "🏠 Local Development:" echo "🔍 Check Network Status:"
echo " setup - Setup local proxy (REQUIRED FIRST!)" echo " nmcli device status - Show network devices"
echo " recipes - Show all available apps" echo " nmcli connection show - Show available connections"
echo " deploy <recipe> - Deploy app locally" echo " nmcli connection up <name> - Connect to network"
echo " browser [recipe] - Launch browser [to app]" echo " systemctl status NetworkManager - Check service status"
echo " desktop - Start GUI session" echo ""
echo " sudo abra - Run abra CLI directly as root" echo "📡 Manual WiFi Connection:"
echo "" echo " nmcli device wifi list - Scan for WiFi networks"
echo " Cloud Access:" echo " nmcli device wifi connect <SSID> password <PASSWORD>"
echo " connect <name> - SSH to cloud server" echo " nmcli connection up <connection-name>"
echo " Available: ${serverList}" echo ""
echo "" echo "🔧 GUI Network Manager:"
echo "🔍 Debug:" echo " Click network icon in top bar Settings"
echo " docker service ls - List running services" echo " Or run: nm-connection-editor"
echo " systemctl status dnsmasq - Check DNS" echo ""
echo " systemctl status workshop-abra-install - Check abra installation" echo "🌍 Test Internet Connection:"
echo "" echo " ping 8.8.8.8 - Test basic connectivity"
echo "📚 Learning Flow:" echo " curl https://abra.coopcloud.tech - Test HTTPS"
echo " 1. setup" echo ""
echo " 2. deploy wordpress" echo "📋 Offline Setup (No Internet):"
echo " 3. browser wordpress" echo " 1. Configure network manually using above commands"
echo " 4. connect hopper" echo " 2. Run 'setup' to initialize local environment"
} echo " 3. Deploy apps locally without external dependencies"
echo " 4. Use 'browser <app>' to access deployed services"
}
help() {
echo "🚀 CODE CRISPIES Workshop Commands:"
echo ""
echo "🏠 Local Development:"
echo " setup - Setup local proxy (REQUIRED FIRST!)"
echo " recipes - Show all available apps"
echo " deploy <recipe> - Deploy app locally"
echo " browser [recipe] - Launch browser [to app]"
echo " desktop - Start GUI session"
echo " sudo abra - Run abra CLI directly as root"
echo ""
echo "🌐 Network:"
echo " network_help - Network configuration guide"
echo ""
echo " Cloud Access:"
echo " connect <name> - SSH to cloud server"
echo " Available: ${serverList}"
echo ""
echo "🔍 Debug:"
echo " docker service ls - List running services"
echo " systemctl status dnsmasq - Check DNS"
echo " systemctl status workshop-abra-install - Check abra installation"
echo ""
echo "📚 Learning Flow:"
echo " 1. setup"
echo " 2. deploy wordpress"
echo " 3. browser wordpress"
echo " 4. connect hopper"
}
''; '';
programs.firefox = { programs.firefox = {

View File

@@ -0,0 +1,233 @@
# Manual Network Configuration for Workshop Environment
This guide explains how to configure network connectivity manually when the GUI network manager is not available or when setting up the workshop environment offline.
## Prerequisites
- Root or sudo access
- Basic command line knowledge
- Network interface name (usually `eth0`, `wlan0`, etc.)
## Quick Network Diagnosis
```bash
# Check network interfaces
ip addr show
# Check NetworkManager status
systemctl status NetworkManager
# Check current connections
nmcli connection show
# Check device status
nmcli device status
# Test internet connectivity
ping -c 3 8.8.8.8
curl -I https://abra.coopcloud.tech
```
## Manual WiFi Connection
### Method 1: Using nmcli (Command Line)
```bash
# Scan for WiFi networks
nmcli device wifi list
# Connect to a WiFi network (replace SSID and PASSWORD)
nmcli device wifi connect "YourWiFiSSID" password "YourWiFiPassword"
# Connect to hidden network
nmcli device wifi connect "HiddenSSID" password "password" hidden yes
# Check connection status
nmcli connection show --active
```
### Method 2: Using wpa_supplicant (Advanced)
```bash
# Create wpa_supplicant configuration
sudo tee /etc/wpa_supplicant.conf > /dev/null <<EOF
network={
ssid="YourWiFiSSID"
psk="YourWiFiPassword"
}
EOF
# Connect using wpa_supplicant
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
```
## Manual Ethernet Connection
```bash
# Bring interface up
sudo ip link set eth0 up
# Get IP via DHCP
sudo dhclient eth0
# Or set static IP
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
```
## Workshop-Specific Network Setup
### Connect to Workshop WiFi
```bash
# Connect to workshop hotspot (if available)
nmcli device wifi connect "ziegel" password "1234567890"
```
### Configure Local DNS Resolution
```bash
# Ensure dnsmasq is running for local DNS
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
# Test local DNS
nslookup traefik.workshop.local 127.0.0.1
```
## Offline Setup Workflow
When internet is not available during workshop setup:
1. **Configure Network Manually**
```bash
# Use one of the methods above to get network connectivity
nmcli device wifi connect "YourNetwork" password "YourPassword"
```
2. **Skip Online Dependencies**
```bash
# The setup script will work offline once network is configured
setup
```
3. **Manual abra Installation** (if needed)
```bash
# Download abra binary manually on another machine and transfer via USB
# Or use a local package repository
```
4. **Deploy Local Services**
```bash
# Deploy services that don't require internet
deploy gitea # Local git server
deploy nextcloud # Local file sharing
```
## Troubleshooting
### NetworkManager Issues
```bash
# Restart NetworkManager
sudo systemctl restart NetworkManager
# Reconnect to network
nmcli connection up "connection-name"
# Delete problematic connection
nmcli connection delete "connection-name"
```
### DNS Issues
```bash
# Flush DNS cache
sudo systemctl restart dnsmasq
# Check DNS resolution
dig @127.0.0.1 workshop.local
# Manual DNS test
nslookup google.com 8.8.8.8
```
### Firewall Issues
```bash
# Check firewall status (should be disabled for workshop)
sudo ufw status
sudo iptables -L
# Temporarily disable firewall (if interfering)
sudo ufw disable
```
## GUI Network Manager
If the GUI is available:
1. Click the network icon in the top-right corner
2. Select "Settings" or "Wi-Fi Settings"
3. Choose your network from the list
4. Enter password if required
5. The connection should be established automatically
## Advanced Configuration
### Create Custom Network Profile
```bash
# Create a new connection profile
nmcli connection add type wifi con-name "MyWorkshopNetwork" ifname wlan0 ssid "WorkshopWiFi"
# Configure the connection
nmcli connection modify "MyWorkshopNetwork" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "MyWorkshopNetwork" wifi-sec.psk "workshoppassword"
# Set as autoconnect
nmcli connection modify "MyWorkshopNetwork" connection.autoconnect yes
```
### Static IP Configuration
```bash
# Set static IP for workshop environment
nmcli connection modify "MyWorkshopNetwork" ipv4.method manual
nmcli connection modify "MyWorkshopNetwork" ipv4.addresses "192.168.100.10/24"
nmcli connection modify "MyWorkshopNetwork" ipv4.gateway "192.168.100.1"
nmcli connection modify "MyWorkshopNetwork" ipv4.dns "8.8.8.8,1.1.1.1"
```
## Emergency Network Access
If all else fails, you can use USB tethering:
1. Connect phone via USB
2. Enable USB tethering on phone
3. The connection should appear as `usb0` or similar
4. Configure as above using `nmcli` or GUI
## Testing Your Setup
```bash
# Test basic connectivity
ping 8.8.8.8
# Test DNS
nslookup google.com
# Test workshop services
curl http://traefik.workshop.local
# Test abra connectivity
sudo abra server ls
```
## Getting Help
- Run `network_help` in the workshop terminal for quick reference
- Check system logs: `journalctl -u NetworkManager`
- Use `nmcli --help` for detailed command options