Go proxy tip
This commit is contained in:
parent
2d38e11cc7
commit
186ba0261a
1 changed files with 33 additions and 0 deletions
33
content/tips/go-mod-proxy.md
Normal file
33
content/tips/go-mod-proxy.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
title: "Fetching Go Modules via `goproxy` Inside VPN"
|
||||
date: "2023-06-22"
|
||||
---
|
||||
|
||||
I think I finally setup the holy grail of universally being able to
|
||||
fetch-by-proxy go modules through a firewall using
|
||||
https://github.com/goproxy/goproxy
|
||||
|
||||
On your internal host (such as your work machine), run the following:
|
||||
|
||||
```shell_session
|
||||
GOPRIVATE=git.company.com GOMODCACHE=~/go goproxy server --address localhost:9981
|
||||
```
|
||||
|
||||
On external host (such as a network isolated Linux VM):
|
||||
|
||||
```shell_session
|
||||
ssh -L 9981:localhost:9981 $INTERNALHOST &
|
||||
GOPROXY=http://localhost:9981,direct go mod tidy
|
||||
```
|
||||
|
||||
Of course, the tunneling is optional and you can use a non-`localhost`
|
||||
`--address` when running `goproxy server`, but then of course you are dealing
|
||||
with this proxy being open on the LAN, which may upset security in some cases.
|
||||
|
||||
And bam! Now you can fetch go modules as if you're on the VPN even if you're not
|
||||
on the VPN.
|
||||
|
||||
You can use something like `go env -w GOPROXY=http://localhost:9981,direct` to
|
||||
avoid prefixing all your `go` commands with the environment variable. Obviously,
|
||||
this can cause things to break weirdly if/when the `goproxy server` dies or the
|
||||
tunnel is disconnected. Tread lightly!
|
Loading…
Reference in a new issue