Skip to content

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.

Point go at NORA:

Terminal window
export GOPROXY=http://nora.example.com:4000/go,direct
export GONOSUMCHECK=* # optional, skip sumdb for private modules

Then use Go as usual:

Terminal window
go get example.com/my-module@v1.2.3
go mod download

NORA fetches modules from the upstream Go proxy when they are not found locally.

config.toml:

[go]
enabled = true
proxy = "https://proxy.golang.org"
proxy_timeout = 30
proxy_timeout_zip = 120
max_zip_size = 104857600 # 100MB

Environment variables:

VariableDescriptionDefault
NORA_GO_ENABLEDEnable Go module proxytrue
NORA_GO_PROXYUpstream proxy URLhttps://proxy.golang.org
NORA_GO_PROXY_AUTHUpstream auth (user:pass)
NORA_GO_PROXY_TIMEOUTUpstream timeout for metadata (seconds)30
NORA_GO_PROXY_TIMEOUT_ZIPUpstream timeout for .zip downloads (seconds)120
NORA_GO_MAX_ZIP_SIZEMax module zip size in bytes104857600 (100 MB)
FeatureStatusNotes
/@v/listFullList known versions
/@v/{version}.infoFullVersion metadata JSON
/@v/{version}.modFullgo.mod file
/@v/{version}.zipFullModule zip archive
/@latestFullLatest version info
Module path escapingFull!x to X per spec
ImmutabilityFull.info, .mod, .zip immutable after first write
Configurable zip size limitFullDefault 100 MB
  • Go modules are immutable once stored — there is no delete or overwrite mechanism.
  • $GONOSUMDB / $GONOSUMCHECK are client-side settings, not managed by NORA.