├── .github └── workflows │ └── build.yml ├── Dockerfile └── README.md /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Check for New Release and Build Docker 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - main 7 | push: 8 | branches: 9 | - main 10 | schedule: 11 | - cron: '0 12 * * *' # Runs every day at 12:00 PM 12 | workflow_dispatch: 13 | 14 | jobs: 15 | check-release: 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Get latest release info 23 | id: get_release 24 | run: | 25 | latest_release=$(curl -s https://api.github.com/repos/hufrea/byedpi/releases/latest) 26 | echo "Latest release info: $latest_release" 27 | echo "tag=$(echo $latest_release | jq -r .tag_name)" >> $GITHUB_ENV 28 | echo "published_at=$(echo $latest_release | jq -r .published_at)" >> $GITHUB_ENV 29 | 30 | - name: Compare with last known release 31 | id: compare_release 32 | run: | 33 | last_known_release=$(cat .last_known_release 2>/dev/null || echo "") 34 | latest_release=$(echo ${{ env.published_at }}) 35 | if [ "$latest_release" != "$last_known_release" ]; then 36 | echo "New release found: $latest_release" 37 | echo "new_release=true" >> $GITHUB_ENV 38 | echo $latest_release > .last_known_release 39 | else 40 | echo "No new release. Last known release: $last_known_release" 41 | echo "new_release=false" >> $GITHUB_ENV 42 | fi 43 | 44 | - name: Log in to Docker Hub 45 | uses: docker/login-action@v2 46 | with: 47 | username: ${{ secrets.DOCKER_USERNAME }} 48 | password: ${{ secrets.DOCKER_PASSWORD }} 49 | 50 | - name: Set up QEMU 51 | uses: docker/setup-qemu-action@v3 52 | 53 | - name: Set up Docker Buildx 54 | uses: docker/setup-buildx-action@v3 55 | 56 | - name: Build multi arch if new release 57 | if: env.new_release == 'true' 58 | run: | 59 | echo "New release detected, building and pushing Docker..." 60 | docker buildx build \ 61 | --platform linux/amd64 \ 62 | --platform linux/arm/v7 \ 63 | --platform linux/aarch64 \ 64 | --platform linux/ppc64le \ 65 | -t ${{ secrets.DOCKER_USERNAME }}/byedpi:test \ 66 | -t ${{ secrets.DOCKER_USERNAME }}/byedpi:${{ env.tag }} \ 67 | -t ${{ secrets.DOCKER_USERNAME }}/byedpi:latest \ 68 | --push \ 69 | . 70 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest AS build 2 | 3 | RUN apk update && apk add --no-cache \ 4 | git \ 5 | build-base \ 6 | openssl-dev \ 7 | libpcap-dev \ 8 | linux-headers \ 9 | musl-dev 10 | 11 | RUN git clone https://github.com/hufrea/byedpi /opt/byedpi 12 | 13 | WORKDIR /opt/byedpi 14 | RUN make 15 | 16 | FROM alpine:latest 17 | 18 | COPY --from=build /opt /opt 19 | EXPOSE 1080 20 | 21 | ENTRYPOINT ["/opt/byedpi/ciadpi"] 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Usage: 2 | 3 | **Docker** 4 | ``` 5 | docker run --rm -p 127.0.0.1:1080:1080 --name byedpi tazihad/byedpi --disorder 1 --fake 0 --ttl 1 --auto=torst --tlsrec 1+s --debug 1 6 | ``` 7 | 8 | **Podman** 9 | ``` 10 | podman run --rm -p 127.0.0.1:1080:1080 --name byedpi tazihad/byedpi --disorder 1 --fake 0 --ttl 1 --auto=torst --tlsrec 1+s --debug 1 11 | ``` 12 | 13 | Adjust config. 14 | 15 | **Use socks5** 16 | ``` 17 | socks5://127.0.0.1:1080 18 | ``` 19 | 20 | 21 | 22 | [ByeDPI project](https://github.com/hufrea/byedpi) 23 | --------------------------------------------------------------------------------