A minimalist Go module proxy handler.
Goproxy has fully implemented the GOPROXY protocol. The goal of this project is to find the most dead simple way to provide a minimalist handler that can act as a full-featured Go module proxy for those who want to build their own proxies.
- Extremely easy to use
- Three structs:
goproxy.Goproxy
,goproxy.GoFetcher
, andgoproxy.DirCacher
- Two interfaces:
goproxy.Fetcher
andgoproxy.Cacher
- Three structs:
- Built-in support for
GOPROXY
,GONOPROXY
,GOSUMDB
,GONOSUMDB
, andGOPRIVATE
- Supports serving under other Go module proxies by setting
GOPROXY
- Supports proxying checksum databases
- Supports
Disable-Module-Fetch
header
-
To use this project programmatically,
go get
it:go get github.com/goproxy/goproxy
-
To use this project from the command line, download the pre-built binaries from here or build it from source:
go install github.com/goproxy/goproxy/cmd/goproxy@latest
-
To use this project with Docker, pull the pre-built images from here:
docker pull ghcr.io/goproxy/goproxy
Write code
Create a file named goproxy.go
:
package main
import (
"net/http"
"github.com/goproxy/goproxy"
)
func main() {
http.ListenAndServe("localhost:8080", &goproxy.Goproxy{})
}
Then run it with a GOMODCACHE
that differs from go env GOMODCACHE
:
GOMODCACHE=/tmp/goproxy-gomodcache go run goproxy.go
Finally, set GOPROXY
to try it out:
go env -w GOPROXY=http://localhost:8080,direct
For more details, refer to the documentation.
Run from command line
Refer to the Installation section to download or build the binary.
Then run it with a GOMODCACHE
that differs from go env GOMODCACHE
:
GOMODCACHE=/tmp/goproxy-gomodcache goproxy server --address localhost:8080
Finally, set GOPROXY
to try it out:
go env -w GOPROXY=http://localhost:8080,direct
For more details, check its usage:
goproxy --help
Run with Docker
Refer to the Installation section to pull the image.
Then run it:
docker run -p 8080:8080 ghcr.io/goproxy/goproxy server --address :8080
Finally, set GOPROXY
to try it out:
go env -w GOPROXY=http://localhost:8080,direct
For more details, check its usage:
docker run ghcr.io/goproxy/goproxy --help
If you have any questions or ideas about this project, feel free to discuss them here.
If you would like to contribute to this project, please submit issues here or pull requests here.
When submitting a pull request, please make sure its commit messages adhere to Conventional Commits 1.0.0.
This project is licensed under the MIT License.