From 8afa3a51ccaa9633b80552e20dc54ac956b2e81f Mon Sep 17 00:00:00 2001 From: thuanle Date: Mon, 7 Sep 2026 15:54:52 +0700 Subject: [PATCH] migrate privoxy-docker from standalone repo (same registry tags) --- .gitea/workflows/privoxy-docker.yml | 68 +++++++++++++++++++++++++++++ README.md | 9 ++++ privoxy-docker/Dockerfile | 11 +++++ privoxy-docker/README.md | 67 ++++++++++++++++++++++++++++ privoxy-docker/config | 9 ++++ 5 files changed, 164 insertions(+) create mode 100644 .gitea/workflows/privoxy-docker.yml create mode 100644 privoxy-docker/Dockerfile create mode 100644 privoxy-docker/README.md create mode 100644 privoxy-docker/config diff --git a/.gitea/workflows/privoxy-docker.yml b/.gitea/workflows/privoxy-docker.yml new file mode 100644 index 0000000..fa1d226 --- /dev/null +++ b/.gitea/workflows/privoxy-docker.yml @@ -0,0 +1,68 @@ +name: privoxy-docker image + +on: + push: + paths: + - privoxy-docker/** + schedule: + - cron: '0 3 * * 0' # 03:00 sáng Chủ nhật (UTC), lệch giờ với image khác + workflow_dispatch: # Cho phép chạy tay nếu cần + +env: + IMAGE_REPO: git.thuanle.me/public/privoxy-docker + IMAGE: privoxy-docker + +jobs: + build: + strategy: + matrix: + arch: + - amd64 + - arm64 + runs-on: ${{ matrix.arch }} + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Login to Docker Registry + uses: docker/login-action@v4 + with: + registry: git.thuanle.me + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build Docker images + run: | + echo "Building image ${{ env.IMAGE }} for architecture: ${{ matrix.arch }}" + + docker build \ + -f ${{ env.IMAGE }}/Dockerfile \ + -t ${{ env.IMAGE_REPO }}:${{ matrix.arch }}-latest \ + --label "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ + --label "commit_sha=${{ github.sha }}" \ + ${{ env.IMAGE }} + + docker push ${{ env.IMAGE_REPO }}:${{ matrix.arch }}-latest + + amend-manifest: + runs-on: linux + needs: [build] + steps: + - name: Login to Docker Registry + uses: docker/login-action@v4 + with: + registry: git.thuanle.me + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Push Docker manifest + run: | + echo "Delete existing manifest" + docker manifest rm ${{ env.IMAGE_REPO }}:latest || true + + echo "Create new manifest" + docker manifest create ${{ env.IMAGE_REPO }}:latest \ + ${{ env.IMAGE_REPO }}:amd64-latest \ + ${{ env.IMAGE_REPO }}:arm64-latest + + docker manifest push ${{ env.IMAGE_REPO }}:latest diff --git a/README.md b/README.md index 1787e54..16da83d 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,15 @@ docker run --rm git.thuanle.me/public/gitea-mcp:latest --help - Chỉ build cho `amd64` (dành cho server có GPU NVIDIA, hiện là `ta`) - Build lại mỗi Chủ nhật lúc 02:30 UTC với `--pull` để lấy binary agent mới nhất; server tiêu thụ qua watchtower +### privoxy-docker + +- Registry: `git.thuanle.me/public/privoxy-docker:latest` +- Dockerfile: [privoxy-docker/Dockerfile](privoxy-docker/Dockerfile) +- Privoxy HTTP proxy chạy không-daemon, user non-root — chi tiết xem [privoxy-docker/README.md](privoxy-docker/README.md) +- Hỗ trợ kiến trúc: `amd64`, `arm64` +- Gộp từ repo riêng `public/privoxy-docker`, giữ nguyên tag registry +- Build lại mỗi Chủ nhật lúc 03:00 UTC + ## Update - Repo được build lại hàng tuần theo cron của từng workflow. diff --git a/privoxy-docker/Dockerfile b/privoxy-docker/Dockerfile new file mode 100644 index 0000000..121c827 --- /dev/null +++ b/privoxy-docker/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:latest + +RUN apk add --no-cache privoxy + +COPY config /etc/privoxy/ + +RUN chown -R 1000:1000 /etc/privoxy /var/log/privoxy + +USER 1000:1000 + +CMD ["privoxy", "--no-daemon", "/etc/privoxy/config"] diff --git a/privoxy-docker/README.md b/privoxy-docker/README.md new file mode 100644 index 0000000..f21b5da --- /dev/null +++ b/privoxy-docker/README.md @@ -0,0 +1,67 @@ +# Privoxy Docker + +Đây là một Docker image cho Privoxy, có thể chạy bằng Docker Compose. + +> Đã gộp từ repo riêng `public/privoxy-docker` vào `public/image` (giữ nguyên tag registry). + +## Nêu dùng `docker-compose.yml` + +```yaml +services: + privoxy: + image: git.thuanle.me/public/privoxy-docker:latest + container_name: privoxy + ports: + - "8118:8118" + volumes: + - ./privoxy:/etc/privoxy + user: "1000:1000" # ✅ Set user theo sở hữu + restart: unless-stopped + labels: + - "com.centurylinklabs.watchtower.enable=true" # Cho phép Watchtower tự động cập nhật container khi cần +``` + +## Hướng dẫn chuỗi hành động + +1. **Tạo thư mục cho mình:** + + Tạo thư mục `privoxy` trong cùng thư mục chứa file `docker-compose.yml` để lưu file cấu hình riêng của bạn. + + ```sh + mkdir -p privoxy + ``` + +2. **Chỉnh sửa file cấu hình Privoxy:** + + - Tạo file `privoxy/config` với nội dung mình muốn + ``` + listen-address 0.0.0.0:8118 + + toggle 1 + enable-remote-toggle 0 + enable-edit-actions 0 + enforce-blocks 1 + buffer-limit 4096 + + logfile /dev/stdout + ``` + + - Hãy copy file cấu hình mình tạo vào container (nếu chưa có mount config folder): + ```sh + docker cp privoxy:/etc/privoxy/config ./privoxy/config + ``` + +3. **Chạy docker lên:** + + ```sh + docker-compose up -d + ``` + +4. **Thử cặp proxy:** + + - Proxy sẽ lắng nghe tại địa chỉ `localhost:8118`. + - Cấu hình trình duyệt hoặc ứng dụng của bạn để sử dụng HTTP Proxy qua địa chỉ trên. + +## Thông tin thêm +- Image được build mỗi Chủ nhật lúc 03:00 UTC, cho mọi kiến trúc (amd64, arm64). +- Để build và push image, xem file [build workflow](../.gitea/workflows/privoxy-docker.yml). diff --git a/privoxy-docker/config b/privoxy-docker/config new file mode 100644 index 0000000..c52a69b --- /dev/null +++ b/privoxy-docker/config @@ -0,0 +1,9 @@ +listen-address 0.0.0.0:8118 + +toggle 1 +enable-remote-toggle 0 +enable-edit-actions 0 +enforce-blocks 1 +buffer-limit 4096 + +logfile /dev/stdout