This guide will help you set up a standalone Snowflake proxy on a server to help censored users connect to the Tor network. The only requirements are internet connectivity, however one of the main advantages of standalone Snowflake proxies is that they can be installed on servers and offer a higher bandwidth and more reliable option for users behind restrictive NATs and firewalls. Therefore, we especially recommend:

  1. 24/7 Internet connectivity
  2. A full-cone NAT (you can use this NAT behaviour tool to test what type of NAT you have. The properties you are looking for are address-independent mapping and either address-independent or address-dependent filtering)

There are several ways to setup and run a standalone snowflake proxy.

Docker setup

You must first have Docker and docker-compose installed.

We have a Docker image to ease the setup of a snowflake proxy. First download docker-compose.yml. Then, deploy the proxy by running:

docker-compose up -d snowflake-proxy

You should now see the output:

Creating snowflake-proxy ... done

and your proxy is up and running!

Ansible

There is now an ansible role to install a Snowflake proxy on Debian created by Jacobo Nájera: https://galaxy.ansible.com/nvjacobo/snowflake

Compiling and running from source

  1. First you will need to install and configure Go to build the standalone proxy-go code. If you are running Ubuntu or Debian, you can install Go by executing apt install golang. Otherwise visit https://golang.org/dl/. You will need Go 1.13+ to run the Snowflake proxy.

  2. Clone the source code.

    git clone https://git.torproject.org/pluggable-transports/snowflake.git
    
  3. Build the Snowflake proxy.
    go build
    
  4. Run the Snowflake proxy.

For our fallback proxy-go instances on snowflake-broker, we manage proxy-go instances using runit. However, a simpler nohup command will also allow you to run an instance in the background.

   nohup ./proxy &