Disclaimer: To clear up some misunderstandings, I’m not part of the Elm team at all. I’m just a community member. This is a setup that can be useful or not, this is fine.
As an experimental workaround until a better official solution is found, I have setup forward and reverse proxies in a free tier AWS instance, hopefully not blocked in Russia and elsewhere, and easier to use than VPNs, particularly for CI scripts.
I cannot give any engagement about the sustainability of this solution, but if usage stays below the free tier bandwidth, I don’t see any reason not to keep it at least 12 months if needed, unless it is targeted by attacks unrelated to elm (I tried to restrict the usage to elm packages, but proxies are still easily targeted).
If you have issues with the proxies, you can ping me on slack.
I also put the instructions in this gist to share them more easily.
Here is how to use the proxies:
Packages documentation
Two options:
This requires no configuration, but google results or absolute links won’t be redirected.
2. Automatic proxy configuration URL
Configure your system and/or browser proxy with the following proxy automatic configuration URL:
https://elm.dmy.fr/proxy.pac
The proxy only redirects package.elm-lang.org so you need to use the auto-configuration URL. This should work for all documentation links, including google results.
elm binary
Again two options:
1. https_proxy environment variable
$ https_proxy=elm.dmy.fr:9999 elm <command> ...
As the proxy only accepts domains used by the elm
binary, don’t set it globally or it could break other programs.
If you don’t want to type it each time, wrap the installed elm
binary in a shell script found in your $PATH
before the real one. For example if you installed elm
with npm
:
#!/bin/sh
https_proxy=elm.dmy.fr:9999 ~/.local/bin/elm "$@"
2. Rebuild the elm
binary to use the proxy
By rebuilding the binary with a single line modification, you can avoid having to set the https_proxy
variable. I won’t provide a binary for security and maintenance reasons, but you can use this Dockerfile (using this guide if needed, just changing the Dockerfile
) to build a Linux x64 one with one command in a few minutes.
Privacy
The proxies log IP addresses to allow to ban some if there are some abuses unrelated to Elm.