v2.4.1 7c3b292

external-routes.md RawHistoryFolder

External Routes Configuration

External routes allow proxying to non-containerized services running on the host or network.

Configuration

[external_routes]
"service.mydomain.com" = "localhost:3000"
"cache.mydomain.com" = "192.168.1.100:6379"

Syntax

[external_routes]
"<domain>" = "<host>:<port>"
Component Description
domain Fully qualified domain name
host Target hostname or IP address
port Target port number

Use Cases

Database Admin Tools

Proxy to database admin interfaces:

[external_routes]
"pgadmin.mydomain.com" = "localhost:5050"
"redis-commander.mydomain.com" = "localhost:8081"

Legacy Services

Proxy to services that can't be containerized:

[external_routes]
"legacy-api.mydomain.com" = "192.168.1.50:8080"

How It Works

  1. Request arrives for service.mydomain.com
  2. Gordon checks if domain matches an external route
  3. If matched, proxies directly to the configured host:port
  4. No container lookup is performed
Client ─> Gordon Proxy ─> External Service
          (port 80)       (configured host:port)

Limitations

  • HTTP only (no HTTPS upstream)
  • No health checks
  • No load balancing

Hot Reload

External routes reload automatically when the config file changes:

# Edit config
vim ~/.config/gordon/gordon.toml

# Add external route
[external_routes]
"newservice.mydomain.com" = "localhost:9000"

# Save - Gordon reloads automatically
source
1# External Routes Configuration
2
3External routes allow proxying to non-containerized services running on the host or network.
4
5## Configuration
6
7```toml
8[external_routes]
9"service.mydomain.com" = "localhost:3000"
10"cache.mydomain.com" = "192.168.1.100:6379"
11```
12
13## Syntax
14
15```toml
16[external_routes]
17"<domain>" = "<host>:<port>"
18```
19
20| Component | Description |
21|-----------|-------------|
22| `domain` | Fully qualified domain name |
23| `host` | Target hostname or IP address |
24| `port` | Target port number |
25
26## Use Cases
27
28### Database Admin Tools
29
30Proxy to database admin interfaces:
31
32```toml
33[external_routes]
34"pgadmin.mydomain.com" = "localhost:5050"
35"redis-commander.mydomain.com" = "localhost:8081"
36```
37
38### Legacy Services
39
40Proxy to services that can't be containerized:
41
42```toml
43[external_routes]
44"legacy-api.mydomain.com" = "192.168.1.50:8080"
45```
46
47## How It Works
48
491. Request arrives for `service.mydomain.com`
502. Gordon checks if domain matches an external route
513. If matched, proxies directly to the configured `host:port`
524. No container lookup is performed
53
54```
55Client ─> Gordon Proxy ─> External Service
56          (port 80)       (configured host:port)
57```
58
59## Limitations
60
61- HTTP only (no HTTPS upstream)
62- No health checks
63- No load balancing
64
65## Hot Reload
66
67External routes reload automatically when the config file changes:
68
69```bash
70# Edit config
71vim ~/.config/gordon/gordon.toml
72
73# Add external route
74[external_routes]
75"newservice.mydomain.com" = "localhost:9000"
76
77# Save - Gordon reloads automatically
78```
79
80## Related
81
82- [Routes Configuration](./routes.md)
83- [Configuration Overview](./index.md)

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close