# URL Mapping Guide

## ✅ Correct URLs (No Port Needed)

When using Cloudflare Tunnel, **do not include the port** in the public URL. The tunnel handles port mapping internally.

### Correct Access URLs

| Public URL | Internal Target | Description |
|------------|----------------|-------------|
| `https://ml110-01.d-bis.org/` | `https://192.168.11.10:8006` | Proxmox UI on ml110-01 |
| `https://r630-01.d-bis.org/` | `https://192.168.11.11:8006` | Proxmox UI on r630-01 |
| `https://r630-02.d-bis.org/` | `https://192.168.11.12:8006` | Proxmox UI on r630-02 |

### ❌ Incorrect URLs

**Do NOT use these:**
- ❌ `https://r630-01.d-bis.org:8006/` - Port should not be in public URL
- ❌ `http://r630-01.d-bis.org/` - Must use HTTPS
- ❌ `r630-01.d-bis.org:8006` - Missing protocol and port not needed

## How It Works

```
User Browser
    ↓
https://r630-01.d-bis.org/  (no port)
    ↓
Cloudflare Edge (TLS termination)
    ↓
Cloudflare Tunnel (encrypted)
    ↓
cloudflared agent (VMID 102)
    ↓
https://192.168.11.11:8006  (internal, port specified here)
    ↓
Proxmox UI
```

## Port Configuration

The port (`8006`) is configured in:
- **Tunnel config**: `/etc/cloudflared/tunnel-r630-01.yml`
- **Cloudflare Dashboard**: Tunnel → Configure → Ingress rules

You specify the port in the tunnel configuration, but users access via the hostname **without** the port.

## Testing

```bash
# Correct - no port
curl -I https://r630-01.d-bis.org

# Incorrect - will fail or not route correctly
curl -I https://r630-01.d-bis.org:8006
```

## Summary

- ✅ **Use**: `https://r630-01.d-bis.org/`
- ❌ **Don't use**: `https://r630-01.d-bis.org:8006/`
- 📍 **Routes to**: `https://192.168.11.11:8006` (internal)

