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