diff --git a/.dockerignore b/.dockerignore index 4fcaf03..98885ca 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,8 +1,6 @@ -.editorconfig -.git -.github -.idea -.vscode -temp -tmp -LICENSE +## Ignore everything +* + +## Except the following files (and directories) +!/3proxy.cfg.json +!/3proxy.cfg.mustach diff --git a/.editorconfig b/.editorconfig index f90923a..207d9c7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,3 +1,5 @@ +# EditorConfig docs: + root = true [*] @@ -8,5 +10,6 @@ indent_style = space indent_size = 2 trim_trailing_whitespace = true -[Dockerfile] -indent_size = 4 +[{*.yml,*.yaml}] +ij_any_spaces_within_braces = false +ij_any_spaces_within_brackets = false diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..2a0b405 --- /dev/null +++ b/.github/release.yml @@ -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: ['*'] diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 2e43516..9418a49 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -8,7 +8,7 @@ on: jobs: docker-hub-description: name: Docker Hub Description - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 99fa8c3..c0206a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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: release: # Docs: @@ -7,27 +10,21 @@ on: jobs: docker-image: name: Build docker image - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - {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: with: username: ${{ secrets.DOCKER_LOGIN }} password: ${{ secrets.DOCKER_PASSWORD }} - - uses: docker/login-action@v3 # Action page: with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v6 # Action page: with: context: . diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 201615a..69f6e92 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -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: push: @@ -12,63 +15,45 @@ concurrency: jobs: # Docs: gitleaks: - name: Gitleaks - runs-on: ubuntu-20.04 + name: Check for GitLeaks + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: {fetch-depth: 0} - + - {uses: actions/checkout@v4, with: {fetch-depth: 0}} - uses: gacts/gitleaks@v1 build-image: - name: Build docker image - runs-on: ubuntu-20.04 + name: Build the docker image + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - - name: Build docker image - run: docker build -f ./Dockerfile --tag 3proxy:local . - - - name: Save docker image - run: docker save 3proxy:local > ./docker-image.tar - - - name: Upload artifact - uses: actions/upload-artifact@v4 + - run: docker build -f ./Dockerfile --tag 3proxy:local . + - run: docker save 3proxy:local > ./docker-image.tar + - uses: actions/upload-artifact@v4 with: name: docker-image path: ./docker-image.tar retention-days: 1 try-to-use: - name: Build and use docker image (auth ${{ matrix.auth }}) - runs-on: ubuntu-20.04 + name: Build and use the docker image (auth ${{ matrix.auth }}) + runs-on: ubuntu-latest strategy: fail-fast: false matrix: auth: [yes, no] needs: [build-image] steps: - - name: Download built docker image - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v4 with: name: docker-image path: .artifact - - - name: Prepare image to run - working-directory: .artifact + - working-directory: .artifact run: docker load < docker-image.tar - - - name: Start server without auth setup - if: matrix.auth != 'yes' + - if: matrix.auth != 'yes' run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" 3proxy:local - - - name: Start server with auth setup - if: matrix.auth == 'yes' + - if: matrix.auth == 'yes' run: docker run --rm -d -p "3128:3128/tcp" -p "1080:1080/tcp" -e "PROXY_LOGIN=evil" -e "PROXY_PASSWORD=live" -e 'EXTRA_ACCOUNTS={"foo":"bar"}' 3proxy:local - - - name: Pause - run: sleep 3 - + - run: sleep 3 - name: Try to use HTTP proxy if: matrix.auth != 'yes' run: | @@ -77,7 +62,6 @@ jobs: # Docs: --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - - name: Try to use SOCKS proxy if: matrix.auth != 'yes' run: | @@ -86,7 +70,6 @@ jobs: # Docs: --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - - name: Try to use HTTP proxy (with auth) if: matrix.auth == 'yes' run: | @@ -96,7 +79,6 @@ jobs: # Docs: --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - - name: Try to use HTTP proxy (with auth, extra user) if: matrix.auth == 'yes' run: | @@ -106,7 +88,6 @@ jobs: # Docs: --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - - name: Try to use SOCKS proxy (with auth) if: matrix.auth == 'yes' run: | @@ -116,6 +97,4 @@ jobs: # Docs: --connect-timeout 3 \ --max-time 3 \ https://www.cloudflare.com/robots.txt - - - name: Stop container - run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q) + - run: docker stop $(docker ps -a --filter ancestor=3proxy:local -q) diff --git a/3proxy.cfg.json b/3proxy.cfg.json index 1aa6717..21f9ab1 100644 --- a/3proxy.cfg.json +++ b/3proxy.cfg.json @@ -1,6 +1,6 @@ { "log": { - "output": "/dev/stdout" + "output": "${LOG_OUTPUT:-/dev/stdout}" }, "name_servers": [ "${PRIMARY_RESOLVER:-1.0.0.1}", diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index c99cb1d..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,133 +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.9.1 - -### Fixed - -- Extra configuration now applies before defining the proxy server in the configuration file [#49] - -[#49]:https://github.com/tarampampam/3proxy-docker/pull/49 - -## v1.9.0 - -### Added - -- `EXTRA_CONFIG` environment variable is supported now [#47] - -[#47]:https://github.com/tarampampam/3proxy-docker/issues/47 - -## v1.8.3 - -### Fixed - -- Missing port definitions when `EXTRA_ACCOUNTS` is set - -## v1.8.2 - -### Removed - -- `ppc64le` architecture support - -## v1.8.1 - -### Added - -- Multi-arch image support (plus `arm64` and `ppc64le`) [#31] - -### Fixed - -- Error page colors now depend on the theme, and the text is centered [#31] - -[#31]:https://github.com/tarampampam/3proxy-docker/pull/31 - -## v1.8.0 - -### Added - -- `EXTRA_ACCOUNTS` environment variable is supported now [#28] - -[#28]:https://github.com/tarampampam/3proxy-docker/issues/28 - -## v1.7.0 - -### Added - -- The following environment variables are supported now: `MAX_CONNECTIONS`, `PROXY_PORT`, `SOCKS_PORT` - -### Changed - -- Entrypoint script (`bash`) replaced with [`mustpl`](https://github.com/tarampampam/mustpl) -- The result docker image `busybox:1.34.1-glibc` replaced with `busybox:stable-glibc` - -### Removed - -- Dockerfile healthcheck - -## v1.6.0 - -### Added - -- Possibility of changing DNS resolvers using environment variables `PRIMARY_RESOLVER` (primary) and `SECONDARY_RESOLVER` (secondary) - -## v1.5.0 - -### Fixed - -- Docker image building optimized - -### Added - -- Healthcheck in the dockerfile - -## v1.4.0 - -### Changed - -- 3proxy updated from `0.9.3` up to `0.9.4` - -## v1.3.0 - -### Changed - -- Logging in JSON format - -## v1.2.0 - -### 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 diff --git a/Dockerfile b/Dockerfile index 5e7efca..65cfb90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ -# Image page: -FROM gcc:13.2.0 as builder +# syntax=docker/dockerfile:1 + +FROM gcc:13.2.0 AS builder # renovate: source=github-tags name=z3APA3A/3proxy ARG Z3PROXY_VERSION=0.9.4 @@ -36,7 +37,7 @@ RUN set -x \ && strip ./bin/SSLPlugin.ld.so # Prepare filesystem for 3proxy running -FROM alpine:latest as buffer +FROM alpine:latest AS buffer # create a directory for the future root filesystem WORKDIR /tmp/rootfs diff --git a/README.md b/README.md index 1374150..e64f811 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ Image: ghcr.io/tarampampam/3proxy:1.8.2 | `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? @@ -87,13 +88,6 @@ Publishing new versions is very simple: just make the required changes in this r Docker images will be built and published automatically. > 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