Ports¶
| Port | Serves | Public | Setting |
|---|---|---|---|
| 7600 | S3 API, and embed links at /e/<token> |
Yes, behind TLS | server.s3_bind |
| 7601 | Management API, /metrics, share delivery at /s/<token> |
No | server.api_bind |
| 7602 | Web console, and share links at /s/<token> |
Yes, behind TLS | Console PORT |
What to expose¶
flowchart TB
subgraph internet [Internet]
U[Applications and people]
end
subgraph edge [TLS terminator]
P[Reverse proxy]
end
subgraph private [Private network]
S["7600 S3 API"]
C["7602 Console"]
M["7601 Management"]
end
U --> P
P --> S
P --> C
C --> M
7601 is unrestricted administrative access. A management token on that port can create credentials, change policies, and read every bucket. It must not be reachable from the internet.
7600 — S3 API¶
The data plane. Applications sign requests here with SigV4.
It also serves embed links at /e/<token> — an embed delivers object bytes into
somebody else's page, so it belongs on the storage endpoint rather than the console.
7601 — Management API¶
Administration, plus:
| Path | Auth |
|---|---|
/api/v1/* |
Management bearer token |
/health, /ready |
None |
/metrics |
Metrics scrape token |
/s/<token> |
The capability token itself |
Binding it to loopback is the simplest way to keep it private when the console runs on the same host. In Compose or Kubernetes, use the internal network name and publish nothing.
To reach it remotely, tunnel:
7602 — Web console¶
A separate process. It calls the management API server-side; the browser never does.
PORT=7602
RECORD_STORE_API_URL=http://record-store:7601
RECORD_STORE_CONSOLE_SECURE_COOKIES=true
RECORD_STORE_SHARING_SHARE_BASE_URL=https://console.example.com
Share links resolve on the console because a share is a page a person opens.
7602 is reserved. Configuration validation refuses to let any Record Store listener bind it.
Validation¶
Enforced at startup:
- The server listeners must be different from each other.
- None may use port 7602.
- No port may be zero.
Firewall¶
Verify: