Go Modules
NORA implements the Go module proxy protocol (GOPROXY). It stores Go modules and serves them to go commands. Modules are immutable once stored.
Client Configuration
Section titled “Client Configuration”Point go at NORA:
export GOPROXY=http://nora.example.com:4000/go,directexport GONOSUMCHECK=* # optional, skip sumdb for private modulesThen use Go as usual:
go get example.com/my-module@v1.2.3go mod downloadUpstream Proxy
Section titled “Upstream Proxy”NORA fetches modules from the upstream Go proxy when they are not found locally.
config.toml:
[go]enabled = trueproxy = "https://proxy.golang.org"proxy_timeout = 30proxy_timeout_zip = 120max_zip_size = 104857600 # 100MBEnvironment variables:
| Variable | Description | Default |
|---|---|---|
NORA_GO_ENABLED | Enable Go module proxy | true |
NORA_GO_PROXY | Upstream proxy URL | https://proxy.golang.org |
NORA_GO_PROXY_AUTH | Upstream auth (user:pass) | — |
NORA_GO_PROXY_TIMEOUT | Upstream timeout for metadata (seconds) | 30 |
NORA_GO_PROXY_TIMEOUT_ZIP | Upstream timeout for .zip downloads (seconds) | 120 |
NORA_GO_MAX_ZIP_SIZE | Max module zip size in bytes | 104857600 (100 MB) |
Features
Section titled “Features”| Feature | Status | Notes |
|---|---|---|
/@v/list | Full | List known versions |
/@v/{version}.info | Full | Version metadata JSON |
/@v/{version}.mod | Full | go.mod file |
/@v/{version}.zip | Full | Module zip archive |
/@latest | Full | Latest version info |
| Module path escaping | Full | !x to X per spec |
| Immutability | Full | .info, .mod, .zip immutable after first write |
| Configurable zip size limit | Full | Default 100 MB |
Known Limitations
Section titled “Known Limitations”- Go modules are immutable once stored — there is no delete or overwrite mechanism.
$GONOSUMDB/$GONOSUMCHECKare client-side settings, not managed by NORA.