v2.2.7 aefe19e

server.md RawHistoryFolder

Server Configuration

Core server settings for Gordon.

Configuration

[server]
port = 8080                              # HTTP proxy port
registry_port = 5000                     # Container registry port
registry_domain = "registry.mydomain.com" # Registry domain (required)
# data_dir = "~/.gordon"                 # Data storage directory (default)

Options

Option Type Default Description
port int 80 HTTP proxy port for routing traffic to containers
registry_port int 5000 Docker registry port for image push/pull
registry_domain string required Domain for the container registry
data_dir string ~/.gordon Directory for registry data, logs, and env files

Port Configuration

Proxy Port

The port setting controls where Gordon listens for HTTP traffic:

[server]
port = 8080  # Use 8080 for rootless containers with port forwarding

For rootless containers, you'll typically use a high port and configure firewall port forwarding:

# Forward port 80 to 8080
sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080

Registry Port

The registry_port setting controls where Gordon accepts image pushes:

[server]
registry_port = 5000

Docker/Podman clients push to this port:

docker push registry.mydomain.com:5000/myapp:latest

Registry Domain

The registry_domain is required and must match your DNS configuration:

[server]
registry_domain = "registry.mydomain.com"

This domain is used for:

  • Docker login authentication
  • Image push/pull operations
  • Internal registry references

Data Directory

The data_dir setting controls where Gordon stores data:

[server]
data_dir = "~/.gordon"  # Default for user installations

Directory Structure

~/.gordon/
├── registry/           # Container images and manifests
│   ├── blobs/
│   └── manifests/
├── env/                # Environment files per domain
│   ├── app_mydomain_com.env
│   └── api_mydomain_com.env
├── logs/               # Application and container logs
│   ├── gordon.log
│   ├── proxy.log
│   └── containers/
└── secrets/            # Secrets (unsafe backend only)

Permissions

Gordon creates directories with secure permissions:

  • Directories: 0700 (owner only)
  • Files: 0600 (owner only)

Examples

Development Configuration

[server]
port = 8080
registry_port = 5000
registry_domain = "registry.local"
data_dir = "./dev-data"

Production Configuration

[server]
port = 8080
registry_port = 5000
registry_domain = "registry.company.com"
data_dir = "/var/lib/gordon"

Rootless Container Setup

[server]
port = 8080      # High port for rootless
registry_port = 5000
registry_domain = "registry.mydomain.com"

With firewall port forwarding:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
sudo firewall-cmd --reload
source
1# Server Configuration
2
3Core server settings for Gordon.
4
5## Configuration
6
7```toml
8[server]
9port = 8080                              # HTTP proxy port
10registry_port = 5000                     # Container registry port
11registry_domain = "registry.mydomain.com" # Registry domain (required)
12# data_dir = "~/.gordon"                 # Data storage directory (default)
13```
14
15## Options
16
17| Option | Type | Default | Description |
18|--------|------|---------|-------------|
19| `port` | int | `80` | HTTP proxy port for routing traffic to containers |
20| `registry_port` | int | `5000` | Docker registry port for image push/pull |
21| `registry_domain` | string | **required** | Domain for the container registry |
22| `data_dir` | string | `~/.gordon` | Directory for registry data, logs, and env files |
23
24## Port Configuration
25
26### Proxy Port
27
28The `port` setting controls where Gordon listens for HTTP traffic:
29
30```toml
31[server]
32port = 8080  # Use 8080 for rootless containers with port forwarding
33```
34
35For rootless containers, you'll typically use a high port and configure firewall port forwarding:
36
37```bash
38# Forward port 80 to 8080
39sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
40```
41
42### Registry Port
43
44The `registry_port` setting controls where Gordon accepts image pushes:
45
46```toml
47[server]
48registry_port = 5000
49```
50
51Docker/Podman clients push to this port:
52
53```bash
54docker push registry.mydomain.com:5000/myapp:latest
55```
56
57## Registry Domain
58
59The `registry_domain` is required and must match your DNS configuration:
60
61```toml
62[server]
63registry_domain = "registry.mydomain.com"
64```
65
66This domain is used for:
67- Docker login authentication
68- Image push/pull operations
69- Internal registry references
70
71## Data Directory
72
73The `data_dir` setting controls where Gordon stores data:
74
75```toml
76[server]
77data_dir = "~/.gordon"  # Default for user installations
78```
79
80### Directory Structure
81
82```
83~/.gordon/
84├── registry/           # Container images and manifests
85│   ├── blobs/
86│   └── manifests/
87├── env/                # Environment files per domain
88│   ├── app_mydomain_com.env
89│   └── api_mydomain_com.env
90├── logs/               # Application and container logs
91│   ├── gordon.log
92│   ├── proxy.log
93│   └── containers/
94└── secrets/            # Secrets (unsafe backend only)
95```
96
97### Permissions
98
99Gordon creates directories with secure permissions:
100- Directories: `0700` (owner only)
101- Files: `0600` (owner only)
102
103## Examples
104
105### Development Configuration
106
107```toml
108[server]
109port = 8080
110registry_port = 5000
111registry_domain = "registry.local"
112data_dir = "./dev-data"
113```
114
115### Production Configuration
116
117```toml
118[server]
119port = 8080
120registry_port = 5000
121registry_domain = "registry.company.com"
122data_dir = "/var/lib/gordon"
123```
124
125### Rootless Container Setup
126
127```toml
128[server]
129port = 8080      # High port for rootless
130registry_port = 5000
131registry_domain = "registry.mydomain.com"
132```
133
134With firewall port forwarding:
135```bash
136sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
137sudo firewall-cmd --reload
138```
139
140## Related
141
142- [Configuration Overview](./index.md)
143- [Installation Guide](../installation.md)
144- [Routes Configuration](./routes.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