Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 859f7cf

Browse files
author
Concision
committed
docs: refined project README
Signed-off-by: Concision <contact@concision.me>
1 parent 5c99efb commit 859f7cf

1 file changed

Lines changed: 76 additions & 44 deletions

File tree

README.md

Lines changed: 76 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,105 @@
1-
# Windscribe SOCKS5 Server in Docker
2-
[![version](https://img.shields.io/github/v/tag/concision/docker-windscribe-socks-server?color=blue&sort=semver)](https://github.com/concision/docker-windscribe-socks-server/releases)
3-
[![docker pulls](https://img.shields.io/docker/pulls/concisions/windscribe-socks-server)](https://hub.docker.com/repository/docker/concisions/windscribe-socks-server)
4-
[![license](https://img.shields.io/github/license/concision/docker-windscribe-socks-server)](https://github.com/concision/docker-windscribe-socks-server/blob/master/LICENSE)
1+
<h1 align="center">
2+
Dockerized Windscribe SOCKS5 Server
3+
</h1>
4+
5+
<p align="center">
6+
<a href="https://github.com/concision/docker-windscribe-socks-server/blob/master/LICENSE">
7+
<img alt="repository license" src="https://img.shields.io/github/license/concision/docker-windscribe-socks-server?style=for-the-badge"/>
8+
</a>
9+
<a href="https://github.com/concision/docker-windscribe-socks-server/releasess">
10+
<img alt="release version" src="https://img.shields.io/github/v/tag/concision/docker-windscribe-socks-server?style=for-the-badge&logo=git"/>
11+
</a>
12+
<a href="https://hub.docker.com/repository/docker/concisions/windscribe-socks-server">
13+
<img alt="Docker pulls" src="https://img.shields.io/docker/pulls/concisions/windscribe-socks-server?style=for-the-badge&logo=docker"/>
14+
</a>
15+
</p>
16+
17+
<p align="center">
18+
<i>Containerizes a SOCKS5 proxy server with traffic tunneled through Windscribe's VPN service</i>
19+
</p>
20+
21+
## Table of Contents
22+
- [Motivations](#motivations)
23+
- [Pro Et Contra](#pro-et-contra)
24+
- [Advantages](#advantages)
25+
- [Limitations](#limitations)
26+
- [Deployment](#deployment)
27+
- [Image Source](#image-source)
28+
- [Deploying Container](#deploying-container)
29+
- [Docker Compose](#docker-compose)
30+
- [Docker CLI](#docker-cli)
31+
- [Configuration](#configuration)
32+
533

634
## Motivations
7-
[Windscribe](https://windscribe.com/) is a yet another VPN service, offering varying tiers of plans and subscriptions (free, pro, "build a plan", etc). Typically, traffic is tunneled through their servers by installing [Windscribe software](https://windscribe.com/download) on host devices. However, [additional methods](https://windscribe.com/features/config-generators) are available for tunneling without their software, through other protocols such as OpenVPN, IKEv2, and SOCKS5. Unfortunately, these protocols are unavailable to accounts that are not specifically on the "Pro" plan (e.g. free and "build a plan").
35+
[Windscribe](https://windscribe.com/) is a yet another VPN service, offering varying subscriptions plans (free, pro, "build a plan", etc). Typically, [Windscribe software](https://windscribe.com/download) must be installed on host devices to tunnel traffic through their VPN servers. However, there are [other protocols](https://windscribe.com/features/config-generators) (e.g. OpenVPN, IKEv2, SOCKS5, etc) supported for tunneling *without* their proprietary software. Unfortunately, these protocols are only available to users on their "Pro" subscription plan (i.e. excluding free and "Build A Plan" subscription plans).
836

9-
I had requested SOCKS5 support for the "Build A Plan" option from their support, but have received a generic response indicating that there was no particular interest in adding such support for any plans other than "Pro". As a result, Windscribe software must be utilized to tunnel traffic on a host device, presenting two corollaries:
10-
- a host device must be able to install and run the Windscribe VPN software
11-
- _all_ traffic is tunneled through Windscribe servers
37+
I had submitted a feature request for SOCKS5 support for the "Build A Plan" option from their support, but have received a generic response indicating there was no particular interest in adding such support for non-"Pro" subscription plans. Ergo, Windscribe software must be installed on a host device to tunnel traffic, presenting two corollaries:
38+
- a host device must be eligible for installing and running Windscribe VPN software
39+
- _all_ system traffic will be tunneled through Windscribe servers
1240

13-
This project addresses fringe use-cases and serves to avoid the aforementioned corollaries by containerizing Windscribe software in [Docker](https://www.docker.com/) and exposing a tunnel as a SOCKS5 proxy server.
41+
This project was created to address a fringe use-case and circumvent the aforementioned corollaries by containerizing Windscribe software within [Docker](https://www.docker.com/), enabling tunneling through as a SOCKS5 proxy server.
1442

1543

1644
## Pro Et Contra
17-
### Benefits
18-
There are a few benefits of using this project's containerized application:
19-
- No premium subscription is necessary to use the SOCKS5 protocol to tunnel traffic through Windscribe.
20-
- A host device incompatible with Windscribe software can still leverage tunneling through their VPN.
21-
- Traffic on a host device may be finely controlled to only tunnel specific traffic through Windscribe.
22-
- Not all traffic may need to be tunneled, and tunneled traffic may incur a significant bandwidth and latency performance hit.
23-
- Tools such as [Proxifier](https://www.proxifier.com/) may be utilized to handle per-process traffic tunneling.
24-
- Some internet services have blacklisted commonly used Windscribe IP ranges, previously presenting an issue accessing specific services when the VPN was connected.
25-
- Containerization allows tunneling traffic through Windscribe in Docker stacks.
45+
### Advantages
46+
There are a few useful advantages of using this containerized application:
47+
- Paid subscriptions are not required to use the SOCKS5 protocol to tunnel traffic through Windscribe.
48+
- A host device does not need to install Windscribe system software and can still tunnel traffic through their VPN servers.
49+
- Networking tools (e.g. [Proxifier](https://www.proxifier.com/)) can enable fine-grained control by handling per-process traffic tunneling, rather than system wide traffic tunneling.
2650

2751
### Limitations
2852
There are, however, limitations to this project's usefulness relating significantly to security:
29-
- The SOCKS5 server has no authentication - the SOCKS5 server should _only_ be used in a tightly controlled network.
30-
- Exposing the SOCKS5 server publicly allows any individual to tunnel traffic that is ultimately linked to a specific Windscribe account.
31-
> Note: This concern can be addressed by swapping the underlying implementation of the SOCKS5 to an proxy server that supports authentication (e.g. [dante](https://www.inet.no/dante/)).
32-
- [Windscribe-CLI](https://windscribe.com/guides/linux) requires iptables support, requiring the NET_ADMIN cap permission to execute inside of a Docker container. As a corollary, a compromised container may be able to leverage all the capabilities of CAP_NET_ADMIN, as defined in the [Linux manuals](http://man7.org/linux/man-pages/man7/capabilities.7.html).
33-
- While it is unlikely the software involved would be compromised, there is a non-zero possibility that a compromised container may be able to manipulate the host's iptables for malicious reasons.
53+
- The SOCKS5 server has no authentication - the SOCKS5 server should _only_ be used in a tightly controlled network. Exposing the SOCKS5 server publicly allows any individual to tunnel traffic that is ultimately linked to a specific Windscribe account.
54+
- [Windscribe-CLI](https://windscribe.com/guides/linux) requires iptables support, requiring the NET_ADMIN cap permission to execute inside of a Docker container. As a consequence, a compromised container may be able to leverage all the capabilities of CAP_NET_ADMIN, as defined in the [Linux manuals](http://man7.org/linux/man-pages/man7/capabilities.7.html). While it is unlikely the software involved would be compromised, there is a non-zero possibility that a compromised container may be able to manipulate the host's iptables for malicious purposes.
55+
- Connections from other machines are dropped due to how Windscribe configures the container's internal networking; however, connections from sibling containers are accepted.
3456

3557

3658
## Deployment
37-
This project is bundled into a Docker image, making [Docker](https://www.docker.com/) a prerequisite for running this project.
38-
39-
### Source
40-
A pre-built image is available for pulling from any of the following registries:
41-
- [Docker Hub](https://hub.docker.com/r/concisions/windscribe-socks-server)
42-
- [GitHub Packages](https://github.com/concision/docker-windscribe-socks-server/packages)
59+
This project must be built using a container image building tool and run using container runtime (e.g. Docker, Podman, etc). [Docker](https://www.docker.com/) instructions are included in the following sections.
4360

44-
The only currently supported OS/arch is linux/amd64.
61+
### Image Source
62+
Pre-built images can be pulled from any of the following registries:
63+
- [Docker Hub](https://hub.docker.com/r/concisions/windscribe-socks-server): `concisions/windscribe-socks-server:latest`
64+
- [GitHub Packages](https://github.com/concision/docker-windscribe-socks-server/packages): `docker.pkg.github.com/concision/docker-windscribe-socks-server/windscribe-socks-server:latest`
65+
> Note: The only prebuilt images architectures available are `linux/amd64` and `linux/arm/v7`. At the time of writing this documentation, Windscribe distributions are not available for other architectures.
4566
46-
Alternatively, the project can be built from the Dockerfile for new architectures by executing the following command in the project root directory:
67+
Alternatively, the project can be built from the repository's sources by cloning the repository and running a container image build tool.
4768
```bash
69+
# clone the repository
70+
git clone https://github.com/concision/docker-windscribe-socks-server.git
71+
# change current working directory
72+
cd docker-windscribe-socks-server
73+
# build Docker image
4874
docker build -t concisions/windscribe-socks-server:latest .
4975
```
76+
> Note: Ensure the current working directory is inside of the cloned Git repository prior to executing the command (e.g. `cd docker-windscribe-socks-server`).
5077
51-
### Configuration
52-
There are several environment variables that can be configured for this image:
53-
- `WINDSCRIBE_DNS` (optional): Whitespace delimited list of DNS servers to use (default: `1.1.1.1`). Setting a DNS server with Docker flags is not sufficient enough, as it utilizes an embedded local DNS server. Windscribe tunnels all DNS requests to prevent DNS leakage.
54-
- `WINDSCRIBE_USERNAME`: Windscribe account username.
55-
- `WINDSCRIBE_PASSWORD`: Windscribe account password.
56-
- `WINDSCRIBE_LOCATION` (optional): A preferred Windscribe location to automatically connect to.
78+
### Deploying Container
79+
#### Docker Compose
80+
To deploy with [Docker Compose](https://docs.docker.com/compose/), use the commented configuration file available in this repository [here](https://github.com/concision/docker-windscribe-socks-server/blob/master/docker-compose.yml). Environment variables may be sourced with an `.env` file or explicitly defined in the configuration file.
5781

58-
### Docker Compose
59-
To deploy with Docker compose, a commented configuration file is available in this repository [here](https://github.com/concision/docker-windscribe-socks-server/blob/master/docker-compose.yml). Environment variables may be sourced with an `.env` file or explicitly defined in the configuration file.
60-
61-
To deploy it, the following command can be executed:
82+
The container can be deployed with the following command:
6283
```bash
6384
docker-compose up
6485
```
6586

66-
### Docker CLI
67-
To deploy with only Docker, an example run script is available in this repository [here](https://github.com/concision/docker-windscribe-socks-server/blob/master/deploy-container.sh). It can be configured in the script itself or use an `.env` file.
87+
#### Docker CLI
88+
To deploy with [Docker](https://www.docker.com/), use the example run script available in this repository [here](https://github.com/concision/docker-windscribe-socks-server/blob/master/deploy-container.sh). It can be configured in the script itself or use an `.env` file.
6889

69-
To deploy it, the following command can be executed:
90+
The container can be deployed with the following command:
7091
```bash
7192
./deploy-container.sh
7293
```
7394
> Note: Running the container interactively may break Windscribe authentication
95+
96+
97+
### Configuration
98+
There are several environment variables that can be configured for this image:
99+
- `WINDSCRIBE_DNS` (optional): Whitespace delimited list of DNS servers to use (default: `1.1.1.1`). Setting a DNS server with Docker flags is not sufficient enough, as it utilizes an embedded local DNS server. Windscribe tunnels all DNS requests to prevent DNS leakage.
100+
- `WINDSCRIBE_USERNAME`: Windscribe account username.
101+
- `WINDSCRIBE_PASSWORD`: Windscribe account password.
102+
- `WINDSCRIBE_LOCATION` (optional): A preferred Windscribe location to automatically connect to.
103+
104+
## Disclaimer
105+
This project is a prototype and has its own set of issues and drawbacks compared to running Windscribe system software. Your mileage may vary.

0 commit comments

Comments
 (0)