Compare commits

..

6 Commits

Author SHA1 Message Date
Paramtamtam
bc3ff69d72
fix the service manifest 2025-02-02 16:25:49 +04:00
Paramtamtam
2e946b4a5b
wip: 🔕 temporary commit 2025-02-02 15:57:08 +04:00
Paramtamtam
f5dd0d94ea
wip: 🔕 temporary commit 2025-02-02 15:53:15 +04:00
Paramtamtam
3cbe16f0e8
wip: 🔕 temporary commit 2025-02-02 15:05:14 +04:00
Paramtamtam
2a0d771bcc
wip: 🔕 temporary commit 2025-02-02 15:01:41 +04:00
Paramtamtam
80634ef5e5
feat: Helm chart 2025-02-02 14:37:12 +04:00
8 changed files with 72 additions and 67 deletions

View File

@ -43,7 +43,6 @@ jobs:
helm-pack: helm-pack:
name: Pack the Helm chart name: Pack the Helm chart
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [build-docker-image]
defaults: {run: {working-directory: ./deployments/helm}} defaults: {run: {working-directory: ./deployments/helm}}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -76,7 +75,8 @@ jobs:
--merge \ --merge \
./helm-charts/index.yaml \ ./helm-charts/index.yaml \
./helm-charts ./helm-charts
- {uses: gacts/directory-listing@v1, with: {overwrite: true}} - uses: yKicchan/generate-directory-listing-action@v1
with: {target: ., ignore: "**/index.html", override: true}
- name: Commit and push the changes - name: Commit and push the changes
run: | run: |
git config user.name "${{ github.actor }}" git config user.name "${{ github.actor }}"

View File

@ -24,9 +24,26 @@ 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
filter:
name: Filter files
runs-on: ubuntu-latest
permissions: {pull-requests: read}
outputs:
docker: ${{ steps.filter.outputs.docker }}
helm: ${{ steps.filter.outputs.helm }}
steps:
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
docker: [Dockerfile, '*docker*', '*3proxy*']
helm: ['deployments/helm/**', '*kube*']
lint-charts: lint-charts:
name: Lint the chart name: Lint the chart
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [filter]
if: needs.filter.outputs.helm == 'true'
defaults: {run: {working-directory: ./deployments/helm}} defaults: {run: {working-directory: ./deployments/helm}}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -38,6 +55,8 @@ jobs:
build-image: build-image:
name: Build the docker image name: Build the docker image
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [filter] # since this is the initial step, we can filter out the rest of the jobs right here to skip them
if: needs.filter.outputs.docker == 'true'
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: docker build -f ./Dockerfile --tag 3proxy:local . - run: docker build -f ./Dockerfile --tag 3proxy:local .
@ -49,7 +68,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

View File

@ -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

View File

@ -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.3.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" \

View File

@ -1,6 +1,19 @@
# This is a fork of <p align="center">
https://github.com/tarampampam/3proxy-docker <a href="https://github.com/tarampampam/3proxy-docker#readme">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://socialify.git.ci/tarampampam/3proxy-docker/image?description=1&font=Raleway&forks=1&issues=1&logo=https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F023186cf-b153-459c-8417-038fd87a2065&owner=1&pulls=1&pattern=Solid&stargazers=1&theme=Dark">
<img align="center" src="https://socialify.git.ci/tarampampam/3proxy-docker/image?description=1&font=Raleway&forks=1&issues=1&logo=https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F023186cf-b153-459c-8417-038fd87a2065&owner=1&pulls=1&pattern=Solid&stargazers=1&theme=Light">
</picture>
</a>
</p>
<p align="center">
<a href="https://github.com/tarampampam/3proxy-docker/actions"><img src="https://img.shields.io/github/actions/workflow/status/tarampampam/3proxy-docker/tests.yml?branch=master&maxAge=30&label=tests&logo=github&style=flat-square" alt="" /></a>
<a href="https://github.com/tarampampam/3proxy-docker/actions"><img src="https://img.shields.io/github/actions/workflow/status/tarampampam/3proxy-docker/release.yml?maxAge=30&label=release&logo=github&style=flat-square" alt="" /></a>
<a href="https://hub.docker.com/r/tarampampam/3proxy"><img src="https://img.shields.io/docker/pulls/tarampampam/3proxy.svg?maxAge=30&label=pulls&logo=docker&logoColor=white&style=flat-square" alt="" /></a>
<a href="https://hub.docker.com/r/tarampampam/3proxy"><img src="https://img.shields.io/docker/image-size/tarampampam/3proxy/latest?maxAge=30&label=size&logo=docker&logoColor=white&style=flat-square" alt="" /></a>
<a href="https://github.com/tarampampam/3proxy-docker/blob/master/LICENSE"><img src="https://img.shields.io/github/license/tarampampam/3proxy-docker.svg?maxAge=30&style=flat-square" alt="" /></a>
</p>
# Docker image with [3proxy][link_3proxy] # Docker image with [3proxy][link_3proxy]

View File

@ -30,6 +30,6 @@ And override the default values in your `values.yaml`:
```yaml ```yaml
proxy-3proxy: proxy-3proxy:
# ... # ...
service: {ports: {http: 3128}} service: {port: 8800}
# ... # ...
``` ```

View File

@ -72,14 +72,14 @@ spec:
- name: {{ $authLoginEnvName }} - name: {{ $authLoginEnvName }}
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ tpl .fromSecret.secretName $ | quote }} name: "{{ tpl (toYaml .fromSecret.secretName) $ }}"
key: {{ tpl .fromSecret.secretKey $ | quote }} key: "{{ tpl (toYaml .fromSecret.secretKey) $ }}"
{{- else if .fromConfigMap.enabled }} {{- else if .fromConfigMap.enabled }}
- name: {{ $authLoginEnvName }} - name: {{ $authLoginEnvName }}
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
name: {{ tpl .fromConfigMap.configMapName $ | quote }} name: "{{ tpl (toYaml .fromConfigMap.configMapName) $ }}"
key: {{ tpl .fromConfigMap.configMapKey $ | quote }} key: "{{ tpl (toYaml .fromConfigMap.configMapKey) $ }}"
{{- end }} {{- end }}
{{- end }} {{- end }}
@ -91,14 +91,14 @@ spec:
- name: {{ $authPasswordEnvName }} - name: {{ $authPasswordEnvName }}
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ tpl .fromSecret.secretName $ | quote }} name: "{{ tpl (toYaml .fromSecret.secretName) $ }}"
key: {{ tpl .fromSecret.secretKey $ | quote }} key: "{{ tpl (toYaml .fromSecret.secretKey) $ }}"
{{- else if .fromConfigMap.enabled }} {{- else if .fromConfigMap.enabled }}
- name: {{ $authPasswordEnvName }} - name: {{ $authPasswordEnvName }}
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
name: {{ tpl .fromConfigMap.configMapName $ | quote }} name: "{{ tpl (toYaml .fromConfigMap.configMapName) $ }}"
key: {{ tpl .fromConfigMap.configMapKey $ | quote }} key: "{{ tpl (toYaml .fromConfigMap.configMapKey) $ }}"
{{- end }} {{- end }}
{{- end }} {{- end }}
@ -112,14 +112,14 @@ spec:
- name: {{ $extraAuthAccountsEnvName }} - name: {{ $extraAuthAccountsEnvName }}
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ tpl .fromSecret.secretName $ | quote }} name: "{{ tpl (toYaml .fromSecret.secretName) $ }}"
key: {{ tpl .fromSecret.secretKey $ | quote }} key: "{{ tpl (toYaml .fromSecret.secretKey) $ }}"
{{- else if .fromConfigMap.enabled }} {{- else if .fromConfigMap.enabled }}
- name: {{ $extraAuthAccountsEnvName }} - name: {{ $extraAuthAccountsEnvName }}
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
name: {{ tpl .fromConfigMap.configMapName $ | quote }} name: "{{ tpl (toYaml .fromConfigMap.configMapName) $ }}"
key: {{ tpl .fromConfigMap.configMapKey $ | quote }} key: "{{ tpl (toYaml .fromConfigMap.configMapKey) $ }}"
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@ -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"