- Consolidated documentation from Ralph Loop iterations - Archived 20+ outdated/superseded files to .archive/ - Kept essential docs: OIDC integration, mobile setup, quick start - Added operational scripts for health monitoring and backup - Research artifacts preserved in .tasks/artifacts/ Current state: - 3 VPS sites (fry, proton, photon) ONLINE in Pangolin - brn-home site pending for local services (Jellyfin, etc.) - Mobile access configuration pending Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9.3 KiB
Pangolin Mobile Client Setup Guide
Date: 2026-01-20 22:26:00+00:00 Device: Android (pixel9pro, pixel6pro) Current: Connected to 10.50.0.0/24 via WLAN Goal: Access services via Pangolin tunnel when on WAN/mobile network
Prerequisites
Before Setting Up Mobile:
- ✅ Pangolin control plane running (https://tunnel.obr.sh)
- ✅ Authentik SSO configured with Pangolin
- ⏸️ At least one site created in Pangolin (brn-home)
- ⏸️ At least one resource configured (e.g., Jellyfin)
Without sites/resources, the tunnel works but has nothing to access.
Part 1: Install Pangolin Mobile App
Android (Google Play Store)
App Name: Pangolin
Install:
- Open Google Play Store on pixel9pro or pixel6pro
- Search for "Pangolin"
- Install the official Pangolin app (by fosrl)
- Open the app
Alternative: F-Droid (if available)
Part 2: Enroll Mobile Device
Option A: QR Code Enrollment (Easiest)
On Desktop (accessing Pangolin dashboard):
-
Login to Pangolin: https://tunnel.obr.sh
- Use your Pangolin admin account
- Or "Login with Authentik" if SSO configured
-
Navigate to: Clients or Devices (left sidebar)
-
Click: Add Client or Enroll Device
-
Select: Mobile Device
-
QR Code appears on screen
On Mobile (pixel9pro/pixel6pro):
- Open Pangolin app
- Tap: Scan QR Code or Add Server
- Point camera at QR code on desktop
- Automatic enrollment - device connects
- App may prompt for permissions (VPN, notifications) - ALLOW these
Done! Device enrolled and connected.
Option B: Manual Enrollment
On Mobile App:
-
Open Pangolin app
-
Tap: Add Server or Manual Setup
-
Enter server details:
Server URL: https://tunnel.obr.sh -
Tap Continue
-
Login with Authentik (if SSO configured):
- Browser opens to Authentik login
- Enter: akadmin / (password)
- Enter MFA code
- Approve access
- Returns to app
-
Device enrolled and tunnel connected
Part 3: Access Services Through Tunnel
Once connected, the Pangolin app creates a VPN tunnel.
Accessing Jellyfin via Tunnel
On Mobile (when NOT on home WiFi):
-
Ensure Pangolin tunnel is connected:
- Open Pangolin app
- Should show "Connected" status
- May show data transfer stats
-
Open browser on mobile (Chrome, Firefox, etc.)
-
Navigate to: https://video.obnh.io
-
Jellyfin loads through the tunnel!
- Traffic: Mobile → WAN → tunnel.obr.sh (brn) → WireGuard tunnel → jellyfin:8096
- Encrypted end-to-end
- No public exposure
-
Login to Jellyfin:
- If SSO configured: Click "Login with Authentik"
- If not: Use Jellyfin credentials
- Or use Quick Connect (6-digit code from web)
Accessing Other Services
Through Pangolin tunnel, you can access:
OpenWebUI: https://ll.obr.sh Transmission: https://tor.obnh.network Pi-hole Admin: https://dns.obnh.io Guacamole (RDP in browser!): https://remote.obr.sh/guacamole/
All work the same way:
- Connect Pangolin VPN
- Open mobile browser
- Navigate to service URL
- Authenticate (SSO or service-specific login)
Part 4: Understanding Pangolin Tunnel Behavior
When on Home WiFi (10.50.0.0/24):
Pangolin tunnel OFF:
- Services accessible directly via LAN
- Faster (no tunnel overhead)
- More battery efficient
Pangolin tunnel ON (optional):
- Still works, routes through tunnel
- No advantage when on home network
- Can leave on for convenience
When on Mobile Network / External WiFi:
Pangolin tunnel REQUIRED:
- Services only accessible through tunnel
- Encrypted WireGuard connection
- Appears as if you're on home LAN to services
Without tunnel:
- Services unreachable (after Traefik restrictions applied)
- Or requires public WAN exposure (less secure)
Part 5: Pangolin App Features
Connection Management
Toggle Tunnel:
- Tap connection to enable/disable
- Green = connected
- Grey = disconnected
Auto-Connect:
- Settings → Auto-connect on mobile data
- Automatically connects when off home WiFi
Kill Switch:
- Settings → Block internet when tunnel down
- Prevents leaking traffic if tunnel fails
Resource Access
Pangolin can show available resources:
- List of services you can access
- Quick links to open in browser
- Connection status per service
VPN Configuration
Pangolin uses WireGuard under the hood:
- Android VPN permission required
- Shows in notification area when connected
- Can view connection stats (data transfer, latency)
Part 6: Mobile App Troubleshooting
Cannot Enroll Device
Check:
- Pangolin dashboard accessible from mobile (https://tunnel.obr.sh)
- Firewall allows UDP 51821 (already configured on brn)
- Mobile has internet connectivity
Try:
- Use manual enrollment instead of QR
- Check Pangolin dashboard logs for connection attempts
Tunnel Connects But Services Unreachable
Check:
- Sites created in Pangolin dashboard
- Resources configured for services
- Newt client running on brn (connects services to Pangolin)
Deploy Newt on brn:
# Get command from Pangolin dashboard: Sites → brn-home → Connection
# Will look like:
docker run -d --name newt --cap-add NET_ADMIN \
-e SITE_TOKEN="<from_dashboard>" \
-e PANGOLIN_URL="https://tunnel.obr.sh" \
--network traefik \
fosrl/newt:latest
Battery Drain
Pangolin tunnel uses some battery:
- Normal: 5-10% extra per day
- High drain: Check for constant reconnections
Optimize:
- Disable tunnel when on home WiFi
- Use WiFi calling if available
- Enable battery optimization for Pangolin app (Android settings)
Part 7: Security Considerations
When Using Mobile Tunnel
Encrypted:
- ✅ WireGuard encryption (end-to-end)
- ✅ TLS for HTTPS services
- ✅ Double encryption for services
Authentication:
- ✅ Authentik SSO if configured
- ✅ Service-specific auth (Jellyfin, etc.)
- ✅ MFA on Authentik login
Safe To Use On:
- Public WiFi (coffee shop, airport)
- Hotel networks
- Mobile data
- Any untrusted network
What Gets Tunneled
Through Pangolin:
- Only traffic to configured Pangolin resources
- Example: video.obnh.io, ll.obr.sh, etc.
NOT tunneled:
- General internet traffic (Google, YouTube, etc.)
- Other apps on phone
- System updates
This is NOT a full VPN - it's a tunneled reverse proxy for specific services.
Part 8: Multi-Device Support
Setting Up pixel6pro (Second Device)
Same process:
- Install Pangolin app
- Scan QR code from dashboard (generates new enrollment)
- Or use manual enrollment
- Each device gets unique WireGuard keys
- Both can connect simultaneously
Device Management:
- View all devices in Pangolin dashboard (Clients section)
- Revoke access per device if phone lost/stolen
- See last connection time per device
Part 9: Accessing Guacamole RDP on Mobile
This is REALLY cool:
On Mobile (connected to Pangolin tunnel):
- Open browser: Chrome or Firefox
- Navigate to: https://remote.obr.sh/guacamole/
- Login (guacadmin or Authentik SSO)
- Click: argon-rdp connection (after you create it)
- Your Windows 11 desktop IN YOUR MOBILE BROWSER!
- Full RDP session
- Touch controls translated to mouse/keyboard
- Can copy/paste between mobile and Windows
- Can transfer files (if configured)
Use Cases:
- Remote desktop from anywhere
- Emergency Windows access
- Run Windows-only apps from phone
- Access files on Windows machine
Part 10: Jellyfin Mobile App Through Tunnel
Jellyfin official app + Pangolin tunnel:
Setup:
- Install Jellyfin app (Google Play)
- Connect Pangolin tunnel first
- Open Jellyfin app
- Add server: https://video.obnh.io
- Quick Connect:
- App shows 6-digit code
- On desktop browser: Login to Jellyfin → Dashboard → Devices
- Enter the 6-digit code
- Device authorized
- Jellyfin app now connected through tunnel
Benefits:
- Better than browser (native video player)
- Downloads for offline viewing
- Better performance
- Background audio playback
Quick Reference Card
Pangolin Connection:
Server: https://tunnel.obr.sh
Login: Authentik SSO (akadmin)
Protocol: WireGuard
Port: 51821/UDP
Services Through Tunnel:
Jellyfin: https://video.obnh.io
OpenWebUI: https://ll.obr.sh
Transmission: https://tor.obnh.network
Pi-hole: https://dns.obnh.io
Guacamole: https://remote.obr.sh/guacamole/
When to Connect:
- On mobile data: ✅ Connect
- On public WiFi: ✅ Connect
- On home WiFi (10.50.0.x): ⏸️ Optional (direct LAN access)
Next Steps
1. Complete 2 WebUI steps (see above - 5 minutes total)
2. Provide credentials to automation:
cat /home/olaf/pangolin/oidc-pangolin.txt
3. I will then:
- Create all other OIDC providers via Authentik API
- Configure all services programmatically
- Create Pangolin sites and resources
- Provide final mobile enrollment QR code
4. Install Pangolin app and enroll (2 minutes)
5. Test accessing Jellyfin from mobile data (1 minute)
Total setup time: ~15 minutes start to finish
File: /home/olaf/pangolin/MOBILE-CLIENT-SETUP.md
Start with: Complete Step 1 in /home/olaf/pangolin/WEBUI-ONLY-STEPS.md