18 Commits

Author SHA1 Message Date
Paramtamtam
d72e72e7fc Update release.yml 2021-10-12 12:15:25 +05:00
Paramtamtam
b345e9859a Update dependabot.yml 2021-10-01 16:50:33 +05:00
Paramtamtam
6e5b989498 Docker healthcheck added, CI updated, docker image build optimized (#10) 2021-09-23 19:28:28 +05:00
dependabot[bot]
f62172c9dc Bump busybox from 1.33.1-glibc to 1.34.0-glibc (#9) 2021-09-20 19:00:52 +00:00
dependabot[bot]
078a3d9b79 Bump anchore/scan-action from 2 to 3 (#8) 2021-09-06 17:50:42 +00:00
dependabot[bot]
659fd3d395 Bump gcc from 11.1.0 to 11.2.0 (#7) 2021-08-03 03:50:42 +00:00
Paramtamtam
bf160a071e Update CI 2021-07-20 15:03:19 +05:00
Paramtamtam
93339d5159 Update CHANGELOG.md 2021-07-05 10:34:23 +05:00
Paramtamtam
1ef63988a7 Bump 3proxy version 2021-07-05 10:33:03 +05:00
dependabot[bot]
921fc47ade Bump busybox from 1.32-glibc to 1.33.1-glibc (#6) 2021-05-10 06:52:28 +00:00
Paramtamtam
e2d06289c4 Fix logformat 2021-05-03 21:14:15 +05:00
Paramtamtam
009ec66d86 Logging in JSON format 2021-05-03 20:57:35 +05:00
dependabot[bot]
19c9d5528e Bump gcc from 10.3.0 to 11.1.0 (#5) 2021-05-03 07:02:04 +00:00
dependabot[bot]
edc91855c5 Bump gcc from 10.2.0 to 10.3.0 (#4)
Bumps gcc from 10.2.0 to 10.3.0.

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-12 19:23:30 +05:00
Paramtamtam
e53ceaa3e3 Revert "Docker image arch linux/arm/v7 added"
This reverts commit 8c5b04a0df.
2021-03-23 15:16:05 +05:00
Paramtamtam
8c5b04a0df Docker image arch linux/arm/v7 added 2021-03-23 15:08:46 +05:00
Paramtamtam
ce90d6dc89 Update tests.yml 2021-03-22 10:11:12 +05:00
dependabot[bot]
b8ab9af377 Bump gcc from 9.3 to 10.2.0 (#2) 2021-01-16 07:22:45 +00:00
7 changed files with 130 additions and 83 deletions

View File

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

View File

@@ -12,27 +12,31 @@ jobs:
- name: Check out code - name: Check out code
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Docker login in default registry - uses: gacts/github-slug@v1
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_LOGIN }}" --password-stdin &> /dev/null id: slug
- name: Docker login in ghcr.io # Auth docs: <https://git.io/JLDaw> - uses: docker/setup-buildx-action@v1
run: echo "${{ secrets.GHCR_PASSWORD }}" | docker login ghcr.io -u tarampampam --password-stdin
- name: Generate image tag value - name: Login to default Container Registry
id: tag uses: docker/login-action@v1 # Action page: <https://github.com/docker/login-action>
run: echo "::set-output name=value::`echo ${GITHUB_REF##*/} | sed -e 's/^[vV ]*//'`" # `/refs/tags/v1.2.3` -> `1.2.3` with:
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build image - name: Login to GitHub Container Registry
run: | uses: docker/login-action@v1 # Action page: <https://github.com/docker/login-action>
docker build \ with:
--tag "tarampampam/3proxy:${{ steps.tag.outputs.value }}" \ registry: ghcr.io
--tag "tarampampam/3proxy:latest" \ username: ${{ github.actor }}
--tag "ghcr.io/tarampampam/3proxy:${{ steps.tag.outputs.value }}" \ password: ${{ secrets.GHCR_PASSWORD }}
--tag "ghcr.io/tarampampam/3proxy:latest" \
-f ./Dockerfile .
- name: Push into default registry - uses: docker/build-push-action@v2 # Action page: <https://github.com/docker/build-push-action>
run: docker push "tarampampam/3proxy:${{ steps.tag.outputs.value }}" && docker push "tarampampam/3proxy:latest" with:
context: .
- name: Push into ghcr.io file: Dockerfile
run: docker push "ghcr.io/tarampampam/3proxy:${{ steps.tag.outputs.value }}" && docker push "ghcr.io/tarampampam/3proxy:latest" push: true
tags: |
tarampampam/3proxy:${{ steps.slug.outputs.version-semantic }}
tarampampam/3proxy:latest
ghcr.io/${{ github.actor }}/3proxy:${{ steps.slug.outputs.version-semantic }}
ghcr.io/${{ github.actor }}/3proxy:latest

View File

@@ -2,15 +2,23 @@ name: tests
on: on:
push: push:
branches: branches: [master, main]
- master tags-ignore: ['**']
tags-ignore: pull_request: {}
- '**'
pull_request:
schedule:
- cron: '0 0 * * 0' # once in a week, docs: <https://git.io/JvxXE#onschedule>
jobs: # Docs: <https://git.io/JvxXE> jobs: # Docs: <https://git.io/JvxXE>
gitleaks:
name: Gitleaks
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Check for GitLeaks
uses: zricethezav/gitleaks-action@v1.6.0 # Action page: <https://github.com/zricethezav/gitleaks-action>
build-image: build-image:
name: Build docker image name: Build docker image
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
@@ -22,7 +30,7 @@ jobs: # Docs: <https://git.io/JvxXE>
run: docker build -f ./Dockerfile --tag 3proxy:local . run: docker build -f ./Dockerfile --tag 3proxy:local .
- name: Scan image - name: Scan image
uses: anchore/scan-action@v2 # action page: <https://github.com/anchore/scan-action> uses: anchore/scan-action@v3 # action page: <https://github.com/anchore/scan-action>
with: with:
image: 3proxy:local image: 3proxy:local
fail-build: true fail-build: true
@@ -36,6 +44,29 @@ jobs: # Docs: <https://git.io/JvxXE>
with: with:
name: docker-image name: docker-image
path: ./docker-image.tar path: ./docker-image.tar
retention-days: 1
scan-image:
name: Scan docker image
runs-on: ubuntu-20.04
needs: [build-image]
steps:
- name: Download built docker image
uses: actions/download-artifact@v2
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 docker image (auth ${{ matrix.auth }})

View File

@@ -16,8 +16,9 @@ nscache 65536
# Here we can change timeout values # Here we can change timeout values
timeouts 1 5 30 60 180 1800 15 60 timeouts 1 5 30 60 180 1800 15 60
# Logging docs: <https://3proxy.org/doc/howtor.html#LOGFORMAT>
log /dev/stdout log /dev/stdout
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" logformat "-\""+_G{""time_unix"":%t, ""proxy"":{""type:"":""%N"", ""port"":%p}, ""error"":{""code"":""%E""}, ""auth"":{""user"":""%U""}, ""client"":{""ip"":""%C"", ""port"":%c}, ""server"":{""ip"":""%R"", ""port"":%r}, ""bytes"":{""sent"":%O, ""received"":%I}, ""request"":{""hostname"":""%n""}, ""message"":""%T""}"
maxconn 1024 maxconn 1024

View File

@@ -4,6 +4,28 @@ All notable changes to this package will be documented in this file.
The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver]. The format is based on [Keep a Changelog][keepachangelog] and this project adheres to [Semantic Versioning][semver].
## v1.5.0
### Fixed
- Docker image building optimized
### Added
- Healthcheck in the dockerfile
## v1.4.0
### Changed
- 3proxy updated from `0.9.3` up to `0.9.4`
## v1.3.0
### Changed
- Logging in JSON format
## v1.2.0 ## v1.2.0
### Changed ### Changed

View File

@@ -1,8 +1,8 @@
# Image page: <https://hub.docker.com/_/alpine> # Image page: <https://hub.docker.com/_/gcc>
FROM gcc:9.3 as builder FROM gcc:11.2.0 as builder
# e.g.: `docker build --build-arg "VERSION=0.9.3" .` # e.g.: `docker build --build-arg "VERSION=0.9.4" .`
ARG VERSION="0.9.3" ARG VERSION="0.9.4"
# Fetch 3proxy sources # Fetch 3proxy sources
RUN set -x \ RUN set -x \
@@ -34,39 +34,29 @@ RUN set -x \
&& strip ./bin/SSLPlugin.ld.so && strip ./bin/SSLPlugin.ld.so
# Prepare filesystem for 3proxy running # Prepare filesystem for 3proxy running
FROM busybox:1.32-glibc as buffer FROM busybox:1.34.0-glibc as buffer
# create a directory for the future root filesystem
WORKDIR /tmp/rootfs
# prepare the root filesystem
RUN set -x \
&& mkdir -p ./etc ./bin ./usr/local/3proxy/libexec ./etc/3proxy \
&& echo '3proxy:x:10001:10001::/nonexistent:/sbin/nologin' > ./etc/passwd \
&& echo '3proxy:x:10001:' > ./etc/group \
&& wget -O ./bin/dumb-init "https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64" \
&& chmod +x ./bin/dumb-init
# Copy binaries # Copy binaries
COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* /lib/ COPY --from=builder /lib/x86_64-linux-gnu/libdl.so.* ./lib/
COPY --from=builder /tmp/3proxy/bin/3proxy /bin/ 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 3proxy.cfg ./etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh ./docker-entrypoint.sh
# Create unprivileged user RUN chown -R 10001:10001 ./etc/3proxy
RUN set -x \
&& adduser \
--disabled-password \
--gecos "" \
--home /nonexistent \
--shell /sbin/nologin \
--no-create-home \
--uid 10001 \
3proxy
# Prepare files and directories FROM busybox:1.34.0-glibc
RUN set -x \
&& chown -R 10001:10001 /usr/local/3proxy \
&& chmod -R 550 /usr/local/3proxy \
&& chmod -R 555 /usr/local/3proxy/libexec \
&& chown -R root /usr/local/3proxy/libexec \
&& mkdir /etc/3proxy \
&& chown -R 10001:10001 /etc/3proxy
# Copy our config and entrypoint script
COPY 3proxy.cfg /etc/3proxy/3proxy.cfg
COPY docker-entrypoint.sh /docker-entrypoint.sh
# Split all buffered layers into one
FROM scratch
LABEL \ LABEL \
org.opencontainers.image.title="3proxy" \ org.opencontainers.image.title="3proxy" \
@@ -77,11 +67,15 @@ LABEL \
org.opencontainers.image.licenses="WTFPL" org.opencontainers.image.licenses="WTFPL"
# Import from builder # Import from builder
COPY --from=buffer / / COPY --from=buffer /tmp/rootfs /
# Use an unprivileged user # Use an unprivileged user
USER 3proxy:3proxy USER 3proxy:3proxy
ENTRYPOINT ["/docker-entrypoint.sh"] # Docs: <https://docs.docker.com/engine/reference/builder/#healthcheck>
HEALTHCHECK --interval=5s --timeout=2s --retries=2 --start-period=2s CMD \
netstat -ltn | grep 3128 && netstat -ltn | grep 1080
CMD ["/bin/3proxy", "/etc/3proxy/3proxy.cfg"] ENTRYPOINT ["/bin/dumb-init", "--"]
CMD ["/docker-entrypoint.sh", "/bin/3proxy", "/etc/3proxy/3proxy.cfg"]

View File

@@ -12,7 +12,7 @@
## Why this image created? ## Why this image created?
3proxy is awesome and lightweight proxy-server. This image contains stable version with it and can be configured using environment variables. By default, it uses anonymous (information about client hiding) proxy settings. 3proxy is awesome and lightweight proxy-server. This image contains stable version with it and can be configured using environment variables. By default, it uses anonymous (information about client hiding) proxy settings. Logging in JSON format.
> Page on `hub.docker.com` can be [found here][link_docker_hub]. > Page on `hub.docker.com` can be [found here][link_docker_hub].