From 8e2732b3230a08b8bfc6635f654e784926fd2b55 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Thu, 20 Aug 2026 19:04:48 +0300 Subject: [PATCH] Use lts docker tags in 0.9 branch Release images built from the 0.9 branch are tagged lts / lts-busybox / lts-minimal instead of latest / busybox / minimal, so master keeps the latest tags. Version tags are unchanged. --- .github/workflows/docker-ghcr.yml | 6 +++--- .github/workflows/docker.yml | 6 +++--- README.md | 17 +++++++++-------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker-ghcr.yml b/.github/workflows/docker-ghcr.yml index abff4bb..3e8530b 100644 --- a/.github/workflows/docker-ghcr.yml +++ b/.github/workflows/docker-ghcr.yml @@ -30,9 +30,9 @@ jobs: run: | if [[ "$RELEASE_TAG" != "" ]]; then RELEASE="${RELEASE_TAG#v}" - echo "minimal=${IMAGE}:${RELEASE}.minimal,${IMAGE}:minimal" >> "$GITHUB_OUTPUT" - echo "busybox=${IMAGE}:${RELEASE}.busybox,${IMAGE}:busybox" >> "$GITHUB_OUTPUT" - echo "full=${IMAGE}:${RELEASE},${IMAGE}:latest" >> "$GITHUB_OUTPUT" + echo "minimal=${IMAGE}:${RELEASE}.minimal,${IMAGE}:lts-minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${IMAGE}:${RELEASE}.busybox,${IMAGE}:lts-busybox" >> "$GITHUB_OUTPUT" + echo "full=${IMAGE}:${RELEASE},${IMAGE}:lts" >> "$GITHUB_OUTPUT" else DATETIME=$(date +%d%m%y%H%M%S) BRANCH=$(echo "${GITHUB_REF#refs/heads/}" | tr "/" "-") diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2658f91..a971e96 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -28,9 +28,9 @@ jobs: run: | if [[ "$RELEASE_TAG" != "" ]]; then RELEASE="${RELEASE_TAG#v}" - echo "minimal=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.minimal,${REGISTRY}/${IMAGE_NAME}:minimal" >> "$GITHUB_OUTPUT" - echo "busybox=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.busybox,${REGISTRY}/${IMAGE_NAME}:busybox" >> "$GITHUB_OUTPUT" - echo "full=${REGISTRY}/${IMAGE_NAME}:${RELEASE},${REGISTRY}/${IMAGE_NAME}:latest" >> "$GITHUB_OUTPUT" + echo "minimal=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.minimal,${REGISTRY}/${IMAGE_NAME}:lts-minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.busybox,${REGISTRY}/${IMAGE_NAME}:lts-busybox" >> "$GITHUB_OUTPUT" + echo "full=${REGISTRY}/${IMAGE_NAME}:${RELEASE},${REGISTRY}/${IMAGE_NAME}:lts" >> "$GITHUB_OUTPUT" else DATETIME=$(date +%d%m%y%H%M%S) BRANCH=$(echo "${GITHUB_REF#refs/heads/}" | tr "/" "-") diff --git a/README.md b/README.md index 914c33e..839c51c 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ ### Branches - **Master** (stable) branch - 3proxy 0.9 +- **0.9** (LTS) branch - 3proxy 0.9 maintenance branch, this branch - **Devel** branch - 3proxy 10 (don't use it) ### Binaries (deb / rpm / Windows zip) @@ -29,9 +30,9 @@ Documentation (man pages and HTML) available with download, on https://3proxy.or ## Docker images -3 docker configurations are provided, default (full) also tagged as `:latest`, `:busybox` and `:minimal`, all refer to newest stable version. Except busybox, images are distroless and contain only binaries, you can not sh inside the container. `:busybox` contains busybox shell. +3 docker configurations are provided, default (full) also tagged as `:lts`, `:lts-busybox` and `:lts-minimal`, all refer to newest 0.9 LTS version. Images built from this branch use the `lts` tags, images built from the master branch use `:latest`, `:busybox` and `:minimal`. Use the `lts` tags to stay on the 0.9 branch, use a version tag (e.g. `:0.9.9`) to pin an exact version. Except busybox, images are distroless and contain only binaries, you can not sh inside the container. `:lts-busybox` contains busybox shell. -### Default image (`:latest`): +### Default image (`:lts`): Full installation requires to mount /etc/3proxy/3proxy.cfg files. @@ -42,7 +43,7 @@ echo "log nserver 8.8.8.8 nscache 65536 proxy -p3129" | docker config create 3proxy -docker run --read-only -p 3129:3129 --config source=3proxy,target=/etc/3proxy/3proxy.cfg --name 3proxy.full docker.io/3proxy/3proxy +docker run --read-only -p 3129:3129 --config source=3proxy,target=/etc/3proxy/3proxy.cfg --name 3proxy.full docker.io/3proxy/3proxy:lts ``` `podman` does not support `config` as above. @@ -60,13 +61,13 @@ podman run --read-only -p 3129:3129 -v /path/to/local/config/directory/3proxy.cf use `log` without pathname in config to log to stdout. plugins are located in /usr/local/3proxy/libexec (/libexec for chroot config) and since 0.9.6 symlinked by /lib and /lib64 in both chroot and non-chroot configurations, so no full path is required in `plugin` command. Use e.g. `plugin SSLPlugin.ls.so ssl_plugin`. SSLPlugin is supported since 0.9.6. Some proxy types (e.g. SOCKSv5 UDPASSCOC, SOCKSv5 BIND functionality, ftp proxy) require access to ephemeral port, you may use e.g. -`-network host` mode or `-P` for `docker run`. -since 0.9.6 images are distroless (except :busybox) it's recommended to use with read only file system, there are no benefits from chroot. For compatibility, you still can use chroot installation by mounting directory with 3proxy.cfg to /usr/local/3proxy/config. +since 0.9.6 images are distroless (except :lts-busybox) it's recommended to use with read only file system, there are no benefits from chroot. For compatibility, you still can use chroot installation by mounting directory with 3proxy.cfg to /usr/local/3proxy/config. -### Busybox image (`:busybox`): +### Busybox image (`:lts-busybox`): `full` with busybox added, to allow `sh` and few more commands like `sed` inside container. All libraries are in /lib, so chroot configuration can not use plugins. -### Interactive `:minimal` image: +### Interactive `:lts-minimal` image: Dockerfile for "interactive" minimal 3proxy execution, no configuration mounting is required, configuration is accepted from stdin. Use `end` command to indicate the end of configuration. Use `log` for stdout logging. @@ -76,7 +77,7 @@ since 0.9.6 images are distroless (except :busybox) it's recommended to use with Run example: - `docker run --read-only -i -p 3129:3129 --name 3proxy docker.io/3proxy/3proxy:minimal` + `docker run --read-only -i -p 3129:3129 --name 3proxy docker.io/3proxy/3proxy:lts-minimal` or `docker start -ai 3proxy` to start existing container @@ -92,7 +93,7 @@ end Some proxy types (e.g. SOCKSv5 UDPASSCOC, SOCKSv5 BIND functionality, ftp proxy) require access to ephemeral port, you may use e.g. `--network host` mode or `-P` to `docker run`. -`:minimal` without version specified uses current stable version. +`:lts-minimal` without version specified uses current 0.9 LTS version. ## Building and installation