32 Commits

Author SHA1 Message Date
Pаramtamtām
1f42c9285b Allow to configure log output and make CI great again (#60) 2024-11-12 15:38:36 +04:00
Pаramtamtām
2a4024db68 Delete .github/workflows/dependabot.yml 2024-11-01 11:47:29 +04:00
dependabot[bot]
8cdaa01188 Bump docker/build-push-action from 5 to 6 in the github-actions group (#53) 2024-07-01 17:32:45 +00:00
Pаramtamtām
e4e42b94a3 Update dependabot.yml 2024-04-27 14:35:34 +04:00
Pаramtamtām
a4ae4feb1f Update README.md 2024-04-02 13:42:59 +04:00
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
12 changed files with 137 additions and 234 deletions

View File

@@ -1,8 +1,6 @@
.editorconfig ## Ignore everything
.git *
.github
.idea ## Except the following files (and directories)
.vscode !/3proxy.cfg.json
temp !/3proxy.cfg.mustach
tmp
LICENSE

View File

@@ -1,3 +1,5 @@
# EditorConfig docs: <https://editorconfig.org/>
root = true root = true
[*] [*]
@@ -8,5 +10,6 @@ indent_style = space
indent_size = 2 indent_size = 2
trim_trailing_whitespace = true trim_trailing_whitespace = true
[Dockerfile] [{*.yml,*.yaml}]
indent_size = 4 ij_any_spaces_within_braces = false
ij_any_spaces_within_brackets = false

View File

@@ -5,12 +5,12 @@ version: 2
updates: updates:
- package-ecosystem: github-actions - package-ecosystem: github-actions
directory: / directory: /
groups: {github-actions: {patterns: ['*']}}
schedule: {interval: monthly} schedule: {interval: monthly}
reviewers: [tarampampam]
assignees: [tarampampam] assignees: [tarampampam]
- package-ecosystem: docker - package-ecosystem: docker
directory: / directory: /
groups: {docker: {patterns: ['*']}}
schedule: {interval: monthly} schedule: {interval: monthly}
reviewers: [tarampampam]
assignees: [tarampampam] assignees: [tarampampam]

13
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-release-config.json
# docs: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
changelog:
categories:
- title: 🛠 Fixes
labels: [type:fix, type:bug]
- title: 🚀 Features
labels: [type:feature, type:feature_request]
- title: 📦 Dependency updates
labels: [dependencies]
- title: Other Changes
labels: ['*']

View File

@@ -8,11 +8,11 @@ on:
jobs: jobs:
docker-hub-description: docker-hub-description:
name: Docker Hub Description name: Docker Hub Description
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: peter-evans/dockerhub-description@v3 # Action page: <https://github.com/peter-evans/dockerhub-description> - uses: peter-evans/dockerhub-description@v4 # Action page: <https://github.com/peter-evans/dockerhub-description>
with: with:
username: ${{ secrets.DOCKER_LOGIN }} username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_USER_PASSWORD }} password: ${{ secrets.DOCKER_USER_PASSWORD }}

View File

@@ -1,4 +1,7 @@
name: release # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
# docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: 🚀 Release
on: on:
release: # Docs: <https://git.io/JeBz1#release-event-release> release: # Docs: <https://git.io/JeBz1#release-event-release>
@@ -7,34 +10,26 @@ on:
jobs: jobs:
docker-image: docker-image:
name: Build docker image name: Build docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- name: Check out code - uses: actions/checkout@v4
uses: actions/checkout@v3 - {uses: gacts/github-slug@v1, id: slug}
- uses: docker/setup-qemu-action@v3
- uses: gacts/github-slug@v1 - uses: docker/setup-buildx-action@v3
id: slug - uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
- uses: docker/setup-buildx-action@v2
- name: Login to default Container Registry
uses: docker/login-action@v2 # Action page: <https://github.com/docker/login-action>
with: with:
username: ${{ secrets.DOCKER_LOGIN }} username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
- name: Login to GitHub Container Registry
uses: docker/login-action@v2 # Action page: <https://github.com/docker/login-action>
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6 # Action page: <https://github.com/docker/build-push-action>
- uses: docker/build-push-action@v3 # Action page: <https://github.com/docker/build-push-action>
with: with:
context: . context: .
file: Dockerfile
push: true push: true
platforms: linux/amd64,linux/arm64
tags: | tags: |
tarampampam/3proxy:${{ steps.slug.outputs.version-semantic }} tarampampam/3proxy:${{ steps.slug.outputs.version-semantic }}
tarampampam/3proxy:latest tarampampam/3proxy:latest

View File

@@ -1,4 +1,7 @@
name: tests # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
# docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: 🧪 Tests
on: on:
push: push:
@@ -12,94 +15,45 @@ concurrency:
jobs: # Docs: <https://git.io/JvxXE> jobs: # Docs: <https://git.io/JvxXE>
gitleaks: gitleaks:
name: Gitleaks name: Check for GitLeaks
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - {uses: actions/checkout@v4, with: {fetch-depth: 0}}
with: {fetch-depth: 0} - uses: gacts/gitleaks@v1
- name: Check for GitLeaks
uses: gacts/gitleaks@v1 # Action page: <https://github.com/gacts/gitleaks>
build-image: build-image:
name: Build docker image name: Build the docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
steps: steps:
- name: Check out code - uses: actions/checkout@v4
uses: actions/checkout@v3 - run: docker build -f ./Dockerfile --tag 3proxy:local .
- run: docker save 3proxy:local > ./docker-image.tar
- name: Build docker image - uses: actions/upload-artifact@v4
run: docker build -f ./Dockerfile --tag 3proxy:local .
- 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
- name: Save docker image
run: docker save 3proxy:local > ./docker-image.tar
- name: Upload artifact
uses: actions/upload-artifact@v3
with: with:
name: docker-image name: docker-image
path: ./docker-image.tar path: ./docker-image.tar
retention-days: 1 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: try-to-use:
name: Build and use docker image (auth ${{ matrix.auth }}) name: Build and use the docker image (auth ${{ matrix.auth }})
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
auth: [yes, no] auth: [yes, no]
needs: [build-image] needs: [build-image]
steps: steps:
- name: Download builded docker image - uses: actions/download-artifact@v4
uses: actions/download-artifact@v3
with: with:
name: docker-image name: docker-image
path: .artifact path: .artifact
- working-directory: .artifact
- name: Prepare image to run
working-directory: .artifact
run: docker load < docker-image.tar run: docker load < docker-image.tar
- if: matrix.auth != 'yes'
- 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 run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" 3proxy:local
- if: matrix.auth == 'yes'
- name: Start server with auth setup 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
if: matrix.auth == 'yes' - run: sleep 3
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
run: sleep 3
- name: Try to use HTTP proxy - name: Try to use HTTP proxy
if: matrix.auth != 'yes' if: matrix.auth != 'yes'
run: | run: |
@@ -108,7 +62,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.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' if: matrix.auth != 'yes'
run: | run: |
@@ -117,7 +70,6 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--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) - name: Try to use HTTP proxy (with auth)
if: matrix.auth == 'yes' if: matrix.auth == 'yes'
run: | run: |
@@ -127,7 +79,15 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--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: |
@@ -137,6 +97,4 @@ jobs: # Docs: <https://git.io/JvxXE>
--connect-timeout 3 \ --connect-timeout 3 \
--max-time 3 \ --max-time 3 \
https://www.cloudflare.com/robots.txt https://www.cloudflare.com/robots.txt
- run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)
- name: Stop container
run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q)

View File

@@ -1,6 +1,6 @@
{ {
"log": { "log": {
"output": "/dev/stdout" "output": "${LOG_OUTPUT:-/dev/stdout}"
}, },
"name_servers": [ "name_servers": [
"${PRIMARY_RESOLVER:-1.0.0.1}", "${PRIMARY_RESOLVER:-1.0.0.1}",
@@ -13,10 +13,12 @@
"max_connections": "${MAX_CONNECTIONS:-1024}", "max_connections": "${MAX_CONNECTIONS:-1024}",
"auth": { "auth": {
"login": "${PROXY_LOGIN:-}", "login": "${PROXY_LOGIN:-}",
"password": "${PROXY_PASSWORD:-}" "password": "${PROXY_PASSWORD:-}",
"extra_accounts": ${EXTRA_ACCOUNTS:-{}}
}, },
"ports": { "ports": {
"proxy": "${PROXY_PORT:-3128}", "proxy": "${PROXY_PORT:-3128}",
"socks": "${SOCKS_PORT:-1080}" "socks": "${SOCKS_PORT:-1080}"
} },
"extra_config": "${EXTRA_CONFIG}"
} }

View File

@@ -22,11 +22,17 @@ logformat "-\""+_G{""time_unix"":%t, ""proxy"":{""type:"":""%N"", ""port"":%p},
maxconn {{ max_connections }} maxconn {{ max_connections }}
{{^auth.login=}}{{^auth.password=}} {{^auth.login=}}{{^auth.password=}}
users {{ auth.login }}:CL:{{ auth.password }} users {{ auth.login }}:CL:{{ auth.password }}{{#auth.extra_accounts.*}} {{ * }}:CL:{{ . }}{{/auth.extra_accounts.*}}
auth strong auth strong
allow {{ auth.login }} allow {{ auth.login }}{{#auth.extra_accounts.*}},{{ * }}{{/auth.extra_accounts.*}}
{{/auth.password=}}{{/auth.login=}} {{/auth.password=}}{{/auth.login=}}
{{^extra_config=}}
# Additional configuration
{{extra_config}}
{{/extra_config=}}
proxy -a -p{{ ports.proxy }} proxy -a -p{{ ports.proxy }}
socks -a -p{{ ports.socks }} socks -a -p{{ ports.socks }}

View File

@@ -1,85 +0,0 @@
# Changelog
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].
## 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
### Changed
- 3proxy updated from `0.8.13` up to `0.9.3`
## v1.1.0
### Removed
- Environment variable `AUTH_REQUIRED` support
### Changed
- Proxy error pages a little bit styled
## v1.0.0
### Fixed
- Dockerfile and docker entry-point script cleanup
## v0.1.1
### Fixed
- Docker entry-point script clean
## v0.1.0
### Changed
- First project release
[keepachangelog]:https://keepachangelog.com/en/1.0.0/
[semver]:https://semver.org/spec/v2.0.0.html

View File

@@ -1,5 +1,6 @@
# Image page: <https://hub.docker.com/_/gcc> # syntax=docker/dockerfile:1
FROM gcc:12.1.0 as builder
FROM gcc:13.2.0 AS builder
# renovate: source=github-tags name=z3APA3A/3proxy # renovate: source=github-tags name=z3APA3A/3proxy
ARG Z3PROXY_VERSION=0.9.4 ARG Z3PROXY_VERSION=0.9.4
@@ -14,10 +15,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,7 +37,7 @@ 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:stable-glibc as buffer FROM alpine:latest AS buffer
# create a directory for the future root filesystem # create a directory for the future root filesystem
WORKDIR /tmp/rootfs WORKDIR /tmp/rootfs
@@ -44,13 +47,16 @@ RUN set -x \
&& mkdir -p ./etc ./bin ./usr/local/3proxy/libexec ./etc/3proxy \ && mkdir -p ./etc ./bin ./usr/local/3proxy/libexec ./etc/3proxy \
&& echo '3proxy:x:10001:10001::/nonexistent:/sbin/nologin' > ./etc/passwd \ && echo '3proxy:x:10001:10001::/nonexistent:/sbin/nologin' > ./etc/passwd \
&& echo '3proxy:x:10001:' > ./etc/group \ && 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" \ && apk add --no-cache --virtual .build-deps curl ca-certificates \
&& chmod +x ./bin/dumb-init && update-ca-certificates \
&& curl -SsL -o ./bin/dumb-init "https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_$(arch)" \
&& chmod +x ./bin/dumb-init \
&& apk del .build-deps
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* ./lib/ COPY --from=builder /lib/*-linux-gnu/libdl.so.* ./lib/
COPY --from=builder /tmp/3proxy/bin/3proxy ./bin/3proxy COPY --from=builder /tmp/3proxy/bin/3proxy ./bin/3proxy
COPY --from=builder /tmp/3proxy/bin/*.ld.so ./usr/local/3proxy/libexec/ COPY --from=builder /tmp/3proxy/bin/*.ld.so ./usr/local/3proxy/libexec/
COPY --from=ghcr.io/tarampampam/mustpl:0.1.0 /bin/mustpl ./bin/mustpl COPY --from=ghcr.io/tarampampam/mustpl:0.1.1 /bin/mustpl ./bin/mustpl
COPY 3proxy.cfg.json ./etc/3proxy/3proxy.cfg.json COPY 3proxy.cfg.json ./etc/3proxy/3proxy.cfg.json
COPY 3proxy.cfg.mustach ./etc/3proxy/3proxy.cfg.mustach COPY 3proxy.cfg.mustach ./etc/3proxy/3proxy.cfg.mustach

View File

@@ -10,9 +10,9 @@
[![Docker Pulls][badge_docker_pulls]][link_docker_hub] [![Docker Pulls][badge_docker_pulls]][link_docker_hub]
[![License][badge_license]][link_license] [![License][badge_license]][link_license]
## Why this image created? ## Why was 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. Logging in JSON format. 3proxy is an awesome and lightweight proxy server. This image contains the stable version and can be configured using environment variables. By default, it uses anonymous proxy settings to hide client information and logs 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].
@@ -32,17 +32,31 @@ TCP ports:
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 (empty by default) | `username` | | `PROXY_LOGIN` | Authorization login (empty by default) | `username` |
| `PROXY_PASSWORD` | Authorization password (empty by default) | `password` | | `PROXY_PASSWORD` | Authorization password (empty by default) | `password` |
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` | | `EXTRA_ACCOUNTS` | Additional proxy users | `{"evil":"live", "guest":"pass"}` |
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` | | `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
| `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` | | `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` |
| `PROXY_PORT` | HTTP proxy port number (`3128` by default) | `8080` | | `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` |
| `SOCKS_PORT` | SOCKS proxy port number (`1080` by default) | `8888` | | `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, but before the `proxy` and `flush`) | `# line 1\n# line 2` |
| `LOG_OUTPUT` | Log output file path (`/dev/stdout` by default, set `/dev/null` to disable logging) | `/tmp/3proxy.log` |
## How can I use this? ## How can I use this?
@@ -52,7 +66,7 @@ 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 & resolver settings: Or with auth & resolver settings:
@@ -64,37 +78,30 @@ $ docker run --rm -d \
-e "PROXY_LOGIN=evil" \ -e "PROXY_LOGIN=evil" \
-e "PROXY_PASSWORD=live" \ -e "PROXY_PASSWORD=live" \
-e "PRIMARY_RESOLVER=2001:4860:4860::8888" \ -e "PRIMARY_RESOLVER=2001:4860:4860::8888" \
tarampampam/3proxy:latest ghcr.io/tarampampam/3proxy:latest
``` ```
## Releasing ## 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. Publishing new versions is very simple: just make the required changes in this repository, update the [changelog file](CHANGELOG.md), and "publish" a new release using the repository's releases page.
Docker images will be build and published automatically. Docker images will be built and published automatically.
> New release will overwrite the `latest` docker image tag in both registers. > The new release will overwrite the `latest` docker image tag in both registries.
## Changes log
[![Release date][badge_release_date]][link_releases]
[![Commits since latest release][badge_commits_since_release]][link_commits]
Changes log can be [found here][link_changes_log].
## Support ## Support
[![Issues][badge_issues]][link_issues] [![Issues][badge_issues]][link_issues]
[![Issues][badge_pulls]][link_pulls] [![Issues][badge_pulls]][link_pulls]
If you find any errors, please, [make an issue][link_create_issue] in current repository. If you find any errors, please, [make an issue][link_create_issue] in the 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