Compare commits
No commits in common. "master" and "v1.10.0" have entirely different histories.
3
.github/dependabot.yml
vendored
3
.github/dependabot.yml
vendored
@ -1,5 +1,4 @@
|
|||||||
# yaml-language-server: $schema=https://json.schemastore.org/dependabot-2.0.json
|
# 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
|
||||||
|
|
||||||
|
7
.github/workflows/documentation.yml
vendored
7
.github/workflows/documentation.yml
vendored
@ -1,7 +1,4 @@
|
|||||||
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
|
name: documentation
|
||||||
# docs: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
|
|
||||||
|
|
||||||
name: 📚 Documentation
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -15,7 +12,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: peter-evans/dockerhub-description@v4
|
- 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 }}
|
||||||
|
75
.github/workflows/release.yml
vendored
75
.github/workflows/release.yml
vendored
@ -4,83 +4,34 @@
|
|||||||
name: 🚀 Release
|
name: 🚀 Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release: {types: [published]}
|
release: # Docs: <https://git.io/JeBz1#release-event-release>
|
||||||
workflow_dispatch: {}
|
types: [published]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-docker-image:
|
docker-image:
|
||||||
name: Build the docker image
|
name: Build docker image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: docker/login-action@v3
|
- {uses: gacts/github-slug@v1, id: slug}
|
||||||
|
- uses: docker/setup-qemu-action@v3
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- uses: docker/login-action@v3 # 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
|
- uses: docker/login-action@v3 # 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: gacts/github-slug@v1, id: slug}
|
- uses: docker/build-push-action@v6 # Action page: <https://github.com/docker/build-push-action>
|
||||||
- uses: docker/setup-qemu-action@v3
|
|
||||||
- uses: docker/setup-buildx-action@v3
|
|
||||||
- uses: docker/build-push-action@v6
|
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
tags: |
|
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
|
ghcr.io/${{ github.actor }}/3proxy:latest
|
||||||
ghcr.io/${{ github.actor }}/3proxy:${{ steps.slug.outputs.version }}
|
|
||||||
ghcr.io/${{ github.actor }}/3proxy:${{ steps.slug.outputs.version-major }}.${{ steps.slug.outputs.version-minor }}
|
|
||||||
ghcr.io/${{ github.actor }}/3proxy:${{ steps.slug.outputs.version-major }}
|
|
||||||
docker.io/tarampampam/3proxy:latest
|
|
||||||
docker.io/tarampampam/3proxy:${{ steps.slug.outputs.version }}
|
|
||||||
docker.io/tarampampam/3proxy:${{ steps.slug.outputs.version-major }}.${{ steps.slug.outputs.version-minor }}
|
|
||||||
docker.io/tarampampam/3proxy:${{ steps.slug.outputs.version-major }}
|
|
||||||
|
|
||||||
helm-pack:
|
|
||||||
name: Pack the Helm chart
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [build-docker-image]
|
|
||||||
defaults: {run: {working-directory: ./deployments/helm}}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: azure/setup-helm@v4
|
|
||||||
- {uses: gacts/github-slug@v1, id: slug}
|
|
||||||
- run: |
|
|
||||||
helm package \
|
|
||||||
--app-version "${{ steps.slug.outputs.version }}" \
|
|
||||||
--version "${{ steps.slug.outputs.version }}" .
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: helm-chart
|
|
||||||
path: ./deployments/helm/*.tgz
|
|
||||||
if-no-files-found: error
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
helm-publish:
|
|
||||||
name: Put the Helm chart to the GitHub pages branch
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [helm-pack]
|
|
||||||
steps:
|
|
||||||
- {uses: actions/checkout@v4, with: {ref: gh-pages}}
|
|
||||||
- uses: azure/setup-helm@v4
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with: {name: helm-chart, path: ./helm-charts}
|
|
||||||
- name: Update the index.yaml
|
|
||||||
run: |
|
|
||||||
helm repo index \
|
|
||||||
--url https://${{ github.actor }}.github.io/${{ github.event.repository.name }}/helm-charts/ \
|
|
||||||
--merge \
|
|
||||||
./helm-charts/index.yaml \
|
|
||||||
./helm-charts
|
|
||||||
- {uses: gacts/directory-listing@v1, with: {overwrite: true}}
|
|
||||||
- name: Commit and push the changes
|
|
||||||
run: |
|
|
||||||
git config user.name "${{ github.actor }}"
|
|
||||||
git config user.email "${{ github.actor }}@users.noreply.github.com"
|
|
||||||
git add .
|
|
||||||
git commit -m "Helm chart release"
|
|
||||||
git push origin gh-pages
|
|
||||||
|
20
.github/workflows/tests.yml
vendored
20
.github/workflows/tests.yml
vendored
@ -4,19 +4,16 @@
|
|||||||
name: 🧪 Tests
|
name: 🧪 Tests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch: {}
|
|
||||||
push:
|
push:
|
||||||
branches: [master, main]
|
branches: [master, main]
|
||||||
paths-ignore: ['**.md']
|
|
||||||
tags-ignore: ['**']
|
tags-ignore: ['**']
|
||||||
pull_request:
|
pull_request: {}
|
||||||
paths-ignore: ['**.md']
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.ref }}
|
group: ${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs: # Docs: <https://git.io/JvxXE>
|
||||||
gitleaks:
|
gitleaks:
|
||||||
name: Check for GitLeaks
|
name: Check for GitLeaks
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -24,17 +21,6 @@ jobs:
|
|||||||
- {uses: actions/checkout@v4, with: {fetch-depth: 0}}
|
- {uses: actions/checkout@v4, with: {fetch-depth: 0}}
|
||||||
- uses: gacts/gitleaks@v1
|
- uses: gacts/gitleaks@v1
|
||||||
|
|
||||||
lint-charts:
|
|
||||||
name: Lint the chart
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults: {run: {working-directory: ./deployments/helm}}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: azure/setup-helm@v4
|
|
||||||
- run: helm dependency update .
|
|
||||||
- run: helm template . > /dev/null
|
|
||||||
- run: helm lint --strict .
|
|
||||||
|
|
||||||
build-image:
|
build-image:
|
||||||
name: Build the docker image
|
name: Build the docker image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -49,7 +35,7 @@ jobs:
|
|||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
try-to-use:
|
try-to-use:
|
||||||
name: Try to use the docker image (auth ${{ matrix.auth }})
|
name: Build and use the docker image (auth ${{ matrix.auth }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
@ -1,44 +1,39 @@
|
|||||||
#!/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
|
||||||
system "echo `which 3proxy`': Starting 3proxy'"
|
system "echo `which 3proxy`': Starting 3proxy'"
|
||||||
|
|
||||||
|
# We can configure nservers to avoid unsafe gethostbyname() usage (max 5 servers)
|
||||||
{{#name_servers}}
|
{{#name_servers}}
|
||||||
nserver {{ . }}
|
nserver {{ . }}
|
||||||
{{/name_servers}}
|
{{/name_servers}}
|
||||||
|
|
||||||
|
# nscache is good to save speed, traffic and bandwidth
|
||||||
nscache {{ name_servers_cache }}
|
nscache {{ name_servers_cache }}
|
||||||
|
|
||||||
|
# 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 {{ log.output }}
|
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""}"
|
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 }}
|
maxconn {{ max_connections }}
|
||||||
|
|
||||||
{{#auth.login}}
|
{{^auth.login=}}{{^auth.password=}}
|
||||||
{{#auth.password}}
|
users {{ auth.login }}:CL:{{ auth.password }}{{#auth.extra_accounts.*}} {{ * }}:CL:{{ . }}{{/auth.extra_accounts.*}}
|
||||||
users {{ auth.login }}:CL:{{ auth.password }}
|
|
||||||
auth strong
|
auth strong
|
||||||
allow {{ auth.login }}
|
allow {{ auth.login }}{{#auth.extra_accounts.*}},{{ * }}{{/auth.extra_accounts.*}}
|
||||||
{{/auth.password}}
|
{{/auth.password=}}{{/auth.login=}}
|
||||||
{{/auth.login}}
|
|
||||||
|
|
||||||
# Listen on both IPv4 and IPv6 for incoming and outgoing traffic
|
{{^extra_config=}}
|
||||||
external 0.0.0.0
|
|
||||||
external ::
|
|
||||||
internal 0.0.0.0
|
|
||||||
internal ::
|
|
||||||
|
|
||||||
{{#extra_config}}
|
|
||||||
# Additional configuration
|
# Additional configuration
|
||||||
{{extra_config}}
|
{{extra_config}}
|
||||||
{{/extra_config}}
|
{{/extra_config=}}
|
||||||
|
|
||||||
# IPv4 & IPv6 Support for SOCKS5 & HTTP
|
|
||||||
proxy -a -p{{ ports.proxy }}
|
proxy -a -p{{ ports.proxy }}
|
||||||
socks -a -p{{ ports.socks }}
|
socks -a -p{{ ports.socks }}
|
||||||
|
|
||||||
proxy -6 -a -p{{ ports.proxy }}
|
flush
|
||||||
socks -6 -a -p{{ ports.socks }}
|
|
||||||
|
|
||||||
flush
|
|
||||||
|
19
Dockerfile
19
Dockerfile
@ -1,20 +1,20 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
FROM docker.io/library/gcc:15.1.0 AS builder
|
FROM gcc:13.2.0 AS builder
|
||||||
|
|
||||||
# renovate: source=github-tags name=3proxy/3proxy
|
# renovate: source=github-tags name=z3APA3A/3proxy
|
||||||
ARG Z3PROXY_VERSION=0.9.5
|
ARG Z3PROXY_VERSION=0.9.4
|
||||||
|
|
||||||
# Fetch 3proxy sources
|
# Fetch 3proxy sources
|
||||||
RUN set -x \
|
RUN set -x \
|
||||||
&& git -c advice.detachedHead=false clone --depth 1 --branch "${Z3PROXY_VERSION}" https://github.com/3proxy/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
|
||||||
|
|
||||||
# Patch sources
|
# Patch sources
|
||||||
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/3proxy/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>:root{--color-bg-primary:#fff;--color-text-primary:#131313;--color-text-secondary:#232323}\
|
&& sed -i 's~\(<\/head>\)~<style>:root{--color-bg-primary:#fff;--color-text-primary:#131313;--color-text-secondary:#232323}\
|
||||||
@media (prefers-color-scheme: dark){:root{--color-bg-primary:#212121;--color-text-primary:#fafafa;--color-text-secondary:#bbb}}\
|
@media (prefers-color-scheme: dark){:root{--color-bg-primary:#212121;--color-text-primary:#fafafa;--color-text-secondary:#bbb}}\
|
||||||
html,body{height:100%;font-family:sans-serif;background-color:var(--color-bg-primary);color:var(--color-text-primary);margin:0;\
|
html,body{height:100%;font-family:sans-serif;background-color:var(--color-bg-primary);color:var(--color-text-primary);margin:0;\
|
||||||
@ -34,11 +34,10 @@ RUN set -x \
|
|||||||
&& strip ./bin/TrafficPlugin.ld.so \
|
&& strip ./bin/TrafficPlugin.ld.so \
|
||||||
&& strip ./bin/PCREPlugin.ld.so \
|
&& strip ./bin/PCREPlugin.ld.so \
|
||||||
&& strip ./bin/TransparentPlugin.ld.so \
|
&& strip ./bin/TransparentPlugin.ld.so \
|
||||||
&& strip ./bin/SSLPlugin.ld.so \
|
&& strip ./bin/SSLPlugin.ld.so
|
||||||
&& cp /lib/$(gcc -dumpmachine)/libdl.so.* /tmp/3proxy/
|
|
||||||
|
|
||||||
# Prepare filesystem for 3proxy running
|
# Prepare filesystem for 3proxy running
|
||||||
FROM docker.io/library/alpine:latest 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
|
||||||
@ -54,7 +53,7 @@ RUN set -x \
|
|||||||
&& chmod +x ./bin/dumb-init \
|
&& chmod +x ./bin/dumb-init \
|
||||||
&& apk del .build-deps
|
&& apk del .build-deps
|
||||||
|
|
||||||
COPY --from=builder /tmp/3proxy/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.1 /bin/mustpl ./bin/mustpl
|
COPY --from=ghcr.io/tarampampam/mustpl:0.1.1 /bin/mustpl ./bin/mustpl
|
||||||
@ -64,7 +63,7 @@ COPY 3proxy.cfg.mustach ./etc/3proxy/3proxy.cfg.mustach
|
|||||||
RUN chown -R 10001:10001 ./etc/3proxy
|
RUN chown -R 10001:10001 ./etc/3proxy
|
||||||
|
|
||||||
# Merge into a single layer
|
# Merge into a single layer
|
||||||
FROM docker.io/library/busybox:stable-glibc
|
FROM busybox:stable-glibc
|
||||||
|
|
||||||
LABEL \
|
LABEL \
|
||||||
org.opencontainers.image.title="3proxy" \
|
org.opencontainers.image.title="3proxy" \
|
||||||
|
131
README.md
131
README.md
@ -1,12 +1,18 @@
|
|||||||
# This is a fork of
|
<p align="center">
|
||||||
https://github.com/tarampampam/3proxy-docker
|
<img src="https://hsto.org/webt/kp/e1/ud/kpe1udvcjss_-wtmrws-w9radke.png" width="96" alt="" />
|
||||||
|
</p>
|
||||||
|
|
||||||
# Docker image with [3proxy][link_3proxy]
|
# Docker image with [3proxy][link_3proxy]
|
||||||
|
|
||||||
3proxy is a powerful and lightweight proxy server. This image includes the stable version and can be easily
|
[![Build Status][badge_build_status]][link_build_status]
|
||||||
configured using environment variables. By default, it operates with anonymous proxy settings to hide client
|
[![Release Status][badge_release_status]][link_build_status]
|
||||||
information and logs activity in JSON format.
|
[![Image size][badge_size_latest]][link_docker_hub]
|
||||||
|
[![Docker Pulls][badge_docker_pulls]][link_docker_hub]
|
||||||
|
[![License][badge_license]][link_license]
|
||||||
|
|
||||||
|
## Why was this image created?
|
||||||
|
|
||||||
|
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].
|
||||||
|
|
||||||
@ -22,19 +28,14 @@ TCP ports:
|
|||||||
| Registry | Image |
|
| Registry | Image |
|
||||||
|----------------------------------------|------------------------------|
|
|----------------------------------------|------------------------------|
|
||||||
| [GitHub Container Registry][link_ghcr] | `ghcr.io/tarampampam/3proxy` |
|
| [GitHub Container Registry][link_ghcr] | `ghcr.io/tarampampam/3proxy` |
|
||||||
| [Docker Hub][link_docker_hub] (mirror) | `tarampampam/3proxy` |
|
| [Docker Hub][link_docker_hub] | `tarampampam/3proxy` |
|
||||||
|
|
||||||
> [!NOTE]
|
All supported image tags [can be found here][link_docker_tags].
|
||||||
> It’s recommended to avoid using the `latest` tag, as **major** upgrades may include breaking changes.
|
|
||||||
> Instead, use specific tags in `X.Y.Z` format for version consistency.
|
|
||||||
|
|
||||||
All supported image tags can be [found here][link_docker_tags].
|
Since v1.8.2 architecture `arm64` (and `amd64` of course) is supported:
|
||||||
|
|
||||||
> Starting with version 1.8.2, the `arm64` architecture is supported (in addition to `amd64`):
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker run --rm mplatform/mquery ghcr.io/tarampampam/3proxy:1.8.2
|
$ docker run --rm mplatform/mquery ghcr.io/tarampampam/3proxy:1.8.2
|
||||||
|
|
||||||
Image: 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)
|
* Manifest List: Yes (Image type: application/vnd.docker.distribution.manifest.list.v2+json)
|
||||||
* Supported platforms:
|
* Supported platforms:
|
||||||
@ -42,97 +43,81 @@ Image: ghcr.io/tarampampam/3proxy:1.8.2
|
|||||||
- linux/arm64
|
- 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` |
|
||||||
| `EXTRA_ACCOUNTS` | Additional proxy users (JSON object format) | `{"evil":"live", "guest":"pass"}` |
|
| `EXTRA_ACCOUNTS` | Additional proxy users | `{"evil":"live", "guest":"pass"}` |
|
||||||
| `PRIMARY_RESOLVER` | Primary DNS resolver (`1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
|
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
|
||||||
| `SECONDARY_RESOLVER` | Secondary DNS resolver (`8.8.4.4` by default) | `2001:4860:4860::8844` |
|
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` |
|
||||||
| `MAX_CONNECTIONS` | Maximum number of connections (`1024` by default) | `2056` |
|
| `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` |
|
||||||
| `PROXY_PORT` | HTTP proxy port (`3128` by default) | `8080` |
|
| `PROXY_PORT` | HTTP proxy port number (`3128` by default) | `8080` |
|
||||||
| `SOCKS_PORT` | SOCKS proxy port (`1080` by default) | `8888` |
|
| `SOCKS_PORT` | SOCKS proxy port number (`1080` by default) | `8888` |
|
||||||
| `EXTRA_CONFIG` | Additional 3proxy configuration (appended to the **end** of the config file, but before `proxy` and `flush`) | `# line 1\n# line 2` |
|
| `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` | Path for log output (`/dev/stdout` by default; set to `/dev/null` to disable logging) | `/tmp/3proxy.log` |
|
| `LOG_OUTPUT` | Log output file path (`/dev/stdout` by default, set `/dev/null` to disable logging) | `/tmp/3proxy.log` |
|
||||||
|
|
||||||
## Helm Chart
|
## How can I use this?
|
||||||
|
|
||||||
To install it on Kubernetes (K8s), please use the Helm chart from [ArtifactHUB][artifact-hub].
|
For example:
|
||||||
|
|
||||||
[artifact-hub]:https://artifacthub.io/packages/helm/proxy-3proxy/proxy-3proxy
|
|
||||||
|
|
||||||
## How to Use This Image
|
|
||||||
|
|
||||||
Example usage:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm -d \
|
$ docker run --rm -d \
|
||||||
-p "3128:3128/tcp" \
|
-p "3128:3128/tcp" \
|
||||||
-p "1080:1080/tcp" \
|
-p "1080:1080/tcp" \
|
||||||
ghcr.io/tarampampam/3proxy:1
|
ghcr.io/tarampampam/3proxy:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
With authentication and custom resolver settings:
|
Or with auth & resolver settings:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm -d \
|
$ docker run --rm -d \
|
||||||
-p "3128:3128/tcp" \
|
-p "3128:3128/tcp" \
|
||||||
-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" \
|
-e "PRIMARY_RESOLVER=2001:4860:4860::8888" \
|
||||||
ghcr.io/tarampampam/3proxy:1
|
ghcr.io/tarampampam/3proxy:latest
|
||||||
```
|
|
||||||
|
|
||||||
Docker compose example:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
3proxy:
|
|
||||||
image: ghcr.io/tarampampam/3proxy:1
|
|
||||||
environment:
|
|
||||||
PROXY_LOGIN: evil
|
|
||||||
PROXY_PASSWORD: live
|
|
||||||
MAX_CONNECTIONS: 10000
|
|
||||||
PROXY_PORT: 8000
|
|
||||||
SOCKS_PORT: 8001
|
|
||||||
PRIMARY_RESOLVER: 77.88.8.8
|
|
||||||
SECONDARY_RESOLVER: 8.8.8.8
|
|
||||||
ports:
|
|
||||||
- '8000:8000/tcp'
|
|
||||||
- '8001:8001/tcp'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Releasing
|
## Releasing
|
||||||
|
|
||||||
Publishing a new version is straightforward:
|
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.
|
||||||
|
|
||||||
1. Make the necessary changes in this repository.
|
Docker images will be built and published automatically.
|
||||||
2. "Publish" a new release on the repository's releases page.
|
|
||||||
|
|
||||||
Docker images will be automatically built and published.
|
> The new release will overwrite the `latest` docker image tag in both registries.
|
||||||
|
|
||||||
> Note: The `latest` tag will be overwritten in both registries when a new release is published.
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
[![Issues][badge_issues]][link_issues]
|
[![Issues][badge_issues]][link_issues]
|
||||||
[![Issues][badge_pulls]][link_pulls]
|
[![Issues][badge_pulls]][link_pulls]
|
||||||
|
|
||||||
If you encounter any issues, please [open an issue][link_create_issue] in this repository.
|
If you find any errors, please, [make an issue][link_create_issue] in the current repository.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the WTFPL. Use it freely and enjoy!
|
WTFPL. Use anywhere for your pleasure.
|
||||||
|
|
||||||
|
[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/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_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
|
||||||
[badge_pulls]:https://img.shields.io/github/issues-pr/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180
|
[badge_pulls]:https://img.shields.io/github/issues-pr/tarampampam/3proxy-docker.svg?style=flat-square&maxAge=180
|
||||||
|
[badge_license]:https://img.shields.io/github/license/tarampampam/3proxy-docker.svg?longCache=true
|
||||||
|
[badge_size_latest]:https://img.shields.io/docker/image-size/tarampampam/3proxy/latest?maxAge=30
|
||||||
|
[badge_docker_pulls]:https://img.shields.io/docker/pulls/tarampampam/3proxy.svg
|
||||||
|
[link_releases]:https://github.com/tarampampam/3proxy-docker/releases
|
||||||
|
[link_commits]:https://github.com/tarampampam/3proxy-docker/commits
|
||||||
|
[link_changes_log]:https://github.com/tarampampam/3proxy-docker/blob/master/CHANGELOG.md
|
||||||
[link_issues]:https://github.com/tarampampam/3proxy-docker/issues
|
[link_issues]:https://github.com/tarampampam/3proxy-docker/issues
|
||||||
[link_pulls]:https://github.com/tarampampam/3proxy-docker/pulls
|
[link_pulls]:https://github.com/tarampampam/3proxy-docker/pulls
|
||||||
|
[link_build_status]:https://github.com/tarampampam/3proxy-docker/actions
|
||||||
[link_create_issue]:https://github.com/tarampampam/3proxy-docker/issues/new
|
[link_create_issue]:https://github.com/tarampampam/3proxy-docker/issues/new
|
||||||
|
[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_ghcr]:https://github.com/tarampampam/3proxy-docker/pkgs/container/3proxy
|
||||||
[link_3proxy]:https://github.com/3proxy/3proxy
|
[link_3proxy]:https://github.com/z3APA3A/3proxy
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
# yaml-language-server: $schema=https://json.schemastore.org/chart.json
|
|
||||||
|
|
||||||
apiVersion: v2
|
|
||||||
name: proxy-3proxy
|
|
||||||
description: Powerful and lightweight proxy server, written in pure C
|
|
||||||
|
|
||||||
type: application
|
|
||||||
version: 0.0.0 # will be replaced by the release workflow
|
|
||||||
appVersion: 0.0.0 # will be replaced by the release workflow
|
|
||||||
icon: https://github.com/user-attachments/assets/023186cf-b153-459c-8417-038fd87a2065
|
|
||||||
home: https://github.com/3proxy/3proxy
|
|
||||||
sources: [https://github.com/tarampampam/3proxy-docker]
|
|
||||||
keywords: [proxy, 3proxy, http, socks]
|
|
@ -1,35 +0,0 @@
|
|||||||
# 3proxy
|
|
||||||
|
|
||||||
Important note: Since the chart is released together with the app under the same version (i.e., the chart version
|
|
||||||
matches the app version), its versioning is not compatible with semantic versioning (SemVer). I will do my best to
|
|
||||||
avoid non-backward-compatible changes in the chart, but due to Murphy's Law, I cannot guarantee that they will
|
|
||||||
never occur.
|
|
||||||
|
|
||||||
Also, this chart does not include Ingress configuration. If you need it, please, create it manually.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```shell
|
|
||||||
helm repo add proxy-3proxy https://tarampampam.github.io/3proxy-docker/helm-charts
|
|
||||||
helm repo update
|
|
||||||
|
|
||||||
helm install my-3proxy proxy-3proxy/proxy-3proxy --version <version_here>
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, add the following lines to your `Chart.yaml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
dependencies:
|
|
||||||
- name: proxy-3proxy
|
|
||||||
version: <version_here>
|
|
||||||
repository: https://tarampampam.github.io/3proxy-docker/helm-charts
|
|
||||||
```
|
|
||||||
|
|
||||||
And override the default values in your `values.yaml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
proxy-3proxy:
|
|
||||||
# ...
|
|
||||||
service: {ports: {http: 3128}}
|
|
||||||
# ...
|
|
||||||
```
|
|
@ -1,52 +0,0 @@
|
|||||||
{{/* Define namespace of chart, useful for multi-namespace deployments */}}
|
|
||||||
{{- define "proxy-3proxy.namespace" -}}
|
|
||||||
{{- if .Values.namespaceOverride }}
|
|
||||||
{{- .Values.namespaceOverride }}
|
|
||||||
{{- else }}
|
|
||||||
{{- .Release.Namespace }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/* Expand the name of the chart */}}
|
|
||||||
{{- define "proxy-3proxy.name" -}}
|
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Create a default fully qualified app name.
|
|
||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
|
||||||
If release name contains chart name it will be used as a full name.
|
|
||||||
*/}}
|
|
||||||
{{- define "proxy-3proxy.fullname" -}}
|
|
||||||
{{- if .Values.fullnameOverride }}
|
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- else }}
|
|
||||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
|
||||||
{{- if contains $name .Release.Name }}
|
|
||||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- else }}
|
|
||||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/* Create chart name and version as used by the chart label */}}
|
|
||||||
{{- define "proxy-3proxy.chart" -}}
|
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/* Common labels */}}
|
|
||||||
{{- define "proxy-3proxy.commonLabels" -}}
|
|
||||||
helm.sh/chart: {{ include "proxy-3proxy.chart" . }}
|
|
||||||
{{ include "proxy-3proxy.selectorLabels" . }}
|
|
||||||
{{- if .Chart.AppVersion }}
|
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
|
||||||
{{- end }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/* Selector labels */}}
|
|
||||||
{{- define "proxy-3proxy.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/name: {{ include "proxy-3proxy.name" . }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
@ -1,194 +0,0 @@
|
|||||||
{{- if .Values.deployment.enabled }}
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: {{ .Values.deployment.kind | default "Deployment" }}
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
name: {{ include "proxy-3proxy.fullname" . }}
|
|
||||||
namespace: {{ template "proxy-3proxy.namespace" . }}
|
|
||||||
labels:
|
|
||||||
{{- include "proxy-3proxy.commonLabels" . | nindent 4 }}
|
|
||||||
|
|
||||||
spec:
|
|
||||||
{{- with .Values.deployment }}
|
|
||||||
replicas: {{ .replicas | default 1 }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "proxy-3proxy.selectorLabels" $ | nindent 6 }}
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
{{- with .podAnnotations }}
|
|
||||||
annotations:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
labels:
|
|
||||||
{{- include "proxy-3proxy.commonLabels" $ | nindent 8 }}
|
|
||||||
{{- with .labels }}
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
spec:
|
|
||||||
automountServiceAccountToken: false
|
|
||||||
{{- with .imagePullSecrets }}
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
containers:
|
|
||||||
- name: {{ include "proxy-3proxy.fullname" $ }}
|
|
||||||
|
|
||||||
{{- with .securityContext }}
|
|
||||||
securityContext:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
readOnlyRootFilesystem: false
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with $.Values.image }}
|
|
||||||
image: "{{ .repository }}:{{ .tag | default $.Chart.AppVersion }}"
|
|
||||||
imagePullPolicy: {{ .pullPolicy | default "IfNotPresent" }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
containerPort: 3128
|
|
||||||
protocol: TCP
|
|
||||||
- name: socks
|
|
||||||
containerPort: 1080
|
|
||||||
protocol: TCP
|
|
||||||
env:
|
|
||||||
- {name: PROXY_PORT, value: "3128"}
|
|
||||||
- {name: SOCKS_PORT, value: "1080"}
|
|
||||||
{{- with $.Values.config }}
|
|
||||||
{{- with .log }}
|
|
||||||
{{- $logOutputEnvName := "LOG_OUTPUT" }}
|
|
||||||
{{- if eq .enabled false }}
|
|
||||||
- {name: {{ $logOutputEnvName }}, value: "/dev/null"}
|
|
||||||
{{- else if .output }}
|
|
||||||
- {name: {{ $logOutputEnvName }}, value: "{{ .output }}"}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .auth.login }}
|
|
||||||
{{- $authLoginEnvName := "PROXY_LOGIN" }}
|
|
||||||
{{- if .plain }}
|
|
||||||
- {name: {{ $authLoginEnvName }}, value: "{{ .plain }}"}
|
|
||||||
{{- else if .fromSecret.enabled }}
|
|
||||||
- name: {{ $authLoginEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: {{ tpl .fromSecret.secretName $ | quote }}
|
|
||||||
key: {{ tpl .fromSecret.secretKey $ | quote }}
|
|
||||||
{{- else if .fromConfigMap.enabled }}
|
|
||||||
- name: {{ $authLoginEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ tpl .fromConfigMap.configMapName $ | quote }}
|
|
||||||
key: {{ tpl .fromConfigMap.configMapKey $ | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .auth.password }}
|
|
||||||
{{- $authPasswordEnvName := "PROXY_PASSWORD" }}
|
|
||||||
{{- if .plain }}
|
|
||||||
- {name: {{ $authPasswordEnvName }}, value: "{{ .plain }}"}
|
|
||||||
{{- else if .fromSecret.enabled }}
|
|
||||||
- name: {{ $authPasswordEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: {{ tpl .fromSecret.secretName $ | quote }}
|
|
||||||
key: {{ tpl .fromSecret.secretKey $ | quote }}
|
|
||||||
{{- else if .fromConfigMap.enabled }}
|
|
||||||
- name: {{ $authPasswordEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ tpl .fromConfigMap.configMapName $ | quote }}
|
|
||||||
key: {{ tpl .fromConfigMap.configMapKey $ | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .auth.extraAccounts }}
|
|
||||||
{{- $extraAuthAccountsEnvName := "EXTRA_ACCOUNTS" }}
|
|
||||||
{{- if .plain }}
|
|
||||||
- name: {{ $extraAuthAccountsEnvName }}
|
|
||||||
value: >-
|
|
||||||
{{ .plain | toJson }}
|
|
||||||
{{- else if .fromSecret.enabled }}
|
|
||||||
- name: {{ $extraAuthAccountsEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: {{ tpl .fromSecret.secretName $ | quote }}
|
|
||||||
key: {{ tpl .fromSecret.secretKey $ | quote }}
|
|
||||||
{{- else if .fromConfigMap.enabled }}
|
|
||||||
- name: {{ $extraAuthAccountsEnvName }}
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: {{ tpl .fromConfigMap.configMapName $ | quote }}
|
|
||||||
key: {{ tpl .fromConfigMap.configMapKey $ | quote }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if .dns.primaryResolver }}
|
|
||||||
- {name: PRIMARY_RESOLVER, value: "{{ .dns.primaryResolver }}"}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if .dns.secondaryResolver }}
|
|
||||||
- {name: SECONDARY_RESOLVER, value: "{{ .dns.secondaryResolver }}"}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if ne .limits.maxConnections nil }}
|
|
||||||
- {name: MAX_CONNECTIONS, value: "{{ .limits.maxConnections }}"}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if .extraConfig }}
|
|
||||||
- name: EXTRA_CONFIG
|
|
||||||
value: >-
|
|
||||||
{{ .extraConfig }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $.Values.deployment.env }}
|
|
||||||
{{- tpl (toYaml .) $ | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .args }}
|
|
||||||
args:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .probe }}
|
|
||||||
livenessProbe:
|
|
||||||
tcpSocket: {port: "{{ .port }}"}
|
|
||||||
periodSeconds: {{ .interval }}
|
|
||||||
initialDelaySeconds: {{ .initialDelay }}
|
|
||||||
readinessProbe:
|
|
||||||
tcpSocket: {port: "{{ .port }}"}
|
|
||||||
periodSeconds: {{ .interval }}
|
|
||||||
initialDelaySeconds: {{ .initialDelay }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .resources }}
|
|
||||||
resources:
|
|
||||||
{{- toYaml . | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .volumeMounts }}
|
|
||||||
volumeMounts:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 12 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .volumes }}
|
|
||||||
volumes:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .nodeSelector }}
|
|
||||||
nodeSelector:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .affinity }}
|
|
||||||
affinity:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- with .tolerations }}
|
|
||||||
tolerations:
|
|
||||||
{{- tpl (toYaml .) $ | nindent 8 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@ -1,29 +0,0 @@
|
|||||||
{{- if .Values.service.enabled }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
|
|
||||||
metadata:
|
|
||||||
name: {{ include "proxy-3proxy.fullname" . }}
|
|
||||||
namespace: {{ template "proxy-3proxy.namespace" . }}
|
|
||||||
labels:
|
|
||||||
{{- include "proxy-3proxy.commonLabels" . | nindent 4 }}
|
|
||||||
|
|
||||||
spec:
|
|
||||||
{{- with .Values.service }}
|
|
||||||
type: {{ .type }}
|
|
||||||
{{- with .externalName }}
|
|
||||||
externalName: {{ . }}
|
|
||||||
{{- end }}
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: {{ .ports.http }}
|
|
||||||
targetPort: http
|
|
||||||
protocol: TCP
|
|
||||||
- name: socks
|
|
||||||
port: {{ .ports.socks }}
|
|
||||||
targetPort: socks
|
|
||||||
protocol: TCP
|
|
||||||
selector:
|
|
||||||
{{- include "proxy-3proxy.selectorLabels" $ | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@ -1,367 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"nameOverride": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fullnameOverride": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"namespaceOverride": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"image": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"repository": {"type": "string", "minLength": 1},
|
|
||||||
"tag": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"pullPolicy": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "enum": ["Always", "IfNotPresent", "Never"]},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"deployment": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"kind": {"type": "string"},
|
|
||||||
"replicas": {"type": "integer"},
|
|
||||||
"podAnnotations": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {"type": "string", "minLength": 1}
|
|
||||||
},
|
|
||||||
"labels": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {"type": "string", "minLength": 1}
|
|
||||||
},
|
|
||||||
"imagePullSecrets": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {"type": "string"}
|
|
||||||
},
|
|
||||||
"minProperties": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"securityContext": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"runAsNonRoot": {"type": "boolean"},
|
|
||||||
"runAsUser": {"type": "integer"},
|
|
||||||
"runAsGroup": {"type": "integer"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"probe": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"port": {"type": "string", "enum": ["http", "socks"]},
|
|
||||||
"interval": {"type": "integer"},
|
|
||||||
"initialDelay": {"type": "integer"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"resources": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"requests": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"cpu": {"type": "string"},
|
|
||||||
"memory": {"type": "string"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"limits": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"cpu": {"type": "string"},
|
|
||||||
"memory": {"type": "string"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"volumes": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {"type": "string"},
|
|
||||||
"configMap": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {"type": "string"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"secret": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"secretName": {"type": "string"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"persistentVolumeClaim": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"claimName": {"type": "string"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"volumeMounts": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {"type": "string"},
|
|
||||||
"mountPath": {"type": "string"},
|
|
||||||
"subPath": {"type": "string"},
|
|
||||||
"readOnly": {"type": "boolean"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nodeSelector": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {"type": "string", "minLength": 1}
|
|
||||||
},
|
|
||||||
"affinity": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"nodeAffinity": {"type": "object"},
|
|
||||||
"podAffinity": {"type": "object"},
|
|
||||||
"podAntiAffinity": {"type": "object"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tolerations": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"key": {"type": "string"},
|
|
||||||
"operator": {"type": "string"},
|
|
||||||
"value": {"type": "string"},
|
|
||||||
"effect": {"type": "string"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {"type": "string"},
|
|
||||||
"value": {"type": "string"},
|
|
||||||
"valueFrom": {"type": "object"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"args": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"minLength": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"service": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"type": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["ClusterIP", "NodePort", "LoadBalancer", "ExternalName"]
|
|
||||||
},
|
|
||||||
"externalName": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ports": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"http": {"type": "integer", "minimum": 1, "maximum": 65535},
|
|
||||||
"socks": {"type": "integer", "minimum": 1, "maximum": 65535}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ingress": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"className": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"annotations": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {"type": "string", "minLength": 1}
|
|
||||||
},
|
|
||||||
"hosts": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"host": {"type": "string", "minLength": 1},
|
|
||||||
"paths": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"path": {"type": "string", "minLength": 1},
|
|
||||||
"pathType": {"type": "string", "minLength": 1}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tls": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"hosts": {"type": "array"},
|
|
||||||
"secretName": {"type": "string"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"log": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"output": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 2, "examples": ["/dev/stdout"]},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"login": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"plain": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fromSecret": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"secretName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"secretKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fromConfigMap": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"configMapName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"configMapKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"plain": {
|
|
||||||
"oneOf": [
|
|
||||||
{"type": "string", "minLength": 1},
|
|
||||||
{"type": "null"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fromSecret": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"secretName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"secretKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fromConfigMap": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"configMapName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"configMapKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extraAccounts": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"plain": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {"type": "string", "minLength": 1}
|
|
||||||
},
|
|
||||||
"fromSecret": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"secretName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"secretKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fromConfigMap": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"enabled": {"type": "boolean"},
|
|
||||||
"configMapName": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"configMapKey": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dns": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"primaryResolver": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]},
|
|
||||||
"secondaryResolver": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"limits": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"maxConnections": {"oneOf": [{"type": "integer", "minimum": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extraConfig": {"oneOf": [{"type": "string", "minLength": 1}, {"type": "null"}]}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,149 +0,0 @@
|
|||||||
# -- The name of the Helm release
|
|
||||||
fullnameOverride: null
|
|
||||||
# -- This is to override the chart name
|
|
||||||
nameOverride: null
|
|
||||||
# -- Override the default Release Namespace for Helm
|
|
||||||
namespaceOverride: null
|
|
||||||
|
|
||||||
image:
|
|
||||||
# -- The image repository to pull from
|
|
||||||
repository: ghcr.io/tarampampam/3proxy
|
|
||||||
# -- Defines the image pull policy
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
# -- Overrides the image tag whose default is the chart appVersion
|
|
||||||
tag: null
|
|
||||||
|
|
||||||
deployment:
|
|
||||||
# -- Enable deployment
|
|
||||||
enabled: true
|
|
||||||
# -- The deployment kind
|
|
||||||
kind: Deployment
|
|
||||||
# -- How many replicas to run
|
|
||||||
replicas: 1
|
|
||||||
# -- Additional pod annotations (e.g. for mesh injection or prometheus scraping)
|
|
||||||
# It supports templating. One can set it with values like some/name: '{{ template "some.name" . }}'
|
|
||||||
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
|
||||||
podAnnotations: {} # supports templating
|
|
||||||
# -- Additional deployment labels (e.g. for filtering deployment by custom labels)
|
|
||||||
labels: {} # supports templating
|
|
||||||
# -- This is for the secretes for pulling an image from a private repository more information can be found
|
|
||||||
# here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
|
||||||
imagePullSecrets: [] # supports templating
|
|
||||||
# -- Security context for the pod, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
|
|
||||||
securityContext:
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 10001 # as defined in the Dockerfile
|
|
||||||
runAsGroup: 10001 # as defined in the Dockerfile
|
|
||||||
probe:
|
|
||||||
# -- The port to probe (containerPort, "http" or "socks")
|
|
||||||
port: http
|
|
||||||
# -- How often (in seconds) to perform the probe
|
|
||||||
interval: 10
|
|
||||||
# -- Number of seconds after the container has started before liveness probes are initiated
|
|
||||||
initialDelay: 2
|
|
||||||
# -- Resource limits and requests, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
|
|
||||||
resources:
|
|
||||||
requests: {memory: 16Mi}
|
|
||||||
limits: {memory: 128Mi}
|
|
||||||
# -- Additional volumes to add to the pod, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/storage/volumes/
|
|
||||||
volumes: [] # supports templating
|
|
||||||
# -- Additional volumeMounts to add to the container (for instance when using fs storage driver)
|
|
||||||
volumeMounts: [] # supports templating
|
|
||||||
# -- Node selector for pod assignment, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
|
|
||||||
nodeSelector: {} # supports templating
|
|
||||||
# -- Affinity for pod assignment, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
|
|
||||||
affinity: {} # supports templating
|
|
||||||
# -- Tolerations for pod assignment, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
|
|
||||||
tolerations: [] # supports templating
|
|
||||||
# -- The list of additional environment variables to set in the container
|
|
||||||
env: [] # supports templating
|
|
||||||
# -- The list of additional arguments to pass to the container
|
|
||||||
args: [] # supports templating
|
|
||||||
|
|
||||||
service:
|
|
||||||
# -- Enable service
|
|
||||||
enabled: true
|
|
||||||
# -- Sets the service type more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
|
||||||
type: ClusterIP
|
|
||||||
# -- External name for the service (for type=ExternalName)
|
|
||||||
externalName: null
|
|
||||||
# -- Sets the port, more information can be found here:
|
|
||||||
# https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
|
|
||||||
ports:
|
|
||||||
# -- The port number for the proxy to listen on
|
|
||||||
http: 3128
|
|
||||||
# -- The same, but for socks proxy
|
|
||||||
socks: 1080
|
|
||||||
|
|
||||||
config:
|
|
||||||
log:
|
|
||||||
# -- Enable logging (set to false to disable)
|
|
||||||
enabled: true
|
|
||||||
# -- The output log file
|
|
||||||
# @default /dev/stdout
|
|
||||||
output: null
|
|
||||||
|
|
||||||
auth:
|
|
||||||
login:
|
|
||||||
# -- Username (login) for proxy authentication, provided as a plain value
|
|
||||||
plain: null
|
|
||||||
fromSecret:
|
|
||||||
# -- Enable getting the username from a secret
|
|
||||||
enabled: false
|
|
||||||
secretName: null # supports templating
|
|
||||||
secretKey: null # supports templating
|
|
||||||
fromConfigMap:
|
|
||||||
# -- Enable getting the username from a config map
|
|
||||||
enabled: false
|
|
||||||
configMapName: null # supports templating
|
|
||||||
configMapKey: null # supports templating
|
|
||||||
password:
|
|
||||||
# -- Password for proxy authentication, provided as a plain value
|
|
||||||
plain: null
|
|
||||||
fromSecret:
|
|
||||||
# -- Enable getting the password from a secret
|
|
||||||
enabled: false
|
|
||||||
secretName: null # supports templating
|
|
||||||
secretKey: null # supports templating
|
|
||||||
fromConfigMap:
|
|
||||||
# -- Enable getting the password from a config map
|
|
||||||
enabled: false
|
|
||||||
configMapName: null # supports templating
|
|
||||||
configMapKey: null # supports templating
|
|
||||||
extraAccounts:
|
|
||||||
# -- The list of additional accounts to add to the configuration (a hashmap of username:password)
|
|
||||||
plain: {}
|
|
||||||
fromSecret:
|
|
||||||
# -- Enable getting the extra accounts from a secret (the value should be a JSON object)
|
|
||||||
enabled: false
|
|
||||||
secretName: null # supports templating
|
|
||||||
secretKey: null # supports templating
|
|
||||||
fromConfigMap:
|
|
||||||
# -- Enable getting the extra accounts from a config map (the value should be a JSON object)
|
|
||||||
enabled: false
|
|
||||||
configMapName: null # supports templating
|
|
||||||
configMapKey: null # supports templating
|
|
||||||
|
|
||||||
dns:
|
|
||||||
# -- Primary DNS server
|
|
||||||
# @default 1.0.0.1 (Cloudflare)
|
|
||||||
primaryResolver: null
|
|
||||||
# -- Secondary DNS server
|
|
||||||
# @default 8.8.4.4 (Google)
|
|
||||||
secondaryResolver: null
|
|
||||||
|
|
||||||
limits:
|
|
||||||
# -- The maximum number of connections
|
|
||||||
# @default 1024
|
|
||||||
maxConnections: null
|
|
||||||
|
|
||||||
# -- Additional 3proxy configuration (appended to the end of the config file, but before `proxy` and `flush`),
|
|
||||||
# new lines should be separated by `\n`, i.e.: "# line 1\n# line 2"
|
|
||||||
extraConfig: null
|
|
@ -1,21 +0,0 @@
|
|||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
3proxy-docker:
|
|
||||||
container_name: 3proxy-server
|
|
||||||
hostname: 3proxy-server
|
|
||||||
build:
|
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
network_mode: host
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
PROXY_LOGIN: username
|
|
||||||
PROXY_PASSWORD: "Password"
|
|
||||||
PRIMARY_RESOLVER: 1.1.1.1
|
|
||||||
SECONDARY_RESOLVER: 152.53.118.246
|
|
||||||
MAX_CONNECTIONS: 1024
|
|
||||||
PROXY_PORT: 3128
|
|
||||||
SOCKS_PORT: 1080
|
|
||||||
labels:
|
|
||||||
com.centurylinklabs.watchtower.enable: "false"
|
|
Loading…
x
Reference in New Issue
Block a user