Goproxy
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.
Features
- Extremely easy to use
- Three structs:
goproxy.Goproxy,goproxy.GoFetcher, andgoproxy.DirCacher - Two interfaces:
goproxy.Fetcherandgoproxy.Cacher - Ready-to-use CLI and Docker image
- Three structs:
- Built-in implementation of
GOPROXY,GONOPROXY,GOSUMDB,GONOSUMDB, andGOPRIVATE - Upstream proxy support
- Checksum database proxying support
Disable-Module-Fetchheader support
Installation
-
To use this project programmatically,
go getit: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
Quickstart
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:
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
Community
If you have any questions or ideas about this project, feel free to discuss them here.
Contributing
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.
License
This project is licensed under the MIT License.