There are now multiple options for stratum proxies. In addition to the original stratum proxy, there are also translation proxies for Stratum V2 and Stratum V1 to be used together. For example, you can run a Stratum V2 implementation on your mining devices and still connect to a pool that only has Stratum V1 by using a V2 -> V1 translation proxy. These proxies can be found in the Braiins repository.

The documentation for the original Stratum (V1) proxy is below.

Overview

Stratum mining proxy allows mining software supporting the old Getwork protocol to use the modern Stratum mining protocol provided by our pool.

We do however believe that you should know some basic facts and reasons. The old Getwork protocol was designed as an easy solution for standalone miners in times, where there were no mining pools and mining rigs had just a few GHash per second of hash rate. Back then, it was just good enough to get by, but the situation has changed radically. At the time of writing this documentation, you can easily get a miner which is capable of producing dozens of TH/s (and this is sure to increase in the future)! Such performance would require a considerably greater network bandwidth on the user side and ridiculously great one on the server side (imagine a few hundred users, each polling the server for work).

Stratum protocol reduces network load and significantly improves miner performance on slower and unstable networks.

Advantages for Users

No more "Pool is not providing work fast enough" messages in mining software.
Extremely low stale rate (less than 0.1%, that means below 1 stale per 1000 accepted shares).
Very low network bandwidth usage (~10kB/minute).

Notes on Stratum extensions

In order to operate on BOSminer (our replacement of CGminer), stratum extensions need to be enabled: 

--enable-stratum-extensions

Installation using Docker

This works on any system with Docker (Linux/Mac/Windows) and doesn't need anything other than Git and Docker.

1. Download and extract sources for proxy (here).

2. Run following commands one by one:

cd stratum-mining-proxy
docker build -t stratum-mining-proxy

3. Run interactively

docker run -it --rm -p 3333:3333 stratum-mining-proxy -o us-east.stratum.slushpool.com -p 3333 -sh 0.0.0.0 -sp 3333 --enable-stratum-extensions

4. Run as a service

docker run -d --name stratum-mining-proxy --restart unless-stopped -p 3333:3333 stratum-mining-proxy -o us-east.stratum.slushpool.com -p 3333 -sh 0.0.0.0 -sp 3333 --enable-stratum-extensions

Installation on Linux using Git

This is advanced option for experienced users, but give you the easiest way for updating the proxy.

1. Install python2 and python2-virtualenv for your distribution

2. Download and extract sources for proxy (here).

3. Download stratum dependency

git clone git://github.com/braiins/stratum.git

4. Run following commands one by one

cd stratum-mining-proxy
virtualenv .env --python=/usr/bin/python2.7
. .env/bin/activate
python -m pip install PyInstaller==3.6
python -m pip install -e ../stratum
pyinstaller -F mining_proxy.py --name stratum-mining-proxy

5. Resulting binary is in: 

dist/stratum-mining-prox

Troubleshooting: Installation on Ubuntu/Raspberry Pi

There seem to be problems with building pyinstaller with default compiler GCC on RaspberryPi.

1. Install  python2 and python2-virtualenv for your distribution

2. Download and extract sources for proxy (here).

3. Run following commands one by one:

git clone git://github.com/braiins/stratum.git
cd stratum-mining-proxy
virtualenv .env --python=/usr/bin/python2.7
. .env/bin/activate

4. Manually build PyInstaller. Enter following commands one by one: 

sudo apt-get install clang
git clone https://github.com/pyinstaller/pyinstaller.git
cd pyinstaller/bootloader/
python ./waf all --target-arch=32bit --clang
sudo apt-get remove clang # remove the clang, it is not needed anymore
cd ..
python setup.py install
cd ..

5. Run following commands one by one

python -m pip install -e ../stratum
mkdir -p .env/local/include/python2.7
ln -s /usr/include/python2.7/pyconfig.h .env/local/include/python2.7/pyconfig.h
pyinstaller -F mining_proxy.py --name stratum-mining-proxy

6. Resulting binary is in: 

dist/stratum-mining-proxy

Installation on Arch Linux 

1. Run following commands one by one

git clone https://aur.archlinux.org/stratum-mining-proxy.git
cd stratum-mining-proxy
makepkg -sri

2. Then run: 

stratum-mining-proxy -o us-east.stratum.slushpool.com -p 3333 -sh 0.0.0.0 -sp 3333 --enable-stratum-extensions