46 Commits

Author SHA1 Message Date
Paramtamtam
d332716996 rename variables 2022-08-16 10:19:53 +04:00
Paramtamtam
7200ecad96 dns resolvers changing using environment variables 2022-08-16 10:08:19 +04:00
Paramtamtam
93902a6aef fix 3proxy version in the dockerfile 2022-06-12 13:30:42 +04:00
Paramtamtam
5f29bf16d7 update renovate config 2022-06-12 13:27:19 +04:00
Paramtamtam
1619760057 Update tests.yml 2022-06-12 13:39:28 +05:00
Paramtamtam
ab12170222 update renovate config 2022-06-10 11:59:54 +04:00
renovate[bot]
f28aed423b Update dependency z3APA3A/3proxy to v0.9.4 (#23)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-06-10 12:41:12 +05:00
Paramtamtam
1506af7c6c update renovate config 2022-06-10 11:35:33 +04:00
Paramtamtam
68bef38402 update renovate config 2022-06-10 11:33:31 +04:00
Paramtamtam
e17a4f6856 update renovate config 2022-06-10 11:21:48 +04:00
Paramtamtam
1ae0ac52cf dockerfile fix 2022-06-10 11:06:09 +04:00
Paramtamtam
f82ce4fac2 renovate 2022-06-10 11:04:26 +04:00
dependabot[bot]
30724ceee3 Bump docker/login-action from 1 to 2 (#21) 2022-06-01 17:08:32 +00:00
dependabot[bot]
a057e3fb1f Bump docker/setup-buildx-action from 1 to 2 (#20) 2022-06-01 17:04:52 +00:00
dependabot[bot]
fa2bd9ac44 Bump docker/build-push-action from 2 to 3 (#19) 2022-06-01 17:04:29 +00:00
dependabot[bot]
66c11e684a Bump gcc from 11.3.0 to 12.1.0 (#18) 2022-06-01 17:03:56 +00:00
Paramtamtam
541fac5147 Update release.yml 2022-05-12 17:25:00 +05:00
Paramtamtam
978cd98ff3 Update tests.yml 2022-05-12 17:24:37 +05:00
dependabot[bot]
5591967c35 Bump actions/upload-artifact from 2 to 3 (#16) 2022-05-01 17:24:57 +00:00
dependabot[bot]
f426c0f7e9 Bump gcc from 11.2.0 to 11.3.0 (#15) 2022-05-01 17:24:45 +00:00
dependabot[bot]
c374a6f597 Bump actions/download-artifact from 2 to 3 (#14) 2022-05-01 17:24:32 +00:00
dependabot[bot]
7650a0e75b Bump actions/checkout from 2 to 3 (#13) 2022-04-01 21:06:32 +00:00
dependabot[bot]
9fd0a90c69 Bump actions/labeler from 3 to 4 (#12) 2022-04-01 21:05:59 +00:00
dependabot[bot]
752502d85a Bump busybox from 1.34.0-glibc to 1.34.1-glibc (#11) 2021-11-01 19:09:53 +00:00
Paramtamtam
d72e72e7fc Update release.yml 2021-10-12 12:15:25 +05:00
Paramtamtam
b345e9859a Update dependabot.yml 2021-10-01 16:50:33 +05:00
Paramtamtam
6e5b989498 Docker healthcheck added, CI updated, docker image build optimized (#10) 2021-09-23 19:28:28 +05:00
dependabot[bot]
f62172c9dc Bump busybox from 1.33.1-glibc to 1.34.0-glibc (#9) 2021-09-20 19:00:52 +00:00
dependabot[bot]
078a3d9b79 Bump anchore/scan-action from 2 to 3 (#8) 2021-09-06 17:50:42 +00:00
dependabot[bot]
659fd3d395 Bump gcc from 11.1.0 to 11.2.0 (#7) 2021-08-03 03:50:42 +00:00
Paramtamtam
bf160a071e Update CI 2021-07-20 15:03:19 +05:00
Paramtamtam
93339d5159 Update CHANGELOG.md 2021-07-05 10:34:23 +05:00
Paramtamtam
1ef63988a7 Bump 3proxy version 2021-07-05 10:33:03 +05:00
dependabot[bot]
921fc47ade Bump busybox from 1.32-glibc to 1.33.1-glibc (#6) 2021-05-10 06:52:28 +00:00
Paramtamtam
e2d06289c4 Fix logformat 2021-05-03 21:14:15 +05:00
Paramtamtam
009ec66d86 Logging in JSON format 2021-05-03 20:57:35 +05:00
dependabot[bot]
19c9d5528e Bump gcc from 10.3.0 to 11.1.0 (#5) 2021-05-03 07:02:04 +00:00
dependabot[bot]
edc91855c5 Bump gcc from 10.2.0 to 10.3.0 (#4)
Bumps gcc from 10.2.0 to 10.3.0.

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-12 19:23:30 +05:00
Paramtamtam
e53ceaa3e3 Revert "Docker image arch linux/arm/v7 added"
This reverts commit 8c5b04a0df.
2021-03-23 15:16:05 +05:00
Paramtamtam
8c5b04a0df Docker image arch linux/arm/v7 added 2021-03-23 15:08:46 +05:00
Paramtamtam
ce90d6dc89 Update tests.yml 2021-03-22 10:11:12 +05:00
dependabot[bot]
b8ab9af377 Bump gcc from 9.3 to 10.2.0 (#2) 2021-01-16 07:22:45 +00:00
Paramtamtam
6bd02fba06 Github Actions (release) fixed 2021-01-16 01:43:35 +05:00
Paramtamtam
97e1214f68 Github Actions and readme file updated 2021-01-16 01:42:44 +05:00
Paramtamtam
6f590edfc5 Release CI fixed (#3) 2021-01-16 01:35:09 +05:00
Paramtamtam
9d5ceade36 3proxy updated up to 0.9.3 (#1) 2021-01-16 01:16:25 +05:00
12 changed files with 299 additions and 117 deletions

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
.editorconfig
.git
.github
.idea
.vscode
temp
tmp
LICENSE

View File

@@ -8,5 +8,5 @@ indent_style = space
indent_size = 4 indent_size = 4
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.{yml, yaml, sh, conf}] [*.{yml, yaml, sh, conf, json}]
indent_size = 2 indent_size = 2

3
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,3 @@
# @link <https://help.github.com/en/articles/about-code-owners>
* @tarampampam

16
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
# Docs: <https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/customizing-dependency-updates>
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule: {interval: monthly}
reviewers: [tarampampam]
assignees: [tarampampam]
- package-ecosystem: docker
directory: /
schedule: {interval: monthly}
reviewers: [tarampampam]
assignees: [tarampampam]

7
.github/renovate.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"github>tarampampam/.github//renovate/default",
":rebaseStalePrs"
]
}

View File

@@ -7,27 +7,36 @@ on:
jobs: jobs:
docker-image: docker-image:
name: Build docker image name: Build docker image
runs-on: ubuntu-latest runs-on: ubuntu-20.04
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Generate image tag value - uses: gacts/github-slug@v1
run: echo "::set-env name=IMAGE_TAG::${GITHUB_REF##*/[vV]}" # `/refs/tags/v1.2.3` -> `1.2.3` id: slug
- name: Make docker login - uses: docker/setup-buildx-action@v2
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_LOGIN }}" --password-stdin &> /dev/null
- name: Build image - name: Login to default Container Registry
run: | uses: docker/login-action@v2 # Action page: <https://github.com/docker/login-action>
docker build \ with:
--build-arg "BUILD_DATE=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" \ username: ${{ secrets.DOCKER_LOGIN }}
--tag "tarampampam/3proxy:${IMAGE_TAG}" \ password: ${{ secrets.DOCKER_PASSWORD }}
--tag "tarampampam/3proxy:latest" \
-f ./Dockerfile .
- name: Push version image - name: Login to GitHub Container Registry
run: docker push "tarampampam/3proxy:${IMAGE_TAG}" uses: docker/login-action@v2 # Action page: <https://github.com/docker/login-action>
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push latest image - uses: docker/build-push-action@v3 # Action page: <https://github.com/docker/build-push-action>
run: docker push "tarampampam/3proxy:latest" with:
context: .
file: Dockerfile
push: true
tags: |
tarampampam/3proxy:${{ steps.slug.outputs.version-semantic }}
tarampampam/3proxy:latest
ghcr.io/${{ github.actor }}/3proxy:${{ steps.slug.outputs.version-semantic }}
ghcr.io/${{ github.actor }}/3proxy:latest

View File

@@ -2,83 +2,141 @@ name: tests
on: on:
push: push:
branches: branches: [master, main]
- master tags-ignore: ['**']
tags-ignore: pull_request: {}
- '**'
pull_request: concurrency:
schedule: group: ${{ github.ref }}
- cron: '0 0 * * 0' # once in a week, docs: <https://git.io/JvxXE#onschedule> cancel-in-progress: true
jobs: # Docs: <https://git.io/JvxXE> jobs: # Docs: <https://git.io/JvxXE>
docker-image: gitleaks:
name: Build and use docker image name: Gitleaks
runs-on: ubuntu-latest runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with: {fetch-depth: 0}
- name: Check for GitLeaks
uses: gacts/gitleaks@v1 # Action page: <https://github.com/gacts/gitleaks>
build-image:
name: Build docker image
runs-on: ubuntu-20.04
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v3
- name: Build docker image - name: Build docker image
run: docker build -f ./Dockerfile --tag image:local . run: docker build -f ./Dockerfile --tag 3proxy:local .
- name: Run docker image with default settings - name: Scan image
run: | uses: anchore/scan-action@v3 # action page: <https://github.com/anchore/scan-action>
docker run --rm -d \ with:
-p "3128:3128/tcp" \ image: 3proxy:local
-p "1080:1080/tcp" \ fail-build: true
image:local severity-cutoff: low # negligible, low, medium, high or critical
- name: Save docker image
run: docker save 3proxy:local > ./docker-image.tar
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: docker-image
path: ./docker-image.tar
retention-days: 1
scan-image:
name: Scan docker image
runs-on: ubuntu-20.04
needs: [build-image]
steps:
- name: Download built docker image
uses: actions/download-artifact@v3
with:
name: docker-image
path: .artifact
- name: Prepare image to run
working-directory: .artifact
run: docker load < docker-image.tar
- name: Scan image
uses: anchore/scan-action@v3 # action page: <https://github.com/anchore/scan-action>
with:
image: 3proxy:local
fail-build: true
severity-cutoff: low # negligible, low, medium, high or critical
try-to-use:
name: Build and use docker image (auth ${{ matrix.auth }})
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
auth: [yes, no]
needs: [build-image]
steps:
- name: Download builded docker image
uses: actions/download-artifact@v3
with:
name: docker-image
path: .artifact
- name: Prepare image to run
working-directory: .artifact
run: docker load < docker-image.tar
- name: Start server without auth setup
if: matrix.auth != 'yes'
run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" 3proxy:local
- name: Start server with auth setup
if: matrix.auth == 'yes'
run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" -e "PROXY_LOGIN=evil" -e "PROXY_PASSWORD=live" 3proxy:local
- name: Pause - name: Pause
run: sleep 2 run: sleep 3
- name: Try to use HTTP proxy - name: Try to use HTTP proxy
if: matrix.auth != 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy http://127.0.0.1:3128 \ --proxy http://127.0.0.1:3128 \
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use SOCKS proxy - name: Try to use SOCKS proxy
if: matrix.auth != 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy socks5://127.0.0.1:1080 \ --proxy socks5://127.0.0.1:1080 \
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Stop container - name: Try to use HTTP proxy (with auth)
run: docker stop $(docker ps -a --filter ancestor=image:local -q) if: matrix.auth == 'yes'
- name: Run docker image with auth settings
run: |
docker run --rm -d \
-p "3128:3128/tcp" \
-p "1080:1080/tcp" \
-e "PROXY_LOGIN=evil" \
-e "PROXY_PASSWORD=live" \
image:local
- name: Pause
run: sleep 2
- name: Try to use HTTP proxy
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy http://127.0.0.1:3128 \ --proxy http://127.0.0.1:3128 \
--proxy-user evil:live \ --proxy-user evil:live \
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use SOCKS proxy - name: Try to use SOCKS proxy (with auth)
if: matrix.auth == 'yes'
run: | run: |
curl -v --fail \ curl -v --fail \
--proxy socks5://127.0.0.1:1080 \ --proxy socks5://127.0.0.1:1080 \
--proxy-user evil:live \ --proxy-user evil:live \
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://github.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Stop container - name: Stop container
run: docker stop $(docker ps -a --filter ancestor=image:local -q) run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)

View File

@@ -1,14 +1,15 @@
#!/usr/bin/3proxy #!/bin/3proxy
config /etc/3proxy/3proxy.cfg config /etc/3proxy/3proxy.cfg
# you may use system to execute some external command if proxy starts # you may use system to execute some external command if proxy starts
system "echo `which 3proxy`': Starting 3proxy'" system "echo `which 3proxy`': Starting 3proxy'"
# We can configure nservers to avoid unsafe gethostbyname() usage # We can configure nservers to avoid unsafe gethostbyname() usage (max 5 servers)
#NSERVER1
#NSERVER2
nserver 1.0.0.1 nserver 1.0.0.1
nserver 1.1.1.1 nserver 1.1.1.1
nserver 8.8.4.4 nserver 8.8.4.4
nserver 8.8.8.8
# nscache is good to save speed, traffic and bandwidth # nscache is good to save speed, traffic and bandwidth
nscache 65536 nscache 65536
@@ -16,8 +17,9 @@ nscache 65536
# Here we can change timeout values # Here we can change timeout values
timeouts 1 5 30 60 180 1800 15 60 timeouts 1 5 30 60 180 1800 15 60
# Logging docs: <https://3proxy.org/doc/howtor.html#LOGFORMAT>
log /dev/stdout log /dev/stdout
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" logformat "-\""+_G{""time_unix"":%t, ""proxy"":{""type:"":""%N"", ""port"":%p}, ""error"":{""code"":""%E""}, ""auth"":{""user"":""%U""}, ""client"":{""ip"":""%C"", ""port"":%c}, ""server"":{""ip"":""%R"", ""port"":%r}, ""bytes"":{""sent"":%O, ""received"":%I}, ""request"":{""hostname"":""%n""}, ""message"":""%T""}"
maxconn 1024 maxconn 1024

View File

@@ -4,6 +4,40 @@ All notable changes to this package will be documented in this file.
The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver]. The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver].
## v1.6.0
### Added
- Possibility of changing DNS resolvers using environment variables `PRIMARY_RESOLVER` (primary) and `SECONDARY_RESOLVER` (secondary)
## v1.5.0
### Fixed
- Docker image building optimized
### Added
- Healthcheck in the dockerfile
## v1.4.0
### Changed
- 3proxy updated from `0.9.3` up to `0.9.4`
## v1.3.0
### Changed
- Logging in JSON format
## v1.2.0
### Changed
- 3proxy updated from `0.8.13` up to `0.9.3`
## v1.1.0 ## v1.1.0
### Removed ### Removed

View File

@@ -1,59 +1,81 @@
# Image page: <https://hub.docker.com/_/alpine> # Image page: <https://hub.docker.com/_/gcc>
FROM alpine:latest as builder FROM gcc:12.1.0 as builder
# e.g.: `docker build --build-arg "VERSION=0.8.13" .` # renovate: source=github-tags name=z3APA3A/3proxy
ARG VERSION="0.8.13" ARG Z3PROXY_VERSION=0.9.4
# Fetch 3proxy sources
RUN set -x \ RUN set -x \
&& apk add --no-cache \ && git -c advice.detachedHead=false clone --depth 1 --branch "${Z3PROXY_VERSION}" https://github.com/z3APA3A/3proxy.git /tmp/3proxy
linux-headers \
build-base \ WORKDIR /tmp/3proxy
git \
&& git clone --branch ${VERSION} https://github.com/z3APA3A/3proxy.git /tmp/3proxy \ # Patch sources
&& cd /tmp/3proxy \ RUN set -x \
&& echo '#define ANONYMOUS 1' >> /tmp/3proxy/src/3proxy.h \ && echo '#define ANONYMOUS 1' >> ./src/3proxy.h \
# proxy.c source: <https://github.com/z3APA3A/3proxy/blob/0.9.3/src/proxy.c>
&& sed -i 's~\(<\/head>\)~<style>html,body{background-color:#222526;color:#fff;font-family:sans-serif;\ && sed -i 's~\(<\/head>\)~<style>html,body{background-color:#222526;color:#fff;font-family:sans-serif;\
text-align:center;display:flex;flex-direction:column;justify-content:center}h1,h2{margin-bottom:0;font-size:2.5em}\ text-align:center;display:flex;flex-direction:column;justify-content:center}h1,h2{margin-bottom:0;font-size:2.5em}\
h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:0.4em;color:#bbb;font-weight:100}\ h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:0.4em;color:#bbb;font-weight:100}\
h3,p{color:#bbb}</style>\1~' /tmp/3proxy/src/proxy.c \ h3,p{color:#bbb}</style>\1~' ./src/proxy.c \
&& cat ./src/proxy.c | grep '</head>' \ && cat ./src/proxy.c | grep '</head>'
&& make -f Makefile.Linux
FROM alpine:latest # And compile
RUN set -x \
&& echo "" >> ./Makefile.Linux \
&& echo "PLUGINS = StringsPlugin TrafficPlugin PCREPlugin TransparentPlugin SSLPlugin" >> ./Makefile.Linux \
&& echo "LIBS = -l:libcrypto.a -l:libssl.a -ldl" >> ./Makefile.Linux \
&& make -f Makefile.Linux \
&& strip ./bin/3proxy \
&& strip ./bin/StringsPlugin.ld.so \
&& strip ./bin/TrafficPlugin.ld.so \
&& strip ./bin/PCREPlugin.ld.so \
&& strip ./bin/TransparentPlugin.ld.so \
&& strip ./bin/SSLPlugin.ld.so
# e.g.: `docker build --build-arg "BUILD_DATE=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" .` # Prepare filesystem for 3proxy running
ARG BUILD_DATE FROM busybox:1.34.1-glibc as buffer
# create a directory for the future root filesystem
WORKDIR /tmp/rootfs
# prepare the root filesystem
RUN set -x \
&& mkdir -p ./etc ./bin ./usr/local/3proxy/libexec ./etc/3proxy \
&& echo '3proxy:x:10001:10001::/nonexistent:/sbin/nologin' > ./etc/passwd \
&& echo '3proxy:x:10001:' > ./etc/group \
&& wget -O ./bin/dumb-init "https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64" \
&& chmod +x ./bin/dumb-init
# Copy binaries
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* ./lib/
COPY --from=builder /tmp/3proxy/bin/3proxy ./bin/3proxy
COPY --from=builder /tmp/3proxy/bin/*.ld.so ./usr/local/3proxy/libexec/
COPY 3proxy.cfg ./etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh ./docker-entrypoint.sh
RUN chown -R 10001:10001 ./etc/3proxy
FROM busybox:1.34.1-glibc
LABEL \ LABEL \
org.label-schema.name="3proxy" \ org.opencontainers.image.title="3proxy" \
org.label-schema.description="Tiny free proxy server" \ org.opencontainers.image.description="Tiny free proxy server" \
org.label-schema.url="https://github.com/tarampampam/3proxy-docker" \ org.opencontainers.image.url="https://github.com/tarampampam/3proxy-docker" \
org.label-schema.vcs-url="https://github.com/tarampampam/3proxy-docker" \ org.opencontainers.image.source="https://github.com/tarampampam/3proxy-docker" \
org.label-schema.docker.cmd="docker run --rm -d -p \"3128:3128/tcp\" -p \"1080:1080/tcp\" this_image" \ org.opencontainers.image.vendor="Tarampampam" \
org.label-schema.vendor="tarampampam" \ org.opencontainers.image.licenses="WTFPL"
org.label-schema.build-date="$BUILD_DATE" \
org.label-schema.license="WTFPL" \
org.label-schema.schema-version="1.0"
COPY 3proxy.cfg /etc/3proxy/3proxy.cfg # Import from builder
COPY docker-entrypoint.sh /docker-entrypoint.sh COPY --from=buffer /tmp/rootfs /
COPY --from=builder /tmp/3proxy/src/3proxy /usr/bin/3proxy
RUN set -x \
# Unprivileged user creation <https://stackoverflow.com/a/55757473/12429735RUN>
&& adduser \
--disabled-password \
--gecos "" \
--home /nonexistent \
--shell /sbin/nologin \
--no-create-home \
--uid 10001 \
3proxy \
&& chown 3proxy:3proxy -R /etc/3proxy
# Use an unprivileged user # Use an unprivileged user
USER 3proxy:3proxy USER 3proxy:3proxy
ENTRYPOINT ["/docker-entrypoint.sh"] # Docs: <https://docs.docker.com/engine/reference/builder/#healthcheck>
HEALTHCHECK --interval=5s --timeout=2s --retries=2 --start-period=2s CMD \
netstat -ltn | grep 3128 && netstat -ltn | grep 1080
CMD ["/usr/bin/3proxy", "/etc/3proxy/3proxy.cfg"] ENTRYPOINT ["/bin/dumb-init", "--"]
CMD ["/docker-entrypoint.sh", "/bin/3proxy", "/etc/3proxy/3proxy.cfg"]

View File

@@ -12,16 +12,16 @@
## Why this image created? ## Why this image created?
3proxy is awesome and lightweight proxy-server. This image contains stable version with it and can be configured using environment variables. By default, it uses anonymous (information about client hiding) proxy settings. 3proxy is awesome and lightweight proxy-server. This image contains stable version with it and can be configured using environment variables. By default, it uses anonymous (information about client hiding) proxy settings. Logging in JSON format.
> Page on `hub.docker.com` can be [found here][link_docker_hub]. > Page on `hub.docker.com` can be [found here][link_docker_hub].
TCP ports: TCP ports:
Port number | Description | Port number | Description |
----------- | ----------- |-------------|---------------------------------------------------------|
`3128` | [HTTP proxy](https://3proxy.org/doc/man8/proxy.8.html) | `3128` | [HTTP proxy](https://3proxy.org/doc/man8/proxy.8.html) |
`1080` | [SOCKS proxy](https://3proxy.org/doc/man8/socks.8.html) | `1080` | [SOCKS proxy](https://3proxy.org/doc/man8/socks.8.html) |
## Supported tags ## Supported tags
@@ -31,10 +31,12 @@ All supported image tags [can be found here][link_docker_tags].
## Supported environment variables ## Supported environment variables
Variable name | Description | Example | Variable name | Description | Example |
---------------- | ----------------------------------------- | --------------- |----------------------|-------------------------------------|------------------------|
`PROXY_LOGIN` | Authorization login | `username` | `PROXY_LOGIN` | Authorization login | `username` |
`PROXY_PASSWORD` | Authorization password | `password` | `PROXY_PASSWORD` | Authorization password | `password` |
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver) | `8.8.8.8` |
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver) | `2001:4860:4860::8844` |
## How can I use this? ## How can I use this?
@@ -47,7 +49,7 @@ $ docker run --rm -d \
tarampampam/3proxy:latest tarampampam/3proxy:latest
``` ```
Or with auth settings: Or with auth & resolver settings:
```bash ```bash
$ docker run --rm -d \ $ docker run --rm -d \
@@ -55,9 +57,18 @@ $ docker run --rm -d \
-p "1080:1080/tcp" \ -p "1080:1080/tcp" \
-e "PROXY_LOGIN=evil" \ -e "PROXY_LOGIN=evil" \
-e "PROXY_PASSWORD=live" \ -e "PROXY_PASSWORD=live" \
-e "PRIMARY_RESOLVER=2001:4860:4860::8888" \
tarampampam/3proxy:latest tarampampam/3proxy:latest
``` ```
## Releasing
New versions publishing is very simple - just make required changes in this repository, update [changelog file](CHANGELOG.md) and "publish" new release using repo releases page.
Docker images will be build and published automatically.
> New release will overwrite the `latest` docker image tag in both registers.
## Changes log ## Changes log
[![Release date][badge_release_date]][link_releases] [![Release date][badge_release_date]][link_releases]

View File

@@ -1,12 +1,24 @@
#!/usr/bin/env sh #!/bin/sh
set -e set -e
PROXY_LOGIN=${PROXY_LOGIN:-} # string PROXY_LOGIN=${PROXY_LOGIN:-} # string
PROXY_PASSWORD=${PROXY_PASSWORD:-} # string PROXY_PASSWORD=${PROXY_PASSWORD:-} # string
PRIMARY_RESOLVER=${PRIMARY_RESOLVER:-} # string
SECONDARY_RESOLVER=${SECONDARY_RESOLVER:-} # string
if [ -n "$PROXY_LOGIN" ] && [ -n "$PROXY_PASSWORD" ]; then if [ -n "$PROXY_LOGIN" ] && [ -n "$PROXY_PASSWORD" ]; then
echo "$0: setup '${PROXY_LOGIN}:${PROXY_PASSWORD}' as proxy user"; echo "$0: setup '${PROXY_LOGIN}:${PROXY_PASSWORD}' as proxy user";
sed -i "s~#AUTH_SETTINGS~users ${PROXY_LOGIN}:CL:${PROXY_PASSWORD}\nauth strong\nallow ${PROXY_LOGIN}~" /etc/3proxy/3proxy.cfg sed -i "s~#AUTH_SETTINGS~users ${PROXY_LOGIN}:CL:${PROXY_PASSWORD}\nauth strong\nallow ${PROXY_LOGIN}~" /etc/3proxy/3proxy.cfg
fi; fi;
if [ -n "$PRIMARY_RESOLVER" ]; then
echo "$0: setup '${PRIMARY_RESOLVER}' as the first nameserver";
sed -i "s~#NSERVER1~nserver ${PRIMARY_RESOLVER}~" /etc/3proxy/3proxy.cfg
fi;
if [ -n "$SECONDARY_RESOLVER" ]; then
echo "$0: setup '${SECONDARY_RESOLVER}' as the second nameserver";
sed -i "s~#NSERVER2~nserver ${SECONDARY_RESOLVER}~" /etc/3proxy/3proxy.cfg
fi;
exec "$@" exec "$@"