10 Commits

Author SHA1 Message Date
Pаramtamtām
1f42c9285b Allow to configure log output and make CI great again (#60) 2024-11-12 15:38:36 +04:00
Pаramtamtām
2a4024db68 Delete .github/workflows/dependabot.yml 2024-11-01 11:47:29 +04:00
dependabot[bot]
8cdaa01188 Bump docker/build-push-action from 5 to 6 in the github-actions group (#53) 2024-07-01 17:32:45 +00:00
Pаramtamtām
e4e42b94a3 Update dependabot.yml 2024-04-27 14:35:34 +04:00
Pаramtamtām
a4ae4feb1f Update README.md 2024-04-02 13:42:59 +04:00
Pаramtamtām
276efbfeae Update CHANGELOG.md 2024-04-02 13:38:39 +04:00
Mario Trangoni
eabbb17fa5 fix: put EXTRA_CONFIG before the proxy starts (#49)
Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com>
2024-04-02 13:36:30 +04:00
dependabot[bot]
37066552b8 Bump the any group with 1 update (#48) 2024-04-02 05:47:45 +00:00
Pаramtamtām
fb681a846e Update dependabot.yml 2024-03-19 09:56:31 +04:00
Paramtamtam
dcf291de25 docs(readme): 📚 Readme file updated 2024-03-16 18:48:32 +04:00
13 changed files with 81 additions and 243 deletions

View File

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

View File

@@ -1,3 +1,5 @@
# EditorConfig docs: <https://editorconfig.org/>
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

View File

@@ -5,10 +5,12 @@ version: 2
updates:
- package-ecosystem: github-actions
directory: /
groups: {github-actions: {patterns: ['*']}}
schedule: {interval: monthly}
assignees: [tarampampam]
- package-ecosystem: docker
directory: /
groups: {docker: {patterns: ['*']}}
schedule: {interval: monthly}
assignees: [tarampampam]

13
.github/release.yml vendored Normal file
View File

@@ -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: ['*']

View File

@@ -1,25 +0,0 @@
name: dependabot
on:
pull_request: {}
permissions:
contents: write
pull-requests: write
jobs:
dependabot: # https://tinyurl.com/e69djmen
runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' }}
steps:
- uses: dependabot/fetch-metadata@v1
id: metadata
with: {github-token: "${{ secrets.GITHUB_TOKEN }}"}
- name: Enable auto-merge for Dependabot PRs
if: ${{ contains(fromJSON('["version-update:semver-minor", "version-update:semver-patch"]'), steps.metadata.outputs.update-type) }}
run: gh pr merge --auto --merge "$PR_URL"
continue-on-error: true
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

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

View File

@@ -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: <https://git.io/JeBz1#release-event-release>
@@ -7,28 +10,22 @@ 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: <https://github.com/docker/login-action>
with:
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/login-action@v3 # Action page: <https://github.com/docker/login-action>
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5 # Action page: <https://github.com/docker/build-push-action>
- uses: docker/build-push-action@v6 # Action page: <https://github.com/docker/build-push-action>
with:
context: .
push: true

View File

@@ -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: <https://git.io/JvxXE>
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: <https://git.io/JvxXE>
--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: <https://git.io/JvxXE>
--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: <https://git.io/JvxXE>
--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: <https://git.io/JvxXE>
--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: <https://git.io/JvxXE>
--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)

View File

@@ -1,6 +1,6 @@
{
"log": {
"output": "/dev/stdout"
"output": "${LOG_OUTPUT:-/dev/stdout}"
},
"name_servers": [
"${PRIMARY_RESOLVER:-1.0.0.1}",

View File

@@ -27,12 +27,13 @@ auth strong
allow {{ auth.login }}{{#auth.extra_accounts.*}},{{ * }}{{/auth.extra_accounts.*}}
{{/auth.password=}}{{/auth.login=}}
proxy -a -p{{ ports.proxy }}
socks -a -p{{ ports.socks }}
flush{{^extra_config=}}
{{^extra_config=}}
# Additional configuration
{{extra_config}}
{{/extra_config=}}
proxy -a -p{{ ports.proxy }}
socks -a -p{{ ports.socks }}
flush

View File

@@ -1,125 +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.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

View File

@@ -1,5 +1,6 @@
# Image page: <https://hub.docker.com/_/gcc>
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

View File

@@ -10,9 +10,9 @@
[![Docker Pulls][badge_docker_pulls]][link_docker_hub]
[![License][badge_license]][link_license]
## Why this image created?
## Why was 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. Logging in JSON format.
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].
@@ -45,17 +45,18 @@ Image: ghcr.io/tarampampam/3proxy:1.8.2
## Supported environment variables
| Variable name | Description | Example |
|----------------------|-----------------------------------------------------------------------------------|-----------------------------------|
| `PROXY_LOGIN` | Authorization login (empty by default) | `username` |
| `PROXY_PASSWORD` | Authorization password (empty by default) | `password` |
| `EXTRA_ACCOUNTS` | Additional proxy users | `{"evil":"live", "guest":"pass"}` |
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` |
| `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` |
| `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) | `log /dev/stdout` |
| Variable name | Description | Example |
|----------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------|
| `PROXY_LOGIN` | Authorization login (empty by default) | `username` |
| `PROXY_PASSWORD` | Authorization password (empty by default) | `password` |
| `EXTRA_ACCOUNTS` | Additional proxy users | `{"evil":"live", "guest":"pass"}` |
| `PRIMARY_RESOLVER` | Primary nameserver (dns resolver; `1.0.0.1` by default) | `8.8.8.8:5353/tcp` |
| `SECONDARY_RESOLVER` | Secondary nameserver (dns resolver; `8.8.4.4` by default) | `2001:4860:4860::8844` |
| `MAX_CONNECTIONS` | Maximal connections count (`1024` by default) | `2056` |
| `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?
@@ -82,25 +83,18 @@ $ docker run --rm -d \
## Releasing
New versions publishing is very simple - just make required changes in this repository, update [changelog file](CHANGELOG.md) and "publish" new release using repo releases page.
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.
Docker images will be build and published automatically.
Docker images will be built and published automatically.
> New release will overwrite the `latest` docker image tag in both registers.
## 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].
> The new release will overwrite the `latest` docker image tag in both registries.
## Support
[![Issues][badge_issues]][link_issues]
[![Issues][badge_pulls]][link_pulls]
If you find any errors, please, [make an issue][link_create_issue] in current repository.
If you find any errors, please, [make an issue][link_create_issue] in the current repository.
## License