# UDM Pro - Manual Static Route Creation **Last Updated:** 2026-01-14 **Status:** Active Documentation **Issue:** Add button not visible, automation unable to find it --- ## Quick Steps 1. **Open Browser:** `https://192.168.0.1` 2. **Login:** `unifi_api` / `L@kers2010$$` 3. **Navigate:** Settings → Routing & Firewall → Static Routes 4. **Find Add Button** (see locations below) 5. **Fill Form:** - Name: `Route to VLAN 11` - Destination: `192.168.11.0/24` - Gateway: `192.168.11.1` - Distance: `1` 6. **Click Save** 7. **Test:** `ping 192.168.11.10` --- ## Finding the Add Button ### Location 1: Empty State If no routes exist, you might see: - Large button: "Create Route" or "Add Route" - Text: "Create your first route" (click it) - Empty state message in center of page ### Location 2: Tabs Look for tabs at the top: - "Static Routes" - "IPv4 Routes" - "Routes" - Click different tabs to see if Add button appears ### Location 3: Top-Right Corner - Look for "+" icon button - "Add" text button - Usually in toolbar/header area ### Location 4: Table Header - If routes table exists, check header row - Look for "+" icon in header - "Add" button in table toolbar ### Location 5: Scroll Down - Button might be below visible area - Scroll the page down - Check bottom of routes section ### Location 6: Browser DevTools 1. Press **F12** to open DevTools 2. Go to **Console** tab 3. Type and press Enter: ```javascript document.querySelectorAll('button, a').forEach((btn, i) => { const text = btn.textContent.trim(); if (text.toLowerCase().includes('add') || text.toLowerCase().includes('create') || text.toLowerCase().includes('route')) { console.log(i, text, btn.className, btn.id); btn.style.border = '3px solid red'; // Highlight it } }); ``` 4. This will highlight any buttons with "add", "create", or "route" in the text --- ## Alternative: Direct URL (If Available) Try navigating directly to the Add Route form: - `https://192.168.0.1/network/default/settings/routing/add` - `https://192.168.0.1/network/default/settings/routing/new` - `https://192.168.0.1/network/default/settings/routing/create` --- ## Troubleshooting ### Still Can't Find Add Button? 1. **Check Permissions:** - Ensure `unifi_api` account has network management permissions - Verify account is admin-level 2. **Try Different Browser:** - Chrome, Firefox, Edge - Clear cache and cookies 3. **Check Page Source:** - Right-click page → View Page Source - Search for "add" or "route" - Look for button elements 4. **Refresh Page:** - Press F5 to refresh - Wait for page to fully load - Try again 5. **Check for JavaScript Errors:** - Press F12 → Console tab - Look for red error messages - Report any errors --- ## Route Configuration Details **Route Name:** Route to VLAN 11 **Destination Network:** 192.168.11.0/24 **Gateway:** 192.168.11.1 **Distance:** 1 **Interface:** (leave default or select VLAN 11 interface) --- ## Verification After creating the route: 1. **Check Route List:** - Should see "Route to VLAN 11" in the list - Verify destination and gateway are correct 2. **Test Connectivity:** ```bash ping -c 3 192.168.11.1 # Gateway ping -c 3 192.168.11.10 # Proxmox host ``` 3. **Check Routing Table (via API):** ```bash cd /home/intlc/projects/proxmox NODE_TLS_REJECT_UNAUTHORIZED=0 node -e " const https = require('https'); const fs = require('fs'); const env = fs.readFileSync(require('os').homedir() + '/.env', 'utf8') .split('\n').filter(l => l.includes('=')) .reduce((acc, l) => { const [k, ...v] = l.split('='); acc[k.trim()] = v.join('=').trim().replace(/^['\"]|['\"]$/g, ''); return acc; }, {}); const options = { hostname: '192.168.0.1', path: '/proxy/network/api/s/default/rest/routing', method: 'GET', headers: { 'Authorization': 'Bearer ' + (env.UNIFI_API_KEY || '') }, rejectUnauthorized: false }; https.request(options, (res) => { let data = ''; res.on('data', d => data += d); res.on('end', () => { try { const routes = JSON.parse(data).data || []; console.log('Routes:', routes.length); routes.forEach(r => console.log(r.name, r.network, r.gateway)); } catch(e) { console.log('Error:', e.message); } }); }).on('error', e => console.error(e.message)).end(); " 2>&1 | grep -v Warning ``` --- **Last Updated:** 2026-01-14