Issue: package.elm-lang.org availability in Russia

Hello.

Thank you for all the work that you do.

IP address 159.89.227.162 was mistakingly blocked by Russian government several months ago, which was unfair and stupid, but most likely we are unable to change that fact.

We (elm users from Russia) ask administrator to change IP address for that server.
Most likely that kind of action will cost some money, and we can collect and provide it.

Though we can access the server via VPN, setting up a VPN connection is not an option for new elm users and for servers where apps are built.

We’ve also created an issue on GitHub

Thank you.

4 Likes

Hey Vladimir. We’re aware of the situation with the Russian government, Telegram, and Digital Ocean’s IPs. We’re discussing what the best approach would be and we’ll share an update with the community when we figure out what to do. Thank you!

6 Likes

What are the current options that are discussed to workaround this issue?

How about Elm doc preview with VPN to get offline docs?

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:

1. Browse elm.dmy.fr instead of package.elm-lang.org

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.

6 Likes

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.