socks5-server/README.md

65 lines
3.8 KiB
Markdown
Raw Normal View History

2017-04-25 00:03:06 +03:00
# go-socks5-proxy
2016-12-20 13:13:22 +03:00
2020-03-21 22:01:13 +03:00
![Latest tag from master branch](https://github.com/serjs/socks5-server/workflows/Latest%20tag%20from%20master%20branch/badge.svg)
![Release tag](https://github.com/serjs/socks5-server/workflows/Release%20tag/badge.svg)
Simple socks5 server using go-socks5 with authentication, allowed ips list and destination FQDNs filtering
2016-12-20 13:13:22 +03:00
# Examples
2016-12-20 13:13:22 +03:00
- Run docker container using default container port 1080 and expose it to world using host port 1080, with auth creds
2017-04-25 00:03:06 +03:00
2024-01-13 09:22:40 +03:00
`docker run -d --name socks5 -p 1080:1080 -e PROXY_USER=<PROXY_USER> -e PROXY_PASSWORD=<PROXY_PASSWORD> serjs/go-socks5-proxy`
2018-04-24 21:00:14 +03:00
2024-01-13 09:22:40 +03:00
- Leave `PROXY_USER` and `PROXY_PASSWORD` empty for skip authentication options while running socks5 server, see example below
- Run docker container using specifit container port and expose it to host port 1090, without auth creds
2024-01-13 09:22:40 +03:00
`docker run -d --name socks5 -p 1090:9090 -e PROXY_PORT=9090 serjs/go-socks5-proxy`
2024-01-13 09:22:40 +03:00
- Run docker container using default container port 1080 and expose it to world using host port 1080, with PROXY_CREDENTIALS multi-user authentication
`docker run -d --name socks5 -p 1080:1080 -e PROXY_CREDENTIALS='[{"username":"TEST_USERNAME","password":"password123"}]' serjs/go-socks5-proxy`
2018-06-13 22:53:27 +03:00
2024-01-13 09:22:40 +03:00
# List of supported config parameters
2023-03-06 00:48:21 +03:00
2024-01-13 09:22:40 +03:00
| ENV variable | Type | Default | Description |
| ----------------- | ----------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| PROXY_CREDENTIALS | Json Object | EMPTY | Provide a JSON stringified object representing a list of allowed user/password credential pairs. The form of this object is `{ password: string, username: string }[]`. See |
| PROXY_USER | String | EMPTY | Set proxy user (also required existed PROXY_PASS) |
| PROXY_PASSWORD | String | EMPTY | Set proxy password for auth, used with PROXY_USER |
| PROXY_PORT | String | 1080 | Set listen port for application inside docker container |
| ALLOWED_DEST_FQDN | String | EMPTY | Allowed destination address regular expression pattern. Default allows all. |
| ALLOWED_IPS | String | Empty | Set allowed IP's that can connect to proxy, separator `,` |
# Build your own image:
2024-01-13 09:22:40 +03:00
2023-03-06 00:48:21 +03:00
`docker-compose -f docker-compose.build.yml up -d`\
Just don't forget to set parameters in the `.env` file.
2018-06-13 22:53:27 +03:00
# Test running service
Assuming that you are using container on 1080 host docker port
2018-04-24 21:00:14 +03:00
## Without authentication
2018-04-24 21:00:14 +03:00
2024-01-13 09:22:40 +03:00
`curl --socks5 <docker host ip>:1080 https://ifcfg.co` - result must show docker host ip (for bridged network)
2018-04-24 21:00:14 +03:00
or
2018-04-24 21:00:14 +03:00
2024-01-13 09:22:40 +03:00
`docker run --rm curlimages/curl:7.65.3 -s --socks5 <docker host ip>:1080 https://ifcfg.co`
## With authentication
2024-01-13 09:22:40 +03:00
`curl --socks5 <docker host ip>:1080 -U <PROXY_USER>:<PROXY_PASSWORD> http://ifcfg.co`
or
2024-01-13 09:22:40 +03:00
`docker run --rm curlimages/curl:7.65.3 -s --socks5 <PROXY_USER>:<PROXY_PASSWORD>@<docker host ip>:1080 http://ifcfg.co`
2018-04-24 21:00:14 +03:00
# Authors
2018-04-24 21:00:14 +03:00
2024-01-13 09:22:40 +03:00
- **Sergey Bogayrets**
2018-04-24 21:00:14 +03:00
See also the list of [contributors](https://github.com/serjs/socks5-server/graphs/contributors) who participated in this project.