73 Commits

Author SHA1 Message Date
Pаramtamtām
276efbfeae Update CHANGELOG.md 2024-04-02 13:38:39 +04:00
Mario Trangoni
eabbb17fa5 fix: put EXTRA_CONFIG before the proxy starts (#49)
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
2024-04-02 13:36:30 +04:00
dependabot[bot]
37066552b8 Bump the any group with 1 update (#48) 2024-04-02 05:47:45 +00:00
Pаramtamtām
fb681a846e Update dependabot.yml 2024-03-19 09:56:31 +04:00
Paramtamtam
dcf291de25 docs(readme): 📚 Readme file updated 2024-03-16 18:48:32 +04:00
Paramtamtam
4f60889624 feat: EXTRA_CONFIG environment variable is supported 2024-03-16 18:43:37 +04:00
dependabot[bot]
298e65c0b0 Bump peter-evans/dockerhub-description from 3 to 4 (#45) 2024-02-01 22:49:23 +00:00
dependabot[bot]
f3596b86ea Bump actions/download-artifact from 3 to 4 (#44) 2024-01-02 08:11:28 +00:00
dependabot[bot]
513a467b11 Bump actions/upload-artifact from 3 to 4 (#43)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 12:09:00 +04:00
Pаramtamtām
7b2e6ac6da Update dependabot.yml 2023-10-05 11:15:06 +04:00
Pаramtamtām
a44fde46e6 Update dependabot.yml 2023-10-02 12:30:48 +04:00
Pаramtamtām
283a52abe6 Update dependabot.yml 2023-10-02 11:36:41 +04:00
dependabot[bot]
63731eca8c Bump docker/setup-buildx-action from 2 to 3 (#39) 2023-10-02 07:10:12 +00:00
dependabot[bot]
7dd058d8aa Bump docker/login-action from 2 to 3 (#38) 2023-10-02 06:54:11 +00:00
dependabot[bot]
7490d4dce8 Bump docker/build-push-action from 4 to 5 (#40) 2023-10-02 06:53:50 +00:00
dependabot[bot]
6d215e502c Bump actions/checkout from 3 to 4 (#41) 2023-10-02 06:53:37 +00:00
dependabot[bot]
d8f9aa2024 Bump docker/setup-qemu-action from 2 to 3 (#42) 2023-10-02 06:53:27 +00:00
dependabot[bot]
98a8747a3c Bump gcc from 12.2.0 to 13.2.0 (#37) 2023-09-02 15:25:54 +00:00
Pаramtamtām
1febd8abe7 Create dependabot.yml 2023-09-02 06:51:05 -07:00
Paramtamtam
e5e9f108eb Fix: Missing port definitions when EXTRA_ACCOUNTS is set 2023-08-24 19:31:57 +04:00
dependabot[bot]
7b6870751c Bump docker/build-push-action from 3 to 4 (#33) 2023-02-01 17:11:51 +00:00
Paramtamtam
a1a23544ac fix: frop ppc64le arch support 2023-01-23 01:19:08 +04:00
Paramtamtam
713f37e79c docs(readme): file updated 2023-01-23 00:34:40 +04:00
Paramtamtam
597d6e28ec feat: multiarch image (#31) 2023-01-23 00:24:45 +04:00
Paramtamtam
40678de18c Update README.md 2022-12-27 11:49:17 +04:00
Paramtamtam
770665806e feat: Multiple accounts (#29) 2022-12-08 20:20:33 +04:00
dependabot[bot]
7be7f47fe4 Bump gcc from 12.1.0 to 12.2.0 (#25) 2022-09-01 17:40:35 +00:00
Paramtamtam
fb24456662 Entrypoint script replaced with mustpl (#24) 2022-08-26 17:05:50 +04:00
Paramtamtam
2e9ef61cf8 wip: readme file 2022-08-16 10:23:46 +04:00
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
16 changed files with 363 additions and 190 deletions

View File

@@ -5,8 +5,8 @@ charset = utf-8
end_of_line = lf end_of_line = lf
insert_final_newline = true insert_final_newline = true
indent_style = space indent_style = space
indent_size = 4 indent_size = 2
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.{yml, yaml, sh, conf}] [Dockerfile]
indent_size = 2 indent_size = 4

View File

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

21
.github/labeler.yml vendored
View File

@@ -1,21 +0,0 @@
docs:
- '**/*.md'
- '**/*.MD'
.github:
- '.github/**/*'
CI:
- '.github/workflows/**/*'
- '.github/actions/**/*'
docker:
- 'Dockerfile'
- 'docker/**/*'
- '.dockerignore'
- 'docker-entrypoint.sh'
- '3proxy.cfg'
dev:
- '.gitignore'
- '.editorconfig'

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"
]
}

25
.github/workflows/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: dependabot
on:
pull_request: {}
permissions:
contents: write
pull-requests: write
jobs:
dependabot: # https://tinyurl.com/e69djmen
runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' }}
steps:
- uses: dependabot/fetch-metadata@v2
id: metadata
with: {github-token: "${{ secrets.GITHUB_TOKEN }}"}
- name: Enable auto-merge for Dependabot PRs
if: ${{ contains(fromJSON('["version-update:semver-minor", "version-update:semver-patch"]'), steps.metadata.outputs.update-type) }}
run: gh pr merge --auto --merge "$PR_URL"
continue-on-error: true
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

19
.github/workflows/documentation.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: documentation
on:
push:
branches: [master, main]
paths: ['README.md']
jobs:
docker-hub-description:
name: Docker Hub Description
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: peter-evans/dockerhub-description@v4 # Action page: <https://github.com/peter-evans/dockerhub-description>
with:
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_USER_PASSWORD }}
repository: tarampampam/3proxy

View File

@@ -1,12 +0,0 @@
name: labeler
on: [pull_request_target]
jobs:
triage:
runs-on: ubuntu-20.04
steps:
- uses: actions/labeler@v3 # Action page: <https://github.com/actions/labeler>
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: true

View File

@@ -9,30 +9,32 @@ jobs:
name: Build docker image name: Build docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
- name: Check out code - uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Set up Docker Buildx - {uses: gacts/github-slug@v1, id: slug}
uses: docker/setup-buildx-action@v1 # Action page: <https://github.com/docker/setup-buildx-action>
id: buildx
- name: Docker login in default registry - uses: docker/setup-qemu-action@v3
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_LOGIN }}" --password-stdin &> /dev/null
- name: Docker login in ghcr.io # Auth docs: <https://git.io/JLDaw> - uses: docker/setup-buildx-action@v3
run: echo "${{ secrets.GHCR_PASSWORD }}" | docker login ghcr.io -u tarampampam --password-stdin
- name: Generate image tag value - uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
id: tag with:
run: echo "::set-output name=value::`echo ${GITHUB_REF##*/} | sed -e 's/^[vV ]*//'`" # `/refs/tags/v1.2.3` -> `1.2.3` username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build image - uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
run: | with:
docker buildx build \ registry: ghcr.io
--platform ${{ steps.buildx.outputs.platforms }} \ username: ${{ github.actor }}
--tag "tarampampam/3proxy:${{ steps.tag.outputs.value }}" \ password: ${{ secrets.GITHUB_TOKEN }}
--tag "tarampampam/3proxy:latest" \
--tag "ghcr.io/tarampampam/3proxy:${{ steps.tag.outputs.value }}" \ - uses: docker/build-push-action@v5 # Action page: <https://github.com/docker/build-push-action>
--tag "ghcr.io/tarampampam/3proxy:latest" \ with:
--push \ context: .
. push: true
platforms: linux/amd64,linux/arm64
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,40 +2,42 @@ 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>
gitleaks:
name: Gitleaks
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with: {fetch-depth: 0}
- uses: gacts/gitleaks@v1
build-image: build-image:
name: Build docker image name: Build docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
- name: Check out code - uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Build docker image - name: Build docker image
run: docker build -f ./Dockerfile --tag 3proxy:local . run: docker build -f ./Dockerfile --tag 3proxy:local .
- name: Scan image
uses: anchore/scan-action@v2 # action page: <https://github.com/anchore/scan-action>
with:
image: 3proxy:local
fail-build: true
severity-cutoff: low # negligible, low, medium, high or critical
- name: Save docker image - name: Save docker image
run: docker save 3proxy:local > ./docker-image.tar run: docker save 3proxy:local > ./docker-image.tar
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: docker-image name: docker-image
path: ./docker-image.tar path: ./docker-image.tar
retention-days: 1
try-to-use: try-to-use:
name: Build and use docker image (auth ${{ matrix.auth }}) name: Build and use docker image (auth ${{ matrix.auth }})
@@ -46,8 +48,8 @@ jobs: # Docs: <https://git.io/JvxXE>
auth: [yes, no] auth: [yes, no]
needs: [build-image] needs: [build-image]
steps: steps:
- name: Download builded docker image - name: Download built docker image
uses: actions/download-artifact@v2 uses: actions/download-artifact@v4
with: with:
name: docker-image name: docker-image
path: .artifact path: .artifact
@@ -62,7 +64,7 @@ jobs: # Docs: <https://git.io/JvxXE>
- name: Start server with auth setup - name: Start server with auth setup
if: matrix.auth == 'yes' 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 run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" -e "PROXY_LOGIN=evil" -e "PROXY_PASSWORD=live" -e 'EXTRA_ACCOUNTS={"foo":"bar"}' 3proxy:local
- name: Pause - name: Pause
run: sleep 3 run: sleep 3
@@ -95,6 +97,16 @@ jobs: # Docs: <https://git.io/JvxXE>
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- name: Try to use HTTP proxy (with auth, extra user)
if: matrix.auth == 'yes'
run: |
curl -v --fail \
--proxy http://127.0.0.1:3128 \
--proxy-user foo:bar \
--connect-timeout 3 \
--max-time 3 \
https://www.cloudflare.com/robots.txt
- name: Try to use SOCKS proxy (with auth) - name: Try to use SOCKS proxy (with auth)
if: matrix.auth == 'yes' if: matrix.auth == 'yes'
run: | run: |

View File

@@ -1,29 +0,0 @@
#!/bin/3proxy
config /etc/3proxy/3proxy.cfg
# you may use system to execute some external command if proxy starts
system "echo `which 3proxy`': Starting 3proxy'"
# We can configure nservers to avoid unsafe gethostbyname() usage
nserver 1.0.0.1
nserver 1.1.1.1
nserver 8.8.4.4
nserver 8.8.8.8
# nscache is good to save speed, traffic and bandwidth
nscache 65536
# Here we can change timeout values
timeouts 1 5 30 60 180 1800 15 60
log /dev/stdout
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
maxconn 1024
#AUTH_SETTINGS
proxy -a -p3128
socks -a -p1080
flush

24
3proxy.cfg.json Normal file
View File

@@ -0,0 +1,24 @@
{
"log": {
"output": "/dev/stdout"
},
"name_servers": [
"${PRIMARY_RESOLVER:-1.0.0.1}",
"${SECONDARY_RESOLVER:-8.8.4.4}",
"1.1.1.1",
"9.9.9.9",
"8.8.8.8"
],
"name_servers_cache": 65536,
"max_connections": "${MAX_CONNECTIONS:-1024}",
"auth": {
"login": "${PROXY_LOGIN:-}",
"password": "${PROXY_PASSWORD:-}",
"extra_accounts": ${EXTRA_ACCOUNTS:-{}}
},
"ports": {
"proxy": "${PROXY_PORT:-3128}",
"socks": "${SOCKS_PORT:-1080}"
},
"extra_config": "${EXTRA_CONFIG}"
}

39
3proxy.cfg.mustach Normal file
View File

@@ -0,0 +1,39 @@
#!/bin/3proxy
config /etc/3proxy/3proxy.cfg
# you may use system to execute some external command if proxy starts
system "echo `which 3proxy`': Starting 3proxy'"
# We can configure nservers to avoid unsafe gethostbyname() usage (max 5 servers)
{{#name_servers}}
nserver {{ . }}
{{/name_servers}}
# nscache is good to save speed, traffic and bandwidth
nscache {{ name_servers_cache }}
# Here we can change timeout values
timeouts 1 5 30 60 180 1800 15 60
# Logging docs: <https://3proxy.org/doc/howtor.html#LOGFORMAT>
log {{ log.output }}
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 {{ max_connections }}
{{^auth.login=}}{{^auth.password=}}
users {{ auth.login }}:CL:{{ auth.password }}{{#auth.extra_accounts.*}} {{ * }}:CL:{{ . }}{{/auth.extra_accounts.*}}
auth strong
allow {{ auth.login }}{{#auth.extra_accounts.*}},{{ * }}{{/auth.extra_accounts.*}}
{{/auth.password=}}{{/auth.login=}}
{{^extra_config=}}
# Additional configuration
{{extra_config}}
{{/extra_config=}}
proxy -a -p{{ ports.proxy }}
socks -a -p{{ ports.socks }}
flush

View File

@@ -4,6 +4,97 @@ 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.9.1
### Fixed
- Extra configuration now applies before defining the proxy server in the configuration file [#49]
[#49]:https://github.com/tarampampam/3proxy-docker/pull/49
## v1.9.0
### Added
- `EXTRA_CONFIG` environment variable is supported now [#47]
[#47]:https://github.com/tarampampam/3proxy-docker/issues/47
## v1.8.3
### Fixed
- Missing port definitions when `EXTRA_ACCOUNTS` is set
## v1.8.2
### Removed
- `ppc64le` architecture support
## v1.8.1
### Added
- Multi-arch image support (plus `arm64` and `ppc64le`) [#31]
### Fixed
- Error page colors now depend on the theme, and the text is centered [#31]
[#31]:https://github.com/tarampampam/3proxy-docker/pull/31
## v1.8.0
### Added
- `EXTRA_ACCOUNTS` environment variable is supported now [#28]
[#28]:https://github.com/tarampampam/3proxy-docker/issues/28
## v1.7.0
### Added
- The following environment variables are supported now: `MAX_CONNECTIONS`, `PROXY_PORT`, `SOCKS_PORT`
### Changed
- Entrypoint script (`bash`) replaced with [`mustpl`](https://github.com/tarampampam/mustpl)
- The result docker image `busybox:1.34.1-glibc` replaced with `busybox:stable-glibc`
### Removed
- Dockerfile healthcheck
## 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 ## v1.2.0
### Changed ### Changed

View File

@@ -1,12 +1,12 @@
# Image page: <https://hub.docker.com/_/alpine> # Image page: <https://hub.docker.com/_/gcc>
FROM gcc:9.3 as builder FROM gcc:13.2.0 as builder
# e.g.: `docker build --build-arg "VERSION=0.9.3" .` # renovate: source=github-tags name=z3APA3A/3proxy
ARG VERSION="0.9.3" ARG Z3PROXY_VERSION=0.9.4
# Fetch 3proxy sources # Fetch 3proxy sources
RUN set -x \ RUN set -x \
&& git clone --branch "${VERSION}" https://github.com/z3APA3A/3proxy.git /tmp/3proxy && git -c advice.detachedHead=false clone --depth 1 --branch "${Z3PROXY_VERSION}" https://github.com/z3APA3A/3proxy.git /tmp/3proxy
WORKDIR /tmp/3proxy WORKDIR /tmp/3proxy
@@ -14,10 +14,12 @@ WORKDIR /tmp/3proxy
RUN set -x \ RUN set -x \
&& echo '#define ANONYMOUS 1' >> ./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> # 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>:root{--color-bg-primary:#fff;--color-text-primary:#131313;--color-text-secondary:#232323}\
text-align:center;display:flex;flex-direction:column;justify-content:center}h1,h2{margin-bottom:0;font-size:2.5em}\ @media (prefers-color-scheme: dark){:root{--color-bg-primary:#212121;--color-text-primary:#fafafa;--color-text-secondary:#bbb}}\
h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:0.4em;color:#bbb;font-weight:100}\ html,body{height:100%;font-family:sans-serif;background-color:var(--color-bg-primary);color:var(--color-text-primary);margin:0;\
h3,p{color:#bbb}</style>\1~' ./src/proxy.c \ padding:0;text-align:center}body{align-items:center;display:flex;justify-content:center;flex-direction:column;height:100vh}\
h1,h2{margin-bottom:0;font-size:2.5em}h2::before{content:'"'"'Proxy error'"'"';display:block;font-size:.4em;\
color:var(--color-text-secondary);font-weight:100}h3,p{color:var(--color-text-secondary)}</style>\1~' ./src/proxy.c \
&& cat ./src/proxy.c | grep '</head>' && cat ./src/proxy.c | grep '</head>'
# And compile # And compile
@@ -34,39 +36,33 @@ RUN set -x \
&& strip ./bin/SSLPlugin.ld.so && strip ./bin/SSLPlugin.ld.so
# Prepare filesystem for 3proxy running # Prepare filesystem for 3proxy running
FROM busybox:1.32-glibc as buffer FROM alpine:latest as buffer
# Copy binaries # create a directory for the future root filesystem
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* /lib/ WORKDIR /tmp/rootfs
COPY --from=builder /tmp/3proxy/bin/3proxy /bin/
COPY --from=builder /tmp/3proxy/bin/*.ld.so /usr/local/3proxy/libexec/
# Create unprivileged user # prepare the root filesystem
RUN set -x \ RUN set -x \
&& adduser \ && mkdir -p ./etc ./bin ./usr/local/3proxy/libexec ./etc/3proxy \
--disabled-password \ && echo '3proxy:x:10001:10001::/nonexistent:/sbin/nologin' > ./etc/passwd \
--gecos "" \ && echo '3proxy:x:10001:' > ./etc/group \
--home /nonexistent \ && apk add --no-cache --virtual .build-deps curl ca-certificates \
--shell /sbin/nologin \ && update-ca-certificates \
--no-create-home \ && curl -SsL -o ./bin/dumb-init "https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_$(arch)" \
--uid 10001 \ && chmod +x ./bin/dumb-init \
3proxy && apk del .build-deps
# Prepare files and directories COPY --from=builder /lib/*-linux-gnu/libdl.so.* ./lib/
RUN set -x \ COPY --from=builder /tmp/3proxy/bin/3proxy ./bin/3proxy
&& chown -R 10001:10001 /usr/local/3proxy \ COPY --from=builder /tmp/3proxy/bin/*.ld.so ./usr/local/3proxy/libexec/
&& chmod -R 550 /usr/local/3proxy \ COPY --from=ghcr.io/tarampampam/mustpl:0.1.1 /bin/mustpl ./bin/mustpl
&& chmod -R 555 /usr/local/3proxy/libexec \ COPY 3proxy.cfg.json ./etc/3proxy/3proxy.cfg.json
&& chown -R root /usr/local/3proxy/libexec \ COPY 3proxy.cfg.mustach ./etc/3proxy/3proxy.cfg.mustach
&& mkdir /etc/3proxy \
&& chown -R 10001:10001 /etc/3proxy
# Copy our config and entrypoint script RUN chown -R 10001:10001 ./etc/3proxy
COPY 3proxy.cfg /etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh /docker-entrypoint.sh
# Split all buffered layers into one # Merge into a single layer
FROM scratch FROM busybox:stable-glibc
LABEL \ LABEL \
org.opencontainers.image.title="3proxy" \ org.opencontainers.image.title="3proxy" \
@@ -77,11 +73,17 @@ LABEL \
org.opencontainers.image.licenses="WTFPL" org.opencontainers.image.licenses="WTFPL"
# Import from builder # Import from builder
COPY --from=buffer / / COPY --from=buffer /tmp/rootfs /
# Use an unprivileged user # Use an unprivileged user
USER 3proxy:3proxy USER 3proxy:3proxy
ENTRYPOINT ["/docker-entrypoint.sh"] ENTRYPOINT [ \
"/bin/mustpl", \
"-f", "/etc/3proxy/3proxy.cfg.json", \
"-o", "/etc/3proxy/3proxy.cfg", \
"/etc/3proxy/3proxy.cfg.mustach", \
"--", "/bin/dumb-init" \
]
CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"] CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"]

View File

@@ -12,29 +12,50 @@
## 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
[![image stats](https://dockeri.co/image/tarampampam/3proxy)][link_docker_tags] | Registry | Image |
|----------------------------------------|------------------------------|
| [GitHub Container Registry][link_ghcr] | `ghcr.io/tarampampam/3proxy` |
| [Docker Hub][link_docker_hub] | `tarampampam/3proxy` |
All supported image tags [can be found here][link_docker_tags]. All supported image tags [can be found here][link_docker_tags].
Since v1.8.2 architecture `arm64` (and `amd64` of course) is supported:
```shell
$ docker run --rm mplatform/mquery ghcr.io/tarampampam/3proxy:1.8.2
Image: ghcr.io/tarampampam/3proxy:1.8.2
* Manifest List: Yes (Image type: application/vnd.docker.distribution.manifest.list.v2+json)
* Supported platforms:
- linux/amd64
- linux/arm64
```
## Supported environment variables ## Supported environment variables
Variable name | Description | Example | Variable name | Description | Example |
---------------- | ----------------------------------------- | --------------- |----------------------|-----------------------------------------------------------------------------------|-----------------------------------|
`PROXY_LOGIN` | Authorization login | `username` | `PROXY_LOGIN` | Authorization login (empty by default) | `username` |
`PROXY_PASSWORD` | Authorization password | `password` | `PROXY_PASSWORD` | Authorization password (empty by default) | `password` |
| `EXTRA_ACCOUNTS` | Additional proxy users | `{"evil":"live", "guest":"pass"}` |
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` |
| `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` |
| `PROXY_PORT` | HTTP proxy port number (`3128` by default) | `8080` |
| `SOCKS_PORT` | SOCKS proxy port number (`1080` by default) | `8888` |
| `EXTRA_CONFIG` | Additional 3proxy configuration (will be added to the **end** of the config file) | `# line 1\n# line 2` |
## How can I use this? ## How can I use this?
@@ -44,10 +65,10 @@ For example:
$ docker run --rm -d \ $ docker run --rm -d \
-p "3128:3128/tcp" \ -p "3128:3128/tcp" \
-p "1080:1080/tcp" \ -p "1080:1080/tcp" \
tarampampam/3proxy:latest ghcr.io/tarampampam/3proxy:latest
``` ```
Or with auth settings: Or with auth & resolver settings:
```bash ```bash
$ docker run --rm -d \ $ docker run --rm -d \
@@ -55,9 +76,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" \
tarampampam/3proxy:latest -e "PRIMARY_RESOLVER=2001:4860:4860::8888" \
ghcr.io/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]
@@ -70,14 +100,14 @@ Changes log can be [found here][link_changes_log].
[![Issues][badge_issues]][link_issues] [![Issues][badge_issues]][link_issues]
[![Issues][badge_pulls]][link_pulls] [![Issues][badge_pulls]][link_pulls]
If you will find any package errors, please, [make an issue][link_create_issue] in current repository. If you find any errors, please, [make an issue][link_create_issue] in current repository.
## License ## License
WTFPL. Use anywhere for your pleasure. WTFPL. Use anywhere for your pleasure.
[badge_build_status]:https://img.shields.io/github/workflow/status/tarampampam/3proxy-docker/tests/master?logo=github&label=build [badge_build_status]:https://img.shields.io/github/actions/workflow/status/tarampampam/3proxy-docker/tests.yml?branch=master&logo=github&label=build
[badge_release_status]:https://img.shields.io/github/workflow/status/tarampampam/3proxy-docker/release?logo=github&label=release [badge_release_status]:https://img.shields.io/github/actions/workflow/status/tarampampam/3proxy-docker/release.yml?logo=github&label=release
[badge_release_date]:https://img.shields.io/github/release-date/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180 [badge_release_date]:https://img.shields.io/github/release-date/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180
[badge_commits_since_release]:https://img.shields.io/github/commits-since/tarampampam/3proxy-docker/latest.svg?style=flat-square&maxAge=180 [badge_commits_since_release]:https://img.shields.io/github/commits-since/tarampampam/3proxy-docker/latest.svg?style=flat-square&maxAge=180
[badge_issues]:https://img.shields.io/github/issues/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180 [badge_issues]:https://img.shields.io/github/issues/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180
@@ -95,4 +125,5 @@ WTFPL. Use anywhere for your pleasure.
[link_license]:https://github.com/tarampampam/3proxy-docker/blob/master/LICENSE [link_license]:https://github.com/tarampampam/3proxy-docker/blob/master/LICENSE
[link_docker_tags]:https://hub.docker.com/r/tarampampam/3proxy/tags [link_docker_tags]:https://hub.docker.com/r/tarampampam/3proxy/tags
[link_docker_hub]:https://hub.docker.com/r/tarampampam/3proxy/ [link_docker_hub]:https://hub.docker.com/r/tarampampam/3proxy/
[link_ghcr]:https://github.com/tarampampam/3proxy-docker/pkgs/container/3proxy
[link_3proxy]:https://github.com/z3APA3A/3proxy [link_3proxy]:https://github.com/z3APA3A/3proxy

View File

@@ -1,12 +0,0 @@
#!/bin/sh
set -e
PROXY_LOGIN=${PROXY_LOGIN:-} # string
PROXY_PASSWORD=${PROXY_PASSWORD:-} # string
if [ -n "$PROXY_LOGIN" ] && [ -n "$PROXY_PASSWORD" ]; then
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
fi;
exec "$@"