Go Modules
NORA реализует протокол прокси Go-модулей (GOPROXY). Сервер хранит Go-модули и раздаёт их командам go. Модули становятся иммутабельными после сохранения.
Настройка клиента
Заголовок раздела «Настройка клиента»Направьте go на NORA:
export GOPROXY=http://nora.example.com:4000/go,directexport GONOSUMCHECK=* # опционально, пропустить sumdb для приватных модулейЗатем используйте Go как обычно:
go get example.com/my-module@v1.2.3go mod downloadПроксирование upstream
Заголовок раздела «Проксирование upstream»NORA загружает модули из upstream-прокси Go, если они не найдены локально.
config.toml:
[go]enabled = trueproxy = "https://proxy.golang.org"proxy_timeout = 30proxy_timeout_zip = 120max_zip_size = 104857600 # 100 МБПеременные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_GO_ENABLED | Включить прокси Go-модулей | true |
NORA_GO_PROXY | URL upstream-прокси | https://proxy.golang.org |
NORA_GO_PROXY_AUTH | Аутентификация upstream (user:pass) | — |
NORA_GO_PROXY_TIMEOUT | Таймаут upstream для метаданных (секунды) | 30 |
NORA_GO_PROXY_TIMEOUT_ZIP | Таймаут upstream для скачивания .zip (секунды) | 120 |
NORA_GO_MAX_ZIP_SIZE | Максимальный размер zip модуля в байтах | 104857600 (100 МБ) |
Возможности
Заголовок раздела «Возможности»| Функция | Статус | Примечание |
|---|---|---|
/@v/list | Полная | Список известных версий |
/@v/{version}.info | Полная | JSON с метаданными версии |
/@v/{version}.mod | Полная | Файл go.mod |
/@v/{version}.zip | Полная | Zip-архив модуля |
/@latest | Полная | Информация о последней версии |
| Экранирование пути модуля | Полная | !x в X по спецификации |
| Иммутабельность | Полная | .info, .mod, .zip неизменяемы после первой записи |
| Настраиваемый лимит размера zip | Полная | По умолчанию 100 МБ |
Известные ограничения
Заголовок раздела «Известные ограничения»- Go-модули становятся иммутабельными после сохранения — механизм удаления или перезаписи отсутствует.
$GONOSUMDB/$GONOSUMCHECK— это клиентские настройки, они не управляются NORA.