├── .github ├── buildkitd.toml └── workflows │ ├── alpine-frpc.yml │ ├── alpine-frps.yml │ ├── cache.yml │ ├── debian-frpc.yml │ ├── debian-frps.yml │ ├── description.yml │ └── updater.yml ├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── alpine ├── frpc │ ├── .dockerignore │ └── Dockerfile └── frps │ ├── .dockerignore │ └── Dockerfile └── debian ├── frpc ├── .dockerignore └── Dockerfile └── frps ├── .dockerignore └── Dockerfile /.github/buildkitd.toml: -------------------------------------------------------------------------------- 1 | # debug enables additional debug logging 2 | debug = true 3 | # trace enables additional trace logging (very verbose, with potential performance impacts) 4 | trace = true 5 | 6 | 7 | [registry."docker.io"] 8 | mirrors = ["https://docker.sn0wdr1am.com"] 9 | 10 | [registry."quay.io"] 11 | mirrors = ["https://quay.sn0wdr1am.com"] 12 | 13 | [registry."gcr.io"] 14 | mirrors = ["https://gcr.sn0wdr1am.com"] 15 | 16 | [registry."k8s.gcr.io"] 17 | mirrors = ["https://k8s-gcr.sn0wdr1am.com"] 18 | 19 | [registry."k8s.io"] 20 | mirrors = ["https://k8s.sn0wdr1am.com"] 21 | 22 | [registry."ghcr.io"] 23 | mirrors = ["https://ghcr.sn0wdr1am.com"] 24 | 25 | [registry."cloudsmith.io"] 26 | mirrors = ["https://cloudsmith.sn0wdr1am.com"] 27 | 28 | [registry."ecr.aws"] 29 | mirrors = ["https://ecr.sn0wdr1am.com"] 30 | 31 | [worker.oci] 32 | max-parallelism = 3 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /.github/workflows/alpine-frpc.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Continuous Delivery (Alpine Frpc) 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | - "dev" 8 | - "feat/**" 9 | - "feature/**" 10 | - "fix/**" 11 | - "pr/**" 12 | tags: 13 | - "[0-9]+.[0-9]+.[0-9]+" 14 | - "v[0-9]+.[0-9]+.[0-9]+" 15 | - "V[0-9]+.[0-9]+.[0-9]+" 16 | - "alpine-[0-9]+.[0-9]+.[0-9]+" 17 | - "[0-9]+.[0-9]+" 18 | - "v[0-9]+.[0-9]+" 19 | - "V[0-9]+.[0-9]+" 20 | - "alpine-[0-9]+.[0-9]+" 21 | - "[0-9]+" 22 | - "v[0-9]+" 23 | - "V[0-9]+" 24 | - "alpine-[0-9]+" 25 | pull_request: 26 | branches: 27 | - "main" 28 | - "dev" 29 | - "feat/**" 30 | - "feature/**" 31 | - "fix/**" 32 | - "pr/**" 33 | schedule: 34 | # Automatically run on every Day 35 | - cron: "38 16 * * *" 36 | workflow_dispatch: 37 | 38 | jobs: 39 | buildx: 40 | runs-on: ubuntu-latest 41 | steps: 42 | # - name: Bypass Cloudflare for Github Action Pro 43 | # uses: snowdreamtech/bypass-cloudflare-for-github-action@v0.0.4 44 | # with: 45 | # mode: 'list' 46 | # cf_account_id: ${{ secrets.CF_ACCOUNT_ID }} 47 | # cf_api_token: ${{ secrets.CF_API_TOKEN }} 48 | # cf_zone_id: ${{ secrets.CF_ZONE_ID }} 49 | # github_api_token: ${{ secrets.GITHUB_TOKEN }} 50 | - name: Free Disk Space (Ubuntu) 51 | uses: jlumbroso/free-disk-space@v1.3.1 52 | with: 53 | # this might remove tools that are actually needed, 54 | # if set to "true" but frees about 6 GB 55 | tool-cache: false 56 | 57 | # all of these default to true, but feel free to set to 58 | # "false" if necessary for your workflow 59 | android: true 60 | dotnet: true 61 | haskell: true 62 | large-packages: true 63 | docker-images: false 64 | swap-storage: false 65 | - name: Checkout 66 | uses: actions/checkout@v4.2.2 67 | with: 68 | # [Required] Access token with `workflow` scope. 69 | token: ${{ secrets.WORKFLOW_SECRET }} 70 | - name: Set env variables 71 | run: | 72 | echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV 73 | echo "http_proxy=${http_proxy}" >> $GITHUB_ENV 74 | echo "no_proxy=${no_proxy}" >> $GITHUB_ENV 75 | - # Add support for more platforms with QEMU (optional) 76 | # https://github.com/docker/setup-qemu-action 77 | name: Set up QEMU 78 | uses: docker/setup-qemu-action@v3.6.0 79 | - # https://github.com/docker/setup-buildx-action/issues/57#issuecomment-1059657292 80 | # https://github.com/docker/buildx/issues/136#issuecomment-550205439 81 | # docker buildx create --driver-opt env.http_proxy=$http_proxy --driver-opt env.https_proxy=$https_proxy --driver-opt '"env.no_proxy='$no_proxy'"' 82 | name: Set up Docker Buildx 83 | uses: docker/setup-buildx-action@v3.10.0 84 | with: 85 | buildkitd-config: .github/buildkitd.toml 86 | driver-opts: | 87 | env.http_proxy=${{ env.http_proxy }} 88 | env.https_proxy=${{ env.http_proxy }} 89 | "env.no_proxy='${{ env.no_proxy}}'" 90 | - name: Login to DockerHub 91 | uses: docker/login-action@v3.4.0 92 | with: 93 | username: ${{ secrets.DOCKER_HUB_USERNAME }} 94 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 95 | - name: Login to Quay.io 96 | uses: docker/login-action@v3.4.0 97 | with: 98 | registry: quay.io 99 | username: ${{ secrets.QUAY_USERNAME }} 100 | password: ${{ secrets.QUAY_ROBOT_TOKEN }} 101 | - name: Login to GitHub Container Registry 102 | uses: docker/login-action@v3.4.0 103 | with: 104 | registry: ghcr.io 105 | username: ${{ github.repository_owner }} 106 | password: ${{ secrets.GITHUB_TOKEN }} 107 | - name: Docker meta 108 | id: meta 109 | uses: docker/metadata-action@v5.7.0 110 | with: 111 | images: | 112 | name=snowdreamtech/frpc,enable=true 113 | name=ghcr.io/snowdreamtech/frpc,enable=true 114 | name=quay.io/snowdreamtech/frpc,enable=true 115 | flavor: | 116 | latest=false 117 | prefix= 118 | suffix= 119 | tags: | 120 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=,event=branch 121 | type=edge,enable=true,priority=700,prefix=,suffix=,branch=dev 122 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=latest 123 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=latest 124 | type=schedule,enable=true,priority=1000,prefix=,suffix=,pattern=nightly 125 | type=match,enable=true,priority=800,prefix=,suffix=,pattern=\d+.\d+.\d+,group=0,value= 126 | type=match,enable=true,priority=800,prefix=,suffix=,pattern=\d+.\d+,group=0,value= 127 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=,pattern=\d+,group=0,value= 128 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-alpine,event=branch 129 | type=edge,enable=true,priority=700,prefix=,suffix=-alpine,branch=dev 130 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=alpine 131 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=alpine 132 | type=schedule,enable=true,priority=1000,prefix=,suffix=-alpine,pattern=nightly 133 | type=match,enable=true,priority=800,prefix=,suffix=-alpine,pattern=\d+.\d+.\d+,group=0,value= 134 | type=match,enable=true,priority=800,prefix=,suffix=-alpine,pattern=\d+.\d+,group=0,value= 135 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=-alpine,pattern=\d+,group=0,value= 136 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-alpine3.21,event=branch 137 | type=edge,enable=true,priority=700,prefix=,suffix=-alpine3.21,branch=dev 138 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=alpine3.21 139 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=alpine3.21 140 | type=schedule,enable=true,priority=1000,prefix=,suffix=-alpine3.21,pattern=nightly 141 | type=match,enable=true,priority=800,prefix=,suffix=-alpine3.21,pattern=\d+.\d+.\d+,group=0,value= 142 | type=match,enable=true,priority=800,prefix=,suffix=-alpine3.21,pattern=\d+.\d+,group=0,value= 143 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=-alpine3.21,pattern=\d+,group=0,value= 144 | env: 145 | DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index 146 | - name: Build and push 147 | uses: docker/build-push-action@v6.18.0 148 | with: 149 | context: alpine/frpc 150 | build-args: | 151 | "http_proxy=${{ env.http_proxy }}" 152 | "https_proxy=${{ env.http_proxy }}" 153 | BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} 154 | VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} 155 | REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} 156 | platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/riscv64,linux/s390x 157 | push: ${{ github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/heads/feat/') && !startsWith(github.ref, 'refs/heads/feature/') && !startsWith(github.ref, 'refs/heads/fix/') && !startsWith(github.ref, 'refs/heads/pr/') }} 158 | tags: ${{ steps.meta.outputs.tags }} 159 | labels: ${{ steps.meta.outputs.labels }} 160 | annotations: ${{ steps.meta.outputs.annotations }} 161 | cache-from: type=gha 162 | cache-to: type=gha,mode=max 163 | -------------------------------------------------------------------------------- /.github/workflows/alpine-frps.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Continuous Delivery (Alpine Frps) 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | - "dev" 8 | - "feat/**" 9 | - "feature/**" 10 | - "fix/**" 11 | - "pr/**" 12 | tags: 13 | - "[0-9]+.[0-9]+.[0-9]+" 14 | - "v[0-9]+.[0-9]+.[0-9]+" 15 | - "V[0-9]+.[0-9]+.[0-9]+" 16 | - "alpine-[0-9]+.[0-9]+.[0-9]+" 17 | - "[0-9]+.[0-9]+" 18 | - "v[0-9]+.[0-9]+" 19 | - "V[0-9]+.[0-9]+" 20 | - "alpine-[0-9]+.[0-9]+" 21 | - "[0-9]+" 22 | - "v[0-9]+" 23 | - "V[0-9]+" 24 | - "alpine-[0-9]+" 25 | pull_request: 26 | branches: 27 | - "main" 28 | - "dev" 29 | - "feat/**" 30 | - "feature/**" 31 | - "fix/**" 32 | - "pr/**" 33 | schedule: 34 | # Automatically run on every Day 35 | - cron: "38 16 * * *" 36 | workflow_dispatch: 37 | 38 | jobs: 39 | buildx: 40 | runs-on: ubuntu-latest 41 | steps: 42 | # - name: Bypass Cloudflare for Github Action Pro 43 | # uses: snowdreamtech/bypass-cloudflare-for-github-action@v0.0.4 44 | # with: 45 | # mode: 'list' 46 | # cf_account_id: ${{ secrets.CF_ACCOUNT_ID }} 47 | # cf_api_token: ${{ secrets.CF_API_TOKEN }} 48 | # cf_zone_id: ${{ secrets.CF_ZONE_ID }} 49 | # github_api_token: ${{ secrets.GITHUB_TOKEN }} 50 | - name: Free Disk Space (Ubuntu) 51 | uses: jlumbroso/free-disk-space@v1.3.1 52 | with: 53 | # this might remove tools that are actually needed, 54 | # if set to "true" but frees about 6 GB 55 | tool-cache: false 56 | 57 | # all of these default to true, but feel free to set to 58 | # "false" if necessary for your workflow 59 | android: true 60 | dotnet: true 61 | haskell: true 62 | large-packages: true 63 | docker-images: false 64 | swap-storage: false 65 | - name: Checkout 66 | uses: actions/checkout@v4.2.2 67 | with: 68 | # [Required] Access token with `workflow` scope. 69 | token: ${{ secrets.WORKFLOW_SECRET }} 70 | - name: Set env variables 71 | run: | 72 | echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV 73 | echo "http_proxy=${http_proxy}" >> $GITHUB_ENV 74 | echo "no_proxy=${no_proxy}" >> $GITHUB_ENV 75 | - # Add support for more platforms with QEMU (optional) 76 | # https://github.com/docker/setup-qemu-action 77 | name: Set up QEMU 78 | uses: docker/setup-qemu-action@v3.6.0 79 | - # https://github.com/docker/setup-buildx-action/issues/57#issuecomment-1059657292 80 | # https://github.com/docker/buildx/issues/136#issuecomment-550205439 81 | # docker buildx create --driver-opt env.http_proxy=$http_proxy --driver-opt env.https_proxy=$https_proxy --driver-opt '"env.no_proxy='$no_proxy'"' 82 | name: Set up Docker Buildx 83 | uses: docker/setup-buildx-action@v3.10.0 84 | with: 85 | buildkitd-config: .github/buildkitd.toml 86 | driver-opts: | 87 | env.http_proxy=${{ env.http_proxy }} 88 | env.https_proxy=${{ env.http_proxy }} 89 | "env.no_proxy='${{ env.no_proxy}}'" 90 | - name: Login to DockerHub 91 | uses: docker/login-action@v3.4.0 92 | with: 93 | username: ${{ secrets.DOCKER_HUB_USERNAME }} 94 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 95 | - name: Login to Quay.io 96 | uses: docker/login-action@v3.4.0 97 | with: 98 | registry: quay.io 99 | username: ${{ secrets.QUAY_USERNAME }} 100 | password: ${{ secrets.QUAY_ROBOT_TOKEN }} 101 | - name: Login to GitHub Container Registry 102 | uses: docker/login-action@v3.4.0 103 | with: 104 | registry: ghcr.io 105 | username: ${{ github.repository_owner }} 106 | password: ${{ secrets.GITHUB_TOKEN }} 107 | - name: Docker meta 108 | id: meta 109 | uses: docker/metadata-action@v5.7.0 110 | with: 111 | images: | 112 | name=snowdreamtech/frps,enable=true 113 | name=ghcr.io/snowdreamtech/frps,enable=true 114 | name=quay.io/snowdreamtech/frps,enable=true 115 | flavor: | 116 | latest=false 117 | prefix= 118 | suffix= 119 | tags: | 120 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=,event=branch 121 | type=edge,enable=true,priority=700,prefix=,suffix=,branch=dev 122 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=latest 123 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=latest 124 | type=schedule,enable=true,priority=1000,prefix=,suffix=,pattern=nightly 125 | type=match,enable=true,priority=800,prefix=,suffix=,pattern=\d+.\d+.\d+,group=0,value= 126 | type=match,enable=true,priority=800,prefix=,suffix=,pattern=\d+.\d+,group=0,value= 127 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=,pattern=\d+,group=0,value= 128 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-alpine,event=branch 129 | type=edge,enable=true,priority=700,prefix=,suffix=-alpine,branch=dev 130 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=alpine 131 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=alpine 132 | type=schedule,enable=true,priority=1000,prefix=,suffix=-alpine,pattern=nightly 133 | type=match,enable=true,priority=800,prefix=,suffix=-alpine,pattern=\d+.\d+.\d+,group=0,value= 134 | type=match,enable=true,priority=800,prefix=,suffix=-alpine,pattern=\d+.\d+,group=0,value= 135 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=-alpine,pattern=\d+,group=0,value= 136 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-alpine3.21,event=branch 137 | type=edge,enable=true,priority=700,prefix=,suffix=-alpine3.21,branch=dev 138 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=alpine3.21 139 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=alpine3.21 140 | type=schedule,enable=true,priority=1000,prefix=,suffix=-alpine3.21,pattern=nightly 141 | type=match,enable=true,priority=800,prefix=,suffix=-alpine3.21,pattern=\d+.\d+.\d+,group=0,value= 142 | type=match,enable=true,priority=800,prefix=,suffix=-alpine3.21,pattern=\d+.\d+,group=0,value= 143 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/alpine-0.') && !startsWith(github.ref, 'refs/tags/alpine-v0.') && !startsWith(github.ref, 'refs/tags/alpine-V0.') }},priority=800,prefix=,suffix=-alpine3.21,pattern=\d+,group=0,value= 144 | env: 145 | DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index 146 | - name: Build and push 147 | uses: docker/build-push-action@v6.18.0 148 | with: 149 | context: alpine/frps 150 | build-args: | 151 | "http_proxy=${{ env.http_proxy }}" 152 | "https_proxy=${{ env.http_proxy }}" 153 | BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} 154 | VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} 155 | REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} 156 | platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/riscv64,linux/s390x 157 | push: ${{ github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/heads/feat/') && !startsWith(github.ref, 'refs/heads/feature/') && !startsWith(github.ref, 'refs/heads/fix/') && !startsWith(github.ref, 'refs/heads/pr/') }} 158 | tags: ${{ steps.meta.outputs.tags }} 159 | labels: ${{ steps.meta.outputs.labels }} 160 | annotations: ${{ steps.meta.outputs.annotations }} 161 | cache-from: type=gha 162 | cache-to: type=gha,mode=max 163 | -------------------------------------------------------------------------------- /.github/workflows/cache.yml: -------------------------------------------------------------------------------- 1 | name: Github Cache Cleanup 2 | 3 | on: 4 | schedule: 5 | # Automatically run on every Day 6 | - cron: "0 16 * * 0" 7 | workflow_dispatch: 8 | 9 | jobs: 10 | cleanup: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Cleanup 14 | run: | 15 | gh extension install actions/gh-actions-cache 16 | 17 | echo "Fetching list of cache key" 18 | cacheKeys=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 --sort created-at --order desc | cut -f 1 ) 19 | 20 | ## Setting this to not fail the workflow while deleting cache keys. 21 | set +e 22 | echo "Deleting caches..." 23 | for cacheKey in $cacheKeys 24 | do 25 | gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm 26 | done 27 | echo "Done" 28 | env: 29 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | REPO: ${{ github.repository }} 31 | BRANCH: ${{ github.ref }} -------------------------------------------------------------------------------- /.github/workflows/debian-frpc.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Continuous Delivery (Debian Frpc) 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | - "dev" 8 | - "feat/**" 9 | - "feature/**" 10 | - "fix/**" 11 | - "pr/**" 12 | tags: 13 | - "[0-9]+.[0-9]+.[0-9]+" 14 | - "v[0-9]+.[0-9]+.[0-9]+" 15 | - "V[0-9]+.[0-9]+.[0-9]+" 16 | - "debian-[0-9]+.[0-9]+.[0-9]+" 17 | - "[0-9]+.[0-9]+" 18 | - "v[0-9]+.[0-9]+" 19 | - "V[0-9]+.[0-9]+" 20 | - "debian-[0-9]+.[0-9]+" 21 | - "[0-9]+" 22 | - "v[0-9]+" 23 | - "V[0-9]+" 24 | - "debian-[0-9]+" 25 | pull_request: 26 | branches: 27 | - "main" 28 | - "dev" 29 | - "feat/**" 30 | - "feature/**" 31 | - "fix/**" 32 | - "pr/**" 33 | schedule: 34 | # Automatically run on every Day 35 | - cron: "38 16 * * *" 36 | workflow_dispatch: 37 | 38 | jobs: 39 | buildx: 40 | runs-on: ubuntu-latest 41 | steps: 42 | # - name: Bypass Cloudflare for Github Action Pro 43 | # uses: snowdreamtech/bypass-cloudflare-for-github-action@v0.0.4 44 | # with: 45 | # mode: 'list' 46 | # cf_account_id: ${{ secrets.CF_ACCOUNT_ID }} 47 | # cf_api_token: ${{ secrets.CF_API_TOKEN }} 48 | # cf_zone_id: ${{ secrets.CF_ZONE_ID }} 49 | # github_api_token: ${{ secrets.GITHUB_TOKEN }} 50 | - name: Free Disk Space (Ubuntu) 51 | uses: jlumbroso/free-disk-space@v1.3.1 52 | with: 53 | # this might remove tools that are actually needed, 54 | # if set to "true" but frees about 6 GB 55 | tool-cache: false 56 | 57 | # all of these default to true, but feel free to set to 58 | # "false" if necessary for your workflow 59 | android: true 60 | dotnet: true 61 | haskell: true 62 | large-packages: true 63 | docker-images: false 64 | swap-storage: false 65 | - name: Checkout 66 | uses: actions/checkout@v4.2.2 67 | with: 68 | # [Required] Access token with `workflow` scope. 69 | token: ${{ secrets.WORKFLOW_SECRET }} 70 | - name: Set env variables 71 | run: | 72 | echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV 73 | echo "http_proxy=${http_proxy}" >> $GITHUB_ENV 74 | echo "no_proxy=${no_proxy}" >> $GITHUB_ENV 75 | - # Add support for more platforms with QEMU (optional) 76 | # https://github.com/docker/setup-qemu-action 77 | name: Set up QEMU 78 | uses: docker/setup-qemu-action@v3.6.0 79 | - # https://github.com/docker/setup-buildx-action/issues/57#issuecomment-1059657292 80 | # https://github.com/docker/buildx/issues/136#issuecomment-550205439 81 | # docker buildx create --driver-opt env.http_proxy=$http_proxy --driver-opt env.https_proxy=$https_proxy --driver-opt '"env.no_proxy='$no_proxy'"' 82 | name: Set up Docker Buildx 83 | uses: docker/setup-buildx-action@v3.10.0 84 | with: 85 | buildkitd-config: .github/buildkitd.toml 86 | driver-opts: | 87 | env.http_proxy=${{ env.http_proxy }} 88 | env.https_proxy=${{ env.http_proxy }} 89 | "env.no_proxy='${{ env.no_proxy}}'" 90 | - name: Login to DockerHub 91 | uses: docker/login-action@v3.4.0 92 | with: 93 | username: ${{ secrets.DOCKER_HUB_USERNAME }} 94 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 95 | - name: Login to Quay.io 96 | uses: docker/login-action@v3.4.0 97 | with: 98 | registry: quay.io 99 | username: ${{ secrets.QUAY_USERNAME }} 100 | password: ${{ secrets.QUAY_ROBOT_TOKEN }} 101 | - name: Login to GitHub Container Registry 102 | uses: docker/login-action@v3.4.0 103 | with: 104 | registry: ghcr.io 105 | username: ${{ github.repository_owner }} 106 | password: ${{ secrets.GITHUB_TOKEN }} 107 | - name: Docker meta 108 | id: meta 109 | uses: docker/metadata-action@v5.7.0 110 | with: 111 | images: | 112 | name=snowdreamtech/frpc,enable=true 113 | name=ghcr.io/snowdreamtech/frpc,enable=true 114 | name=quay.io/snowdreamtech/frpc,enable=true 115 | flavor: | 116 | latest=false 117 | prefix= 118 | suffix= 119 | tags: | 120 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-debian,event=branch 121 | type=edge,enable=true,priority=700,prefix=,suffix=-debian,branch=dev 122 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=debian 123 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=debian 124 | type=schedule,enable=true,priority=1000,prefix=,suffix=-debian,pattern=nightly 125 | type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+.\d+,group=0,value= 126 | type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+,group=0,value= 127 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-debian,pattern=\d+,group=0,value= 128 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-bookworm,event=branch 129 | type=edge,enable=true,priority=700,prefix=,suffix=-bookworm,branch=dev 130 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=bookworm 131 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=bookworm 132 | type=schedule,enable=true,priority=1000,prefix=,suffix=-bookworm,pattern=nightly 133 | type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+.\d+,group=0,value= 134 | type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+,group=0,value= 135 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-bookworm,pattern=\d+,group=0,value= 136 | env: 137 | DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index 138 | - name: Build and push 139 | uses: docker/build-push-action@v6.18.0 140 | with: 141 | context: debian/frpc 142 | build-args: | 143 | "http_proxy=${{ env.http_proxy }}" 144 | "https_proxy=${{ env.http_proxy }}" 145 | BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} 146 | VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} 147 | REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} 148 | platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x 149 | # platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x 150 | push: ${{ github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/heads/feat/') && !startsWith(github.ref, 'refs/heads/feature/') && !startsWith(github.ref, 'refs/heads/fix/') && !startsWith(github.ref, 'refs/heads/pr/') }} 151 | tags: ${{ steps.meta.outputs.tags }} 152 | labels: ${{ steps.meta.outputs.labels }} 153 | annotations: ${{ steps.meta.outputs.annotations }} 154 | cache-from: type=gha 155 | cache-to: type=gha,mode=max 156 | -------------------------------------------------------------------------------- /.github/workflows/debian-frps.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Continuous Delivery (Debian Frps) 2 | 3 | on: 4 | push: 5 | branches: 6 | - "main" 7 | - "dev" 8 | - "feat/**" 9 | - "feature/**" 10 | - "fix/**" 11 | - "pr/**" 12 | tags: 13 | - "[0-9]+.[0-9]+.[0-9]+" 14 | - "v[0-9]+.[0-9]+.[0-9]+" 15 | - "V[0-9]+.[0-9]+.[0-9]+" 16 | - "debian-[0-9]+.[0-9]+.[0-9]+" 17 | - "[0-9]+.[0-9]+" 18 | - "v[0-9]+.[0-9]+" 19 | - "V[0-9]+.[0-9]+" 20 | - "debian-[0-9]+.[0-9]+" 21 | - "[0-9]+" 22 | - "v[0-9]+" 23 | - "V[0-9]+" 24 | - "debian-[0-9]+" 25 | pull_request: 26 | branches: 27 | - "main" 28 | - "dev" 29 | - "feat/**" 30 | - "feature/**" 31 | - "fix/**" 32 | - "pr/**" 33 | schedule: 34 | # Automatically run on every Day 35 | - cron: "38 16 * * *" 36 | workflow_dispatch: 37 | 38 | jobs: 39 | buildx: 40 | runs-on: ubuntu-latest 41 | steps: 42 | # - name: Bypass Cloudflare for Github Action Pro 43 | # uses: snowdreamtech/bypass-cloudflare-for-github-action@v0.0.4 44 | # with: 45 | # mode: 'list' 46 | # cf_account_id: ${{ secrets.CF_ACCOUNT_ID }} 47 | # cf_api_token: ${{ secrets.CF_API_TOKEN }} 48 | # cf_zone_id: ${{ secrets.CF_ZONE_ID }} 49 | # github_api_token: ${{ secrets.GITHUB_TOKEN }} 50 | - name: Free Disk Space (Ubuntu) 51 | uses: jlumbroso/free-disk-space@v1.3.1 52 | with: 53 | # this might remove tools that are actually needed, 54 | # if set to "true" but frees about 6 GB 55 | tool-cache: false 56 | 57 | # all of these default to true, but feel free to set to 58 | # "false" if necessary for your workflow 59 | android: true 60 | dotnet: true 61 | haskell: true 62 | large-packages: true 63 | docker-images: false 64 | swap-storage: false 65 | - name: Checkout 66 | uses: actions/checkout@v4.2.2 67 | with: 68 | # [Required] Access token with `workflow` scope. 69 | token: ${{ secrets.WORKFLOW_SECRET }} 70 | - name: Set env variables 71 | run: | 72 | echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV 73 | echo "http_proxy=${http_proxy}" >> $GITHUB_ENV 74 | echo "no_proxy=${no_proxy}" >> $GITHUB_ENV 75 | - # Add support for more platforms with QEMU (optional) 76 | # https://github.com/docker/setup-qemu-action 77 | name: Set up QEMU 78 | uses: docker/setup-qemu-action@v3.6.0 79 | - # https://github.com/docker/setup-buildx-action/issues/57#issuecomment-1059657292 80 | # https://github.com/docker/buildx/issues/136#issuecomment-550205439 81 | # docker buildx create --driver-opt env.http_proxy=$http_proxy --driver-opt env.https_proxy=$https_proxy --driver-opt '"env.no_proxy='$no_proxy'"' 82 | name: Set up Docker Buildx 83 | uses: docker/setup-buildx-action@v3.10.0 84 | with: 85 | buildkitd-config: .github/buildkitd.toml 86 | driver-opts: | 87 | env.http_proxy=${{ env.http_proxy }} 88 | env.https_proxy=${{ env.http_proxy }} 89 | "env.no_proxy='${{ env.no_proxy}}'" 90 | - name: Login to DockerHub 91 | uses: docker/login-action@v3.4.0 92 | with: 93 | username: ${{ secrets.DOCKER_HUB_USERNAME }} 94 | password: ${{ secrets.DOCKER_HUB_TOKEN }} 95 | - name: Login to Quay.io 96 | uses: docker/login-action@v3.4.0 97 | with: 98 | registry: quay.io 99 | username: ${{ secrets.QUAY_USERNAME }} 100 | password: ${{ secrets.QUAY_ROBOT_TOKEN }} 101 | - name: Login to GitHub Container Registry 102 | uses: docker/login-action@v3.4.0 103 | with: 104 | registry: ghcr.io 105 | username: ${{ github.repository_owner }} 106 | password: ${{ secrets.GITHUB_TOKEN }} 107 | - name: Docker meta 108 | id: meta 109 | uses: docker/metadata-action@v5.7.0 110 | with: 111 | images: | 112 | name=snowdreamtech/frps,enable=true 113 | name=ghcr.io/snowdreamtech/frps,enable=true 114 | name=quay.io/snowdreamtech/frps,enable=true 115 | flavor: | 116 | latest=false 117 | prefix= 118 | suffix= 119 | tags: | 120 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-debian,event=branch 121 | type=edge,enable=true,priority=700,prefix=,suffix=-debian,branch=dev 122 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=debian 123 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=debian 124 | type=schedule,enable=true,priority=1000,prefix=,suffix=-debian,pattern=nightly 125 | type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+.\d+,group=0,value= 126 | type=match,enable=true,priority=800,prefix=,suffix=-debian,pattern=\d+.\d+,group=0,value= 127 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-debian,pattern=\d+,group=0,value= 128 | type=ref,enable=${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' && github.event_name != 'schedule' }},priority=600,prefix=,suffix=-bookworm,event=branch 129 | type=edge,enable=true,priority=700,prefix=,suffix=-bookworm,branch=dev 130 | type=raw,enable=${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && github.event_name != 'schedule' }},priority=200,prefix=,suffix=,value=bookworm 131 | type=raw,enable=${{ startsWith(github.ref, 'refs/tags/') }},priority=200,prefix=,suffix=,value=bookworm 132 | type=schedule,enable=true,priority=1000,prefix=,suffix=-bookworm,pattern=nightly 133 | type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+.\d+,group=0,value= 134 | type=match,enable=true,priority=800,prefix=,suffix=-bookworm,pattern=\d+.\d+,group=0,value= 135 | type=match,enable=${{ !startsWith(github.ref, 'refs/tags/0.') && !startsWith(github.ref, 'refs/tags/v0.') && !startsWith(github.ref, 'refs/tags/V0.') && !startsWith(github.ref, 'refs/tags/debian-0.') && !startsWith(github.ref, 'refs/tags/debian-v0.') && !startsWith(github.ref, 'refs/tags/debian-V0.') }},priority=800,prefix=,suffix=-bookworm,pattern=\d+,group=0,value= 136 | env: 137 | DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index 138 | - name: Build and push 139 | uses: docker/build-push-action@v6.18.0 140 | with: 141 | context: debian/frps 142 | build-args: | 143 | "http_proxy=${{ env.http_proxy }}" 144 | "https_proxy=${{ env.http_proxy }}" 145 | BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} 146 | VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} 147 | REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} 148 | platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x 149 | # platforms: linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x 150 | push: ${{ github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/heads/feat/') && !startsWith(github.ref, 'refs/heads/feature/') && !startsWith(github.ref, 'refs/heads/fix/') && !startsWith(github.ref, 'refs/heads/pr/') }} 151 | tags: ${{ steps.meta.outputs.tags }} 152 | labels: ${{ steps.meta.outputs.labels }} 153 | annotations: ${{ steps.meta.outputs.annotations }} 154 | cache-from: type=gha 155 | cache-to: type=gha,mode=max 156 | -------------------------------------------------------------------------------- /.github/workflows/description.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Description Updater 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - README.md 9 | - .github/workflows/description.yml 10 | 11 | jobs: 12 | dockerHubDescription: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v4.2.2 17 | with: 18 | # [Required] Access token with `workflow` scope. 19 | token: ${{ secrets.WORKFLOW_SECRET }} 20 | - name: Docker Hub Description 21 | uses: christian-korneck/update-container-description-action@v1 22 | env: 23 | DOCKER_USER: ${{ secrets.DOCKER_HUB_USERNAME }} 24 | DOCKER_PASS: ${{ secrets.DOCKER_HUB_TOKEN }} 25 | with: 26 | destination_container_repo: snowdreamtech/frpc 27 | provider: dockerhub 28 | short_description: ${{ github.event.repository.description }} 29 | readme_file: "README.md" 30 | - name: Docker Hub Description 31 | uses: christian-korneck/update-container-description-action@v1 32 | env: 33 | DOCKER_USER: ${{ secrets.DOCKER_HUB_USERNAME }} 34 | DOCKER_PASS: ${{ secrets.DOCKER_HUB_TOKEN }} 35 | with: 36 | destination_container_repo: snowdreamtech/frps 37 | provider: dockerhub 38 | short_description: ${{ github.event.repository.description }} 39 | readme_file: "README.md" 40 | - name: Quay.io Description 41 | uses: christian-korneck/update-container-description-action@v1 42 | env: 43 | DOCKER_APIKEY: ${{ secrets.QUAY_API_TOKEN }} 44 | with: 45 | destination_container_repo: quay.io/snowdreamtech/frpc 46 | provider: quay 47 | readme_file: "README.md" 48 | - name: Quay.io Description 49 | uses: christian-korneck/update-container-description-action@v1 50 | env: 51 | DOCKER_APIKEY: ${{ secrets.QUAY_API_TOKEN }} 52 | with: 53 | destination_container_repo: quay.io/snowdreamtech/frps 54 | provider: quay 55 | readme_file: "README.md" -------------------------------------------------------------------------------- /.github/workflows/updater.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Actions Version Updater 2 | 3 | # Controls when the action will run. 4 | on: 5 | push: 6 | branches: 7 | - "main" 8 | - "dev" 9 | - "feat/**" 10 | - "feature/**" 11 | - "fix/**" 12 | - "pr/**" 13 | pull_request: 14 | branches: 15 | - "main" 16 | - "dev" 17 | - "feat/**" 18 | - "feature/**" 19 | - "fix/**" 20 | - "pr/**" 21 | schedule: 22 | # Automatically run on every Day 23 | - cron: "38 16 * * *" 24 | workflow_dispatch: 25 | 26 | jobs: 27 | build: 28 | runs-on: ubuntu-latest 29 | 30 | steps: 31 | - name: Checkout 32 | uses: actions/checkout@v4.2.2 33 | with: 34 | # [Required] Access token with `workflow` scope. 35 | token: ${{ secrets.WORKFLOW_SECRET }} 36 | - name: Run GitHub Actions Version Updater 37 | uses: saadmk11/github-actions-version-updater@v0.8.1 38 | with: 39 | # [Required] Access token with `workflow` scope. 40 | token: ${{ secrets.WORKFLOW_SECRET }} 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/linux,macos,windows,webstorm,visualstudiocode 3 | # Edit at https://www.gitignore.io/?templates=linux,macos,windows,webstorm,visualstudiocode 4 | 5 | ### Linux ### 6 | *~ 7 | 8 | # temporary files which can be created if a process still has a handle open of a deleted file 9 | .fuse_hidden* 10 | 11 | # KDE directory preferences 12 | .directory 13 | 14 | # Linux trash folder which might appear on any partition or disk 15 | .Trash-* 16 | 17 | # .nfs files are created when an open file is removed but is still being accessed 18 | .nfs* 19 | 20 | ### macOS ### 21 | # General 22 | .DS_Store 23 | .AppleDouble 24 | .LSOverride 25 | 26 | # Icon must end with two \r 27 | Icon 28 | 29 | # Thumbnails 30 | ._* 31 | 32 | # Files that might appear in the root of a volume 33 | .DocumentRevisions-V100 34 | .fseventsd 35 | .Spotlight-V100 36 | .TemporaryItems 37 | .Trashes 38 | .VolumeIcon.icns 39 | .com.apple.timemachine.donotpresent 40 | 41 | # Directories potentially created on remote AFP share 42 | .AppleDB 43 | .AppleDesktop 44 | Network Trash Folder 45 | Temporary Items 46 | .apdisk 47 | 48 | ### VisualStudioCode ### 49 | .vscode/* 50 | !.vscode/settings.json 51 | !.vscode/tasks.json 52 | !.vscode/launch.json 53 | !.vscode/extensions.json 54 | 55 | ### VisualStudioCode Patch ### 56 | # Ignore all local history of files 57 | .history 58 | 59 | ### WebStorm ### 60 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 61 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 62 | 63 | # User-specific stuff 64 | .idea/**/workspace.xml 65 | .idea/**/tasks.xml 66 | .idea/**/usage.statistics.xml 67 | .idea/**/dictionaries 68 | .idea/**/shelf 69 | 70 | # Generated files 71 | .idea/**/contentModel.xml 72 | 73 | # Sensitive or high-churn files 74 | .idea/**/dataSources/ 75 | .idea/**/dataSources.ids 76 | .idea/**/dataSources.local.xml 77 | .idea/**/sqlDataSources.xml 78 | .idea/**/dynamic.xml 79 | .idea/**/uiDesigner.xml 80 | .idea/**/dbnavigator.xml 81 | 82 | # Gradle 83 | .idea/**/gradle.xml 84 | .idea/**/libraries 85 | 86 | # Gradle and Maven with auto-import 87 | # When using Gradle or Maven with auto-import, you should exclude module files, 88 | # since they will be recreated, and may cause churn. Uncomment if using 89 | # auto-import. 90 | # .idea/modules.xml 91 | # .idea/*.iml 92 | # .idea/modules 93 | # *.iml 94 | # *.ipr 95 | 96 | # CMake 97 | cmake-build-*/ 98 | 99 | # Mongo Explorer plugin 100 | .idea/**/mongoSettings.xml 101 | 102 | # File-based project format 103 | *.iws 104 | 105 | # IntelliJ 106 | out/ 107 | 108 | # mpeltonen/sbt-idea plugin 109 | .idea_modules/ 110 | 111 | # JIRA plugin 112 | atlassian-ide-plugin.xml 113 | 114 | # Cursive Clojure plugin 115 | .idea/replstate.xml 116 | 117 | # Crashlytics plugin (for Android Studio and IntelliJ) 118 | com_crashlytics_export_strings.xml 119 | crashlytics.properties 120 | crashlytics-build.properties 121 | fabric.properties 122 | 123 | # Editor-based Rest Client 124 | .idea/httpRequests 125 | 126 | # Android studio 3.1+ serialized cache file 127 | .idea/caches/build_file_checksums.ser 128 | 129 | ### WebStorm Patch ### 130 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 131 | 132 | # *.iml 133 | # modules.xml 134 | # .idea/misc.xml 135 | # *.ipr 136 | 137 | # Sonarlint plugin 138 | .idea/sonarlint 139 | 140 | ### Windows ### 141 | # Windows thumbnail cache files 142 | Thumbs.db 143 | Thumbs.db:encryptable 144 | ehthumbs.db 145 | ehthumbs_vista.db 146 | 147 | # Dump file 148 | *.stackdump 149 | 150 | # Folder config file 151 | [Dd]esktop.ini 152 | 153 | # Recycle Bin used on file shares 154 | $RECYCLE.BIN/ 155 | 156 | # Windows Installer files 157 | *.cab 158 | *.msi 159 | *.msix 160 | *.msm 161 | *.msp 162 | 163 | # Windows shortcuts 164 | *.lnk 165 | 166 | # End of https://www.gitignore.io/api/linux,macos,windows,webstorm,visualstudiocode -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-azuretools.vscode-docker", 4 | "mhutchie.git-graph", 5 | "redhat.vscode-yaml", 6 | "be5invis.toml", 7 | "iceyer.toml-formatter", 8 | "davidanson.vscode-markdownlint", 9 | "shd101wyy.markdown-preview-enhanced", 10 | "ms-vscode-remote.remote-ssh", 11 | "ms-vscode-remote.remote-ssh-edit", 12 | "ms-vscode.remote-explorer", 13 | "timonwong.shellcheck", 14 | "foxundermoon.shell-format", 15 | "ms-ceintl.vscode-language-pack-zh-hans", 16 | "github.vscode-github-actions", 17 | "ultram4rine.vscode-choosealicense", 18 | "minherz.copyright-inserter", 19 | "wdhongtw.gpg-indicator" 20 | ] 21 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2024-present SnowdreamTech Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # frp 2 | 3 | [![dockeri.co](https://dockerico.blankenship.io/image/snowdreamtech/frps)](https://hub.docker.com/r/snowdreamtech/frps) 4 | [![dockeri.co](https://dockerico.blankenship.io/image/snowdreamtech/frpc)](https://hub.docker.com/r/snowdreamtech/frpc) 5 | 6 | Docker Images for Frp Based on Alpine and Debian. 7 | 8 | (amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386, mips64le, ppc64le,riscv64, s390x) 9 | 10 | ### [Documentation](https://gofrp.org/en/) 11 | ### [中文文档](https://gofrp.org/zh-cn/docs/) 12 | 13 | ## Usage 14 | 15 | ### Basic 16 | 17 | ```bash 18 | docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps 19 | docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc 20 | ``` 21 | 22 | ### Alpine 23 | 24 | ```bash 25 | docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps:alpine 26 | docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc:alpine 27 | ``` 28 | 29 | ### Debian 30 | 31 | ```bash 32 | docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps:debian 33 | docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc:debian 34 | ``` 35 | 36 | ```bash 37 | docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps:bookworm 38 | docker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc:bookworm 39 | ``` 40 | 41 | ## Quick reference 42 | 43 | * Where to file issues: 44 | 45 | [https://github.com/snowdreamtech/frp/issues](https://github.com/snowdreamtech/frp/issues) 46 | 47 | * Where to join discussions: 48 | 49 | [https://github.com/snowdreamtech/frp/discussions](https://github.com/snowdreamtech/frp/discussions) 50 | 51 | * Maintained by: 52 | 53 | snowdream 54 | 55 | * Supported architectures: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) 56 | 57 | Alpine (linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/riscv64,linux/s390x) 58 | 59 | Debian (linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x) 60 | 61 | * Supported Tags: 62 | 63 | Alpine: 64 | 65 | - latest 66 | - 0.62-alpine3.21 67 | - 0.62.1-alpine3.21 68 | - 0.62-alpine 69 | - 0.62.1-alpine 70 | - alpine3.21 71 | - alpine 72 | - 0.62 73 | - 0.62.1 74 | 75 | Debian: 76 | 77 | - bookworm 78 | - debian 79 | - 0.62-bookworm 80 | - 0.62.1-bookworm 81 | - 0.62-debian 82 | - 0.62.1-debian 83 | 84 | ## Ads 85 | 86 | 1. [腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=d09c5e921f9fcf4ac9516564262f3b99&from=console) 87 | 1. [阿里云](https://www.aliyun.com/minisite/goods?userCode=dbgo15cy) 88 | 1. [华为云](https://activity.huaweicloud.com/cps.html?fromacct=7766b6ea-375c-416d-9ca5-bdbef333b645&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905) 89 | 1. [Bandwagonhost/搬瓦工](https://bandwagonhost.com/aff.php?aff=41583) 90 | 1. [Vultr](https://www.vultr.com/?ref=7265819) 91 | 92 | ## Contact (备注:frp) 93 | 94 | * Email: sn0wdr1am@qq.com 95 | * QQ: 3217680847 96 | * QQ群: 949022145 97 | * WeChat/微信群: sn0wdr1am 98 | 99 | ## Website 100 | 101 | 1. [fatedier/frp](https://github.com/fatedier/frp) 102 | 1. [snowdreamtech/frp](https://github.com/snowdreamtech/frp) 103 | 1. [frpc images on Github](https://github.com/snowdreamtech/frp/pkgs/container/frpc) 104 | 1. [frps images on Github](https://github.com/snowdreamtech/frp/pkgs/container/frps) 105 | 1. [frpc images on Docker Hub ](https://hub.docker.com/r/snowdreamtech/frpc) 106 | 1. [frps images on Docker Hub ](https://hub.docker.com/r/snowdreamtech/frps) 107 | 108 | ## License 109 | 110 | MIT 111 | 112 | ## Star History 113 | 114 | [![Star History Chart](https://api.star-history.com/svg?repos=snowdreamtech/frp&type=Date)](https://star-history.com/#snowdreamtech/frp&Date) 115 | -------------------------------------------------------------------------------- /alpine/frpc/.dockerignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 3 | 4 | Dockerfile 5 | build.sh 6 | README.md 7 | LICENSE 8 | .github 9 | 10 | ### Emacs ### 11 | # -*- mode: gitignore; -*- 12 | *~ 13 | \#*\# 14 | /.emacs.desktop 15 | /.emacs.desktop.lock 16 | *.elc 17 | auto-save-list 18 | tramp 19 | .\#* 20 | 21 | # Org-mode 22 | .org-id-locations 23 | *_archive 24 | 25 | # flymake-mode 26 | *_flymake.* 27 | 28 | # eshell files 29 | /eshell/history 30 | /eshell/lastdir 31 | 32 | # elpa packages 33 | /elpa/ 34 | 35 | # reftex files 36 | *.rel 37 | 38 | # AUCTeX auto folder 39 | /auto/ 40 | 41 | # cask packages 42 | .cask/ 43 | dist/ 44 | 45 | # Flycheck 46 | flycheck_*.el 47 | 48 | # server auth directory 49 | /server/ 50 | 51 | # projectiles files 52 | .projectile 53 | 54 | # directory configuration 55 | .dir-locals.el 56 | 57 | # network security 58 | /network-security.data 59 | 60 | 61 | ### Git ### 62 | # Created by git for backups. To disable backups in Git: 63 | # $ git config --global mergetool.keepBackup false 64 | *.orig 65 | 66 | # Created by git when using merge tools for conflicts 67 | *.BACKUP.* 68 | *.BASE.* 69 | *.LOCAL.* 70 | *.REMOTE.* 71 | *_BACKUP_*.txt 72 | *_BASE_*.txt 73 | *_LOCAL_*.txt 74 | *_REMOTE_*.txt 75 | 76 | ### JetBrains+all ### 77 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 78 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 79 | 80 | # User-specific stuff 81 | .idea/**/workspace.xml 82 | .idea/**/tasks.xml 83 | .idea/**/usage.statistics.xml 84 | .idea/**/dictionaries 85 | .idea/**/shelf 86 | 87 | # AWS User-specific 88 | .idea/**/aws.xml 89 | 90 | # Generated files 91 | .idea/**/contentModel.xml 92 | 93 | # Sensitive or high-churn files 94 | .idea/**/dataSources/ 95 | .idea/**/dataSources.ids 96 | .idea/**/dataSources.local.xml 97 | .idea/**/sqlDataSources.xml 98 | .idea/**/dynamic.xml 99 | .idea/**/uiDesigner.xml 100 | .idea/**/dbnavigator.xml 101 | 102 | # Gradle 103 | .idea/**/gradle.xml 104 | .idea/**/libraries 105 | 106 | # Gradle and Maven with auto-import 107 | # When using Gradle or Maven with auto-import, you should exclude module files, 108 | # since they will be recreated, and may cause churn. Uncomment if using 109 | # auto-import. 110 | # .idea/artifacts 111 | # .idea/compiler.xml 112 | # .idea/jarRepositories.xml 113 | # .idea/modules.xml 114 | # .idea/*.iml 115 | # .idea/modules 116 | # *.iml 117 | # *.ipr 118 | 119 | # CMake 120 | cmake-build-*/ 121 | 122 | # Mongo Explorer plugin 123 | .idea/**/mongoSettings.xml 124 | 125 | # File-based project format 126 | *.iws 127 | 128 | # IntelliJ 129 | out/ 130 | 131 | # mpeltonen/sbt-idea plugin 132 | .idea_modules/ 133 | 134 | # JIRA plugin 135 | atlassian-ide-plugin.xml 136 | 137 | # Cursive Clojure plugin 138 | .idea/replstate.xml 139 | 140 | # SonarLint plugin 141 | .idea/sonarlint/ 142 | 143 | # Crashlytics plugin (for Android Studio and IntelliJ) 144 | com_crashlytics_export_strings.xml 145 | crashlytics.properties 146 | crashlytics-build.properties 147 | fabric.properties 148 | 149 | # Editor-based Rest Client 150 | .idea/httpRequests 151 | 152 | # Android studio 3.1+ serialized cache file 153 | .idea/caches/build_file_checksums.ser 154 | 155 | ### JetBrains+all Patch ### 156 | # Ignore everything but code style settings and run configurations 157 | # that are supposed to be shared within teams. 158 | 159 | .idea/* 160 | 161 | !.idea/codeStyles 162 | !.idea/runConfigurations 163 | 164 | ### Linux ### 165 | 166 | # temporary files which can be created if a process still has a handle open of a deleted file 167 | .fuse_hidden* 168 | 169 | # KDE directory preferences 170 | .directory 171 | 172 | # Linux trash folder which might appear on any partition or disk 173 | .Trash-* 174 | 175 | # .nfs files are created when an open file is removed but is still being accessed 176 | .nfs* 177 | 178 | ### macOS ### 179 | # General 180 | .DS_Store 181 | .AppleDouble 182 | .LSOverride 183 | 184 | # Icon must end with two \r 185 | Icon 186 | 187 | 188 | # Thumbnails 189 | ._* 190 | 191 | # Files that might appear in the root of a volume 192 | .DocumentRevisions-V100 193 | .fseventsd 194 | .Spotlight-V100 195 | .TemporaryItems 196 | .Trashes 197 | .VolumeIcon.icns 198 | .com.apple.timemachine.donotpresent 199 | 200 | # Directories potentially created on remote AFP share 201 | .AppleDB 202 | .AppleDesktop 203 | Network Trash Folder 204 | Temporary Items 205 | .apdisk 206 | 207 | ### macOS Patch ### 208 | # iCloud generated files 209 | *.icloud 210 | 211 | ### Mercurial ### 212 | .hg/ 213 | .hgignore 214 | .hgsigs 215 | .hgsub 216 | .hgsubstate 217 | .hgtags 218 | 219 | ### SVN ### 220 | .svn/ 221 | 222 | ### Vim ### 223 | # Swap 224 | [._]*.s[a-v][a-z] 225 | !*.svg # comment out if you don't need vector files 226 | [._]*.sw[a-p] 227 | [._]s[a-rt-v][a-z] 228 | [._]ss[a-gi-z] 229 | [._]sw[a-p] 230 | 231 | # Session 232 | Session.vim 233 | Sessionx.vim 234 | 235 | # Temporary 236 | .netrwhist 237 | # Auto-generated tag files 238 | tags 239 | # Persistent undo 240 | [._]*.un~ 241 | 242 | ### VisualStudioCode ### 243 | .vscode/* 244 | !.vscode/settings.json 245 | !.vscode/tasks.json 246 | !.vscode/launch.json 247 | !.vscode/extensions.json 248 | !.vscode/*.code-snippets 249 | 250 | # Local History for Visual Studio Code 251 | .history/ 252 | 253 | # Built Visual Studio Code Extensions 254 | *.vsix 255 | 256 | ### VisualStudioCode Patch ### 257 | # Ignore all local history of files 258 | .history 259 | .ionide 260 | 261 | ### Windows ### 262 | # Windows thumbnail cache files 263 | Thumbs.db 264 | Thumbs.db:encryptable 265 | ehthumbs.db 266 | ehthumbs_vista.db 267 | 268 | # Dump file 269 | *.stackdump 270 | 271 | # Folder config file 272 | [Dd]esktop.ini 273 | 274 | # Recycle Bin used on file shares 275 | $RECYCLE.BIN/ 276 | 277 | # Windows Installer files 278 | *.cab 279 | *.msi 280 | *.msix 281 | *.msm 282 | *.msp 283 | 284 | # Windows shortcuts 285 | *.lnk 286 | 287 | ### VisualStudio ### 288 | ## Ignore Visual Studio temporary files, build results, and 289 | ## files generated by popular Visual Studio add-ons. 290 | ## 291 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 292 | 293 | # User-specific files 294 | *.rsuser 295 | *.suo 296 | *.user 297 | *.userosscache 298 | *.sln.docstates 299 | 300 | # User-specific files (MonoDevelop/Xamarin Studio) 301 | *.userprefs 302 | 303 | # Mono auto generated files 304 | mono_crash.* 305 | 306 | # Build results 307 | [Dd]ebug/ 308 | [Dd]ebugPublic/ 309 | [Rr]elease/ 310 | [Rr]eleases/ 311 | x64/ 312 | x86/ 313 | [Ww][Ii][Nn]32/ 314 | [Aa][Rr][Mm]/ 315 | [Aa][Rr][Mm]64/ 316 | bld/ 317 | [Bb]in/ 318 | [Oo]bj/ 319 | [Ll]og/ 320 | [Ll]ogs/ 321 | 322 | # Visual Studio 2015/2017 cache/options directory 323 | .vs/ 324 | # Uncomment if you have tasks that create the project's static files in wwwroot 325 | #wwwroot/ 326 | 327 | # Visual Studio 2017 auto generated files 328 | Generated\ Files/ 329 | 330 | # MSTest test Results 331 | [Tt]est[Rr]esult*/ 332 | [Bb]uild[Ll]og.* 333 | 334 | # NUnit 335 | *.VisualState.xml 336 | TestResult.xml 337 | nunit-*.xml 338 | 339 | # Build Results of an ATL Project 340 | [Dd]ebugPS/ 341 | [Rr]eleasePS/ 342 | dlldata.c 343 | 344 | # Benchmark Results 345 | BenchmarkDotNet.Artifacts/ 346 | 347 | # .NET Core 348 | project.lock.json 349 | project.fragment.lock.json 350 | artifacts/ 351 | 352 | # ASP.NET Scaffolding 353 | ScaffoldingReadMe.txt 354 | 355 | # StyleCop 356 | StyleCopReport.xml 357 | 358 | # Files built by Visual Studio 359 | *_i.c 360 | *_p.c 361 | *_h.h 362 | *.ilk 363 | *.meta 364 | *.obj 365 | *.iobj 366 | *.pch 367 | *.pdb 368 | *.ipdb 369 | *.pgc 370 | *.pgd 371 | *.rsp 372 | *.sbr 373 | *.tlb 374 | *.tli 375 | *.tlh 376 | *.tmp 377 | *.tmp_proj 378 | *_wpftmp.csproj 379 | *.log 380 | *.tlog 381 | *.vspscc 382 | *.vssscc 383 | .builds 384 | *.pidb 385 | *.svclog 386 | *.scc 387 | 388 | # Chutzpah Test files 389 | _Chutzpah* 390 | 391 | # Visual C++ cache files 392 | ipch/ 393 | *.aps 394 | *.ncb 395 | *.opendb 396 | *.opensdf 397 | *.sdf 398 | *.cachefile 399 | *.VC.db 400 | *.VC.VC.opendb 401 | 402 | # Visual Studio profiler 403 | *.psess 404 | *.vsp 405 | *.vspx 406 | *.sap 407 | 408 | # Visual Studio Trace Files 409 | *.e2e 410 | 411 | # TFS 2012 Local Workspace 412 | $tf/ 413 | 414 | # Guidance Automation Toolkit 415 | *.gpState 416 | 417 | # ReSharper is a .NET coding add-in 418 | _ReSharper*/ 419 | *.[Rr]e[Ss]harper 420 | *.DotSettings.user 421 | 422 | # TeamCity is a build add-in 423 | _TeamCity* 424 | 425 | # DotCover is a Code Coverage Tool 426 | *.dotCover 427 | 428 | # AxoCover is a Code Coverage Tool 429 | .axoCover/* 430 | !.axoCover/settings.json 431 | 432 | # Coverlet is a free, cross platform Code Coverage Tool 433 | coverage*.json 434 | coverage*.xml 435 | coverage*.info 436 | 437 | # Visual Studio code coverage results 438 | *.coverage 439 | *.coveragexml 440 | 441 | # NCrunch 442 | _NCrunch_* 443 | .*crunch*.local.xml 444 | nCrunchTemp_* 445 | 446 | # MightyMoose 447 | *.mm.* 448 | AutoTest.Net/ 449 | 450 | # Web workbench (sass) 451 | .sass-cache/ 452 | 453 | # Installshield output folder 454 | [Ee]xpress/ 455 | 456 | # DocProject is a documentation generator add-in 457 | DocProject/buildhelp/ 458 | DocProject/Help/*.HxT 459 | DocProject/Help/*.HxC 460 | DocProject/Help/*.hhc 461 | DocProject/Help/*.hhk 462 | DocProject/Help/*.hhp 463 | DocProject/Help/Html2 464 | DocProject/Help/html 465 | 466 | # Click-Once directory 467 | publish/ 468 | 469 | # Publish Web Output 470 | *.[Pp]ublish.xml 471 | *.azurePubxml 472 | # Note: Comment the next line if you want to checkin your web deploy settings, 473 | # but database connection strings (with potential passwords) will be unencrypted 474 | *.pubxml 475 | *.publishproj 476 | 477 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 478 | # checkin your Azure Web App publish settings, but sensitive information contained 479 | # in these scripts will be unencrypted 480 | PublishScripts/ 481 | 482 | # NuGet Packages 483 | *.nupkg 484 | # NuGet Symbol Packages 485 | *.snupkg 486 | # The packages folder can be ignored because of Package Restore 487 | **/[Pp]ackages/* 488 | # except build/, which is used as an MSBuild target. 489 | !**/[Pp]ackages/build/ 490 | # Uncomment if necessary however generally it will be regenerated when needed 491 | #!**/[Pp]ackages/repositories.config 492 | # NuGet v3's project.json files produces more ignorable files 493 | *.nuget.props 494 | *.nuget.targets 495 | 496 | # Microsoft Azure Build Output 497 | csx/ 498 | *.build.csdef 499 | 500 | # Microsoft Azure Emulator 501 | ecf/ 502 | rcf/ 503 | 504 | # Windows Store app package directories and files 505 | AppPackages/ 506 | BundleArtifacts/ 507 | Package.StoreAssociation.xml 508 | _pkginfo.txt 509 | *.appx 510 | *.appxbundle 511 | *.appxupload 512 | 513 | # Visual Studio cache files 514 | # files ending in .cache can be ignored 515 | *.[Cc]ache 516 | # but keep track of directories ending in .cache 517 | !?*.[Cc]ache/ 518 | 519 | # Others 520 | ClientBin/ 521 | ~$* 522 | *.dbmdl 523 | *.dbproj.schemaview 524 | *.jfm 525 | *.pfx 526 | *.publishsettings 527 | orleans.codegen.cs 528 | 529 | # Including strong name files can present a security risk 530 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 531 | #*.snk 532 | 533 | # Since there are multiple workflows, uncomment next line to ignore bower_components 534 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 535 | #bower_components/ 536 | 537 | # RIA/Silverlight projects 538 | Generated_Code/ 539 | 540 | # Backup & report files from converting an old project file 541 | # to a newer Visual Studio version. Backup files are not needed, 542 | # because we have git ;-) 543 | _UpgradeReport_Files/ 544 | Backup*/ 545 | UpgradeLog*.XML 546 | UpgradeLog*.htm 547 | ServiceFabricBackup/ 548 | *.rptproj.bak 549 | 550 | # SQL Server files 551 | *.mdf 552 | *.ldf 553 | *.ndf 554 | 555 | # Business Intelligence projects 556 | *.rdl.data 557 | *.bim.layout 558 | *.bim_*.settings 559 | *.rptproj.rsuser 560 | *- [Bb]ackup.rdl 561 | *- [Bb]ackup ([0-9]).rdl 562 | *- [Bb]ackup ([0-9][0-9]).rdl 563 | 564 | # Microsoft Fakes 565 | FakesAssemblies/ 566 | 567 | # GhostDoc plugin setting file 568 | *.GhostDoc.xml 569 | 570 | # Node.js Tools for Visual Studio 571 | .ntvs_analysis.dat 572 | node_modules/ 573 | 574 | # Visual Studio 6 build log 575 | *.plg 576 | 577 | # Visual Studio 6 workspace options file 578 | *.opt 579 | 580 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 581 | *.vbw 582 | 583 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 584 | *.vbp 585 | 586 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 587 | *.dsw 588 | *.dsp 589 | 590 | # Visual Studio 6 technical files 591 | 592 | # Visual Studio LightSwitch build output 593 | **/*.HTMLClient/GeneratedArtifacts 594 | **/*.DesktopClient/GeneratedArtifacts 595 | **/*.DesktopClient/ModelManifest.xml 596 | **/*.Server/GeneratedArtifacts 597 | **/*.Server/ModelManifest.xml 598 | _Pvt_Extensions 599 | 600 | # Paket dependency manager 601 | .paket/paket.exe 602 | paket-files/ 603 | 604 | # FAKE - F# Make 605 | .fake/ 606 | 607 | # CodeRush personal settings 608 | .cr/personal 609 | 610 | # Python Tools for Visual Studio (PTVS) 611 | __pycache__/ 612 | *.pyc 613 | 614 | # Cake - Uncomment if you are using it 615 | # tools/** 616 | # !tools/packages.config 617 | 618 | # Tabs Studio 619 | *.tss 620 | 621 | # Telerik's JustMock configuration file 622 | *.jmconfig 623 | 624 | # BizTalk build output 625 | *.btp.cs 626 | *.btm.cs 627 | *.odx.cs 628 | *.xsd.cs 629 | 630 | # OpenCover UI analysis results 631 | OpenCover/ 632 | 633 | # Azure Stream Analytics local run output 634 | ASALocalRun/ 635 | 636 | # MSBuild Binary and Structured Log 637 | *.binlog 638 | 639 | # NVidia Nsight GPU debugger configuration file 640 | *.nvuser 641 | 642 | # MFractors (Xamarin productivity tool) working folder 643 | .mfractor/ 644 | 645 | # Local History for Visual Studio 646 | .localhistory/ 647 | 648 | # Visual Studio History (VSHistory) files 649 | .vshistory/ 650 | 651 | # BeatPulse healthcheck temp database 652 | healthchecksdb 653 | 654 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 655 | MigrationBackup/ 656 | 657 | # Ionide (cross platform F# VS Code tools) working folder 658 | .ionide/ 659 | 660 | # Fody - auto-generated XML schema 661 | FodyWeavers.xsd 662 | 663 | # VS Code files for those working on multiple tools 664 | *.code-workspace 665 | 666 | # Local History for Visual Studio Code 667 | 668 | # Windows Installer files from build outputs 669 | 670 | # JetBrains Rider 671 | *.sln.iml 672 | 673 | ### VisualStudio Patch ### 674 | # Additional files built by Visual Studio 675 | 676 | # End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial -------------------------------------------------------------------------------- /alpine/frpc/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$BUILDPLATFORM snowdreamtech/golang:1.23.7-alpine3.21 AS builder 2 | 3 | ARG TARGETOS 4 | ARG TARGETARCH 5 | 6 | # Switch to the user 7 | USER root 8 | 9 | # Set the workdir 10 | WORKDIR /root 11 | 12 | ENV FRP_VERSION=0.62.1 13 | 14 | RUN apk add --no-cache make \ 15 | && wget -c https://github.com/fatedier/frp/archive/refs/tags/v${FRP_VERSION}.tar.gz \ 16 | && tar zxvf v${FRP_VERSION}.tar.gz \ 17 | && cd frp-${FRP_VERSION} \ 18 | && sed -i 's/CGO_ENABLED=0/CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH}/' Makefile \ 19 | && make \ 20 | && cp -rfv bin conf /root/ 21 | 22 | 23 | FROM snowdreamtech/alpine:3.21.3 24 | 25 | # OCI annotations to image 26 | LABEL org.opencontainers.image.authors="Snowdream Tech" \ 27 | org.opencontainers.image.title="Frpc Image Based On Alpine" \ 28 | org.opencontainers.image.description="Docker Images for Frpc on Alpine. (i386, amd64, arm32v6, arm32v7, arm64, ppc64le,riscv64, s390x)" \ 29 | org.opencontainers.image.documentation="https://hub.docker.com/r/snowdreamtech/frpc" \ 30 | org.opencontainers.image.base.name="snowdreamtech/frpc:alpine" \ 31 | org.opencontainers.image.licenses="MIT" \ 32 | org.opencontainers.image.source="https://github.com/snowdreamtech/frp" \ 33 | org.opencontainers.image.vendor="Snowdream Tech" \ 34 | org.opencontainers.image.version="0.62.1" \ 35 | org.opencontainers.image.url="https://github.com/snowdreamtech/frp" 36 | 37 | COPY --from=builder /root/bin/frpc /usr/bin/ 38 | COPY --from=builder /root/conf/frpc.toml /etc/frp/ 39 | 40 | ENTRYPOINT ["/usr/bin/frpc"] 41 | 42 | CMD ["-c", "/etc/frp/frpc.toml"] -------------------------------------------------------------------------------- /alpine/frps/.dockerignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 3 | 4 | Dockerfile 5 | build.sh 6 | README.md 7 | LICENSE 8 | .github 9 | 10 | ### Emacs ### 11 | # -*- mode: gitignore; -*- 12 | *~ 13 | \#*\# 14 | /.emacs.desktop 15 | /.emacs.desktop.lock 16 | *.elc 17 | auto-save-list 18 | tramp 19 | .\#* 20 | 21 | # Org-mode 22 | .org-id-locations 23 | *_archive 24 | 25 | # flymake-mode 26 | *_flymake.* 27 | 28 | # eshell files 29 | /eshell/history 30 | /eshell/lastdir 31 | 32 | # elpa packages 33 | /elpa/ 34 | 35 | # reftex files 36 | *.rel 37 | 38 | # AUCTeX auto folder 39 | /auto/ 40 | 41 | # cask packages 42 | .cask/ 43 | dist/ 44 | 45 | # Flycheck 46 | flycheck_*.el 47 | 48 | # server auth directory 49 | /server/ 50 | 51 | # projectiles files 52 | .projectile 53 | 54 | # directory configuration 55 | .dir-locals.el 56 | 57 | # network security 58 | /network-security.data 59 | 60 | 61 | ### Git ### 62 | # Created by git for backups. To disable backups in Git: 63 | # $ git config --global mergetool.keepBackup false 64 | *.orig 65 | 66 | # Created by git when using merge tools for conflicts 67 | *.BACKUP.* 68 | *.BASE.* 69 | *.LOCAL.* 70 | *.REMOTE.* 71 | *_BACKUP_*.txt 72 | *_BASE_*.txt 73 | *_LOCAL_*.txt 74 | *_REMOTE_*.txt 75 | 76 | ### JetBrains+all ### 77 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 78 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 79 | 80 | # User-specific stuff 81 | .idea/**/workspace.xml 82 | .idea/**/tasks.xml 83 | .idea/**/usage.statistics.xml 84 | .idea/**/dictionaries 85 | .idea/**/shelf 86 | 87 | # AWS User-specific 88 | .idea/**/aws.xml 89 | 90 | # Generated files 91 | .idea/**/contentModel.xml 92 | 93 | # Sensitive or high-churn files 94 | .idea/**/dataSources/ 95 | .idea/**/dataSources.ids 96 | .idea/**/dataSources.local.xml 97 | .idea/**/sqlDataSources.xml 98 | .idea/**/dynamic.xml 99 | .idea/**/uiDesigner.xml 100 | .idea/**/dbnavigator.xml 101 | 102 | # Gradle 103 | .idea/**/gradle.xml 104 | .idea/**/libraries 105 | 106 | # Gradle and Maven with auto-import 107 | # When using Gradle or Maven with auto-import, you should exclude module files, 108 | # since they will be recreated, and may cause churn. Uncomment if using 109 | # auto-import. 110 | # .idea/artifacts 111 | # .idea/compiler.xml 112 | # .idea/jarRepositories.xml 113 | # .idea/modules.xml 114 | # .idea/*.iml 115 | # .idea/modules 116 | # *.iml 117 | # *.ipr 118 | 119 | # CMake 120 | cmake-build-*/ 121 | 122 | # Mongo Explorer plugin 123 | .idea/**/mongoSettings.xml 124 | 125 | # File-based project format 126 | *.iws 127 | 128 | # IntelliJ 129 | out/ 130 | 131 | # mpeltonen/sbt-idea plugin 132 | .idea_modules/ 133 | 134 | # JIRA plugin 135 | atlassian-ide-plugin.xml 136 | 137 | # Cursive Clojure plugin 138 | .idea/replstate.xml 139 | 140 | # SonarLint plugin 141 | .idea/sonarlint/ 142 | 143 | # Crashlytics plugin (for Android Studio and IntelliJ) 144 | com_crashlytics_export_strings.xml 145 | crashlytics.properties 146 | crashlytics-build.properties 147 | fabric.properties 148 | 149 | # Editor-based Rest Client 150 | .idea/httpRequests 151 | 152 | # Android studio 3.1+ serialized cache file 153 | .idea/caches/build_file_checksums.ser 154 | 155 | ### JetBrains+all Patch ### 156 | # Ignore everything but code style settings and run configurations 157 | # that are supposed to be shared within teams. 158 | 159 | .idea/* 160 | 161 | !.idea/codeStyles 162 | !.idea/runConfigurations 163 | 164 | ### Linux ### 165 | 166 | # temporary files which can be created if a process still has a handle open of a deleted file 167 | .fuse_hidden* 168 | 169 | # KDE directory preferences 170 | .directory 171 | 172 | # Linux trash folder which might appear on any partition or disk 173 | .Trash-* 174 | 175 | # .nfs files are created when an open file is removed but is still being accessed 176 | .nfs* 177 | 178 | ### macOS ### 179 | # General 180 | .DS_Store 181 | .AppleDouble 182 | .LSOverride 183 | 184 | # Icon must end with two \r 185 | Icon 186 | 187 | 188 | # Thumbnails 189 | ._* 190 | 191 | # Files that might appear in the root of a volume 192 | .DocumentRevisions-V100 193 | .fseventsd 194 | .Spotlight-V100 195 | .TemporaryItems 196 | .Trashes 197 | .VolumeIcon.icns 198 | .com.apple.timemachine.donotpresent 199 | 200 | # Directories potentially created on remote AFP share 201 | .AppleDB 202 | .AppleDesktop 203 | Network Trash Folder 204 | Temporary Items 205 | .apdisk 206 | 207 | ### macOS Patch ### 208 | # iCloud generated files 209 | *.icloud 210 | 211 | ### Mercurial ### 212 | .hg/ 213 | .hgignore 214 | .hgsigs 215 | .hgsub 216 | .hgsubstate 217 | .hgtags 218 | 219 | ### SVN ### 220 | .svn/ 221 | 222 | ### Vim ### 223 | # Swap 224 | [._]*.s[a-v][a-z] 225 | !*.svg # comment out if you don't need vector files 226 | [._]*.sw[a-p] 227 | [._]s[a-rt-v][a-z] 228 | [._]ss[a-gi-z] 229 | [._]sw[a-p] 230 | 231 | # Session 232 | Session.vim 233 | Sessionx.vim 234 | 235 | # Temporary 236 | .netrwhist 237 | # Auto-generated tag files 238 | tags 239 | # Persistent undo 240 | [._]*.un~ 241 | 242 | ### VisualStudioCode ### 243 | .vscode/* 244 | !.vscode/settings.json 245 | !.vscode/tasks.json 246 | !.vscode/launch.json 247 | !.vscode/extensions.json 248 | !.vscode/*.code-snippets 249 | 250 | # Local History for Visual Studio Code 251 | .history/ 252 | 253 | # Built Visual Studio Code Extensions 254 | *.vsix 255 | 256 | ### VisualStudioCode Patch ### 257 | # Ignore all local history of files 258 | .history 259 | .ionide 260 | 261 | ### Windows ### 262 | # Windows thumbnail cache files 263 | Thumbs.db 264 | Thumbs.db:encryptable 265 | ehthumbs.db 266 | ehthumbs_vista.db 267 | 268 | # Dump file 269 | *.stackdump 270 | 271 | # Folder config file 272 | [Dd]esktop.ini 273 | 274 | # Recycle Bin used on file shares 275 | $RECYCLE.BIN/ 276 | 277 | # Windows Installer files 278 | *.cab 279 | *.msi 280 | *.msix 281 | *.msm 282 | *.msp 283 | 284 | # Windows shortcuts 285 | *.lnk 286 | 287 | ### VisualStudio ### 288 | ## Ignore Visual Studio temporary files, build results, and 289 | ## files generated by popular Visual Studio add-ons. 290 | ## 291 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 292 | 293 | # User-specific files 294 | *.rsuser 295 | *.suo 296 | *.user 297 | *.userosscache 298 | *.sln.docstates 299 | 300 | # User-specific files (MonoDevelop/Xamarin Studio) 301 | *.userprefs 302 | 303 | # Mono auto generated files 304 | mono_crash.* 305 | 306 | # Build results 307 | [Dd]ebug/ 308 | [Dd]ebugPublic/ 309 | [Rr]elease/ 310 | [Rr]eleases/ 311 | x64/ 312 | x86/ 313 | [Ww][Ii][Nn]32/ 314 | [Aa][Rr][Mm]/ 315 | [Aa][Rr][Mm]64/ 316 | bld/ 317 | [Bb]in/ 318 | [Oo]bj/ 319 | [Ll]og/ 320 | [Ll]ogs/ 321 | 322 | # Visual Studio 2015/2017 cache/options directory 323 | .vs/ 324 | # Uncomment if you have tasks that create the project's static files in wwwroot 325 | #wwwroot/ 326 | 327 | # Visual Studio 2017 auto generated files 328 | Generated\ Files/ 329 | 330 | # MSTest test Results 331 | [Tt]est[Rr]esult*/ 332 | [Bb]uild[Ll]og.* 333 | 334 | # NUnit 335 | *.VisualState.xml 336 | TestResult.xml 337 | nunit-*.xml 338 | 339 | # Build Results of an ATL Project 340 | [Dd]ebugPS/ 341 | [Rr]eleasePS/ 342 | dlldata.c 343 | 344 | # Benchmark Results 345 | BenchmarkDotNet.Artifacts/ 346 | 347 | # .NET Core 348 | project.lock.json 349 | project.fragment.lock.json 350 | artifacts/ 351 | 352 | # ASP.NET Scaffolding 353 | ScaffoldingReadMe.txt 354 | 355 | # StyleCop 356 | StyleCopReport.xml 357 | 358 | # Files built by Visual Studio 359 | *_i.c 360 | *_p.c 361 | *_h.h 362 | *.ilk 363 | *.meta 364 | *.obj 365 | *.iobj 366 | *.pch 367 | *.pdb 368 | *.ipdb 369 | *.pgc 370 | *.pgd 371 | *.rsp 372 | *.sbr 373 | *.tlb 374 | *.tli 375 | *.tlh 376 | *.tmp 377 | *.tmp_proj 378 | *_wpftmp.csproj 379 | *.log 380 | *.tlog 381 | *.vspscc 382 | *.vssscc 383 | .builds 384 | *.pidb 385 | *.svclog 386 | *.scc 387 | 388 | # Chutzpah Test files 389 | _Chutzpah* 390 | 391 | # Visual C++ cache files 392 | ipch/ 393 | *.aps 394 | *.ncb 395 | *.opendb 396 | *.opensdf 397 | *.sdf 398 | *.cachefile 399 | *.VC.db 400 | *.VC.VC.opendb 401 | 402 | # Visual Studio profiler 403 | *.psess 404 | *.vsp 405 | *.vspx 406 | *.sap 407 | 408 | # Visual Studio Trace Files 409 | *.e2e 410 | 411 | # TFS 2012 Local Workspace 412 | $tf/ 413 | 414 | # Guidance Automation Toolkit 415 | *.gpState 416 | 417 | # ReSharper is a .NET coding add-in 418 | _ReSharper*/ 419 | *.[Rr]e[Ss]harper 420 | *.DotSettings.user 421 | 422 | # TeamCity is a build add-in 423 | _TeamCity* 424 | 425 | # DotCover is a Code Coverage Tool 426 | *.dotCover 427 | 428 | # AxoCover is a Code Coverage Tool 429 | .axoCover/* 430 | !.axoCover/settings.json 431 | 432 | # Coverlet is a free, cross platform Code Coverage Tool 433 | coverage*.json 434 | coverage*.xml 435 | coverage*.info 436 | 437 | # Visual Studio code coverage results 438 | *.coverage 439 | *.coveragexml 440 | 441 | # NCrunch 442 | _NCrunch_* 443 | .*crunch*.local.xml 444 | nCrunchTemp_* 445 | 446 | # MightyMoose 447 | *.mm.* 448 | AutoTest.Net/ 449 | 450 | # Web workbench (sass) 451 | .sass-cache/ 452 | 453 | # Installshield output folder 454 | [Ee]xpress/ 455 | 456 | # DocProject is a documentation generator add-in 457 | DocProject/buildhelp/ 458 | DocProject/Help/*.HxT 459 | DocProject/Help/*.HxC 460 | DocProject/Help/*.hhc 461 | DocProject/Help/*.hhk 462 | DocProject/Help/*.hhp 463 | DocProject/Help/Html2 464 | DocProject/Help/html 465 | 466 | # Click-Once directory 467 | publish/ 468 | 469 | # Publish Web Output 470 | *.[Pp]ublish.xml 471 | *.azurePubxml 472 | # Note: Comment the next line if you want to checkin your web deploy settings, 473 | # but database connection strings (with potential passwords) will be unencrypted 474 | *.pubxml 475 | *.publishproj 476 | 477 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 478 | # checkin your Azure Web App publish settings, but sensitive information contained 479 | # in these scripts will be unencrypted 480 | PublishScripts/ 481 | 482 | # NuGet Packages 483 | *.nupkg 484 | # NuGet Symbol Packages 485 | *.snupkg 486 | # The packages folder can be ignored because of Package Restore 487 | **/[Pp]ackages/* 488 | # except build/, which is used as an MSBuild target. 489 | !**/[Pp]ackages/build/ 490 | # Uncomment if necessary however generally it will be regenerated when needed 491 | #!**/[Pp]ackages/repositories.config 492 | # NuGet v3's project.json files produces more ignorable files 493 | *.nuget.props 494 | *.nuget.targets 495 | 496 | # Microsoft Azure Build Output 497 | csx/ 498 | *.build.csdef 499 | 500 | # Microsoft Azure Emulator 501 | ecf/ 502 | rcf/ 503 | 504 | # Windows Store app package directories and files 505 | AppPackages/ 506 | BundleArtifacts/ 507 | Package.StoreAssociation.xml 508 | _pkginfo.txt 509 | *.appx 510 | *.appxbundle 511 | *.appxupload 512 | 513 | # Visual Studio cache files 514 | # files ending in .cache can be ignored 515 | *.[Cc]ache 516 | # but keep track of directories ending in .cache 517 | !?*.[Cc]ache/ 518 | 519 | # Others 520 | ClientBin/ 521 | ~$* 522 | *.dbmdl 523 | *.dbproj.schemaview 524 | *.jfm 525 | *.pfx 526 | *.publishsettings 527 | orleans.codegen.cs 528 | 529 | # Including strong name files can present a security risk 530 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 531 | #*.snk 532 | 533 | # Since there are multiple workflows, uncomment next line to ignore bower_components 534 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 535 | #bower_components/ 536 | 537 | # RIA/Silverlight projects 538 | Generated_Code/ 539 | 540 | # Backup & report files from converting an old project file 541 | # to a newer Visual Studio version. Backup files are not needed, 542 | # because we have git ;-) 543 | _UpgradeReport_Files/ 544 | Backup*/ 545 | UpgradeLog*.XML 546 | UpgradeLog*.htm 547 | ServiceFabricBackup/ 548 | *.rptproj.bak 549 | 550 | # SQL Server files 551 | *.mdf 552 | *.ldf 553 | *.ndf 554 | 555 | # Business Intelligence projects 556 | *.rdl.data 557 | *.bim.layout 558 | *.bim_*.settings 559 | *.rptproj.rsuser 560 | *- [Bb]ackup.rdl 561 | *- [Bb]ackup ([0-9]).rdl 562 | *- [Bb]ackup ([0-9][0-9]).rdl 563 | 564 | # Microsoft Fakes 565 | FakesAssemblies/ 566 | 567 | # GhostDoc plugin setting file 568 | *.GhostDoc.xml 569 | 570 | # Node.js Tools for Visual Studio 571 | .ntvs_analysis.dat 572 | node_modules/ 573 | 574 | # Visual Studio 6 build log 575 | *.plg 576 | 577 | # Visual Studio 6 workspace options file 578 | *.opt 579 | 580 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 581 | *.vbw 582 | 583 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 584 | *.vbp 585 | 586 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 587 | *.dsw 588 | *.dsp 589 | 590 | # Visual Studio 6 technical files 591 | 592 | # Visual Studio LightSwitch build output 593 | **/*.HTMLClient/GeneratedArtifacts 594 | **/*.DesktopClient/GeneratedArtifacts 595 | **/*.DesktopClient/ModelManifest.xml 596 | **/*.Server/GeneratedArtifacts 597 | **/*.Server/ModelManifest.xml 598 | _Pvt_Extensions 599 | 600 | # Paket dependency manager 601 | .paket/paket.exe 602 | paket-files/ 603 | 604 | # FAKE - F# Make 605 | .fake/ 606 | 607 | # CodeRush personal settings 608 | .cr/personal 609 | 610 | # Python Tools for Visual Studio (PTVS) 611 | __pycache__/ 612 | *.pyc 613 | 614 | # Cake - Uncomment if you are using it 615 | # tools/** 616 | # !tools/packages.config 617 | 618 | # Tabs Studio 619 | *.tss 620 | 621 | # Telerik's JustMock configuration file 622 | *.jmconfig 623 | 624 | # BizTalk build output 625 | *.btp.cs 626 | *.btm.cs 627 | *.odx.cs 628 | *.xsd.cs 629 | 630 | # OpenCover UI analysis results 631 | OpenCover/ 632 | 633 | # Azure Stream Analytics local run output 634 | ASALocalRun/ 635 | 636 | # MSBuild Binary and Structured Log 637 | *.binlog 638 | 639 | # NVidia Nsight GPU debugger configuration file 640 | *.nvuser 641 | 642 | # MFractors (Xamarin productivity tool) working folder 643 | .mfractor/ 644 | 645 | # Local History for Visual Studio 646 | .localhistory/ 647 | 648 | # Visual Studio History (VSHistory) files 649 | .vshistory/ 650 | 651 | # BeatPulse healthcheck temp database 652 | healthchecksdb 653 | 654 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 655 | MigrationBackup/ 656 | 657 | # Ionide (cross platform F# VS Code tools) working folder 658 | .ionide/ 659 | 660 | # Fody - auto-generated XML schema 661 | FodyWeavers.xsd 662 | 663 | # VS Code files for those working on multiple tools 664 | *.code-workspace 665 | 666 | # Local History for Visual Studio Code 667 | 668 | # Windows Installer files from build outputs 669 | 670 | # JetBrains Rider 671 | *.sln.iml 672 | 673 | ### VisualStudio Patch ### 674 | # Additional files built by Visual Studio 675 | 676 | # End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial -------------------------------------------------------------------------------- /alpine/frps/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$BUILDPLATFORM snowdreamtech/golang:1.23.7-alpine3.21 AS builder 2 | 3 | ARG TARGETOS 4 | ARG TARGETARCH 5 | 6 | # Switch to the user 7 | USER root 8 | 9 | # Set the workdir 10 | WORKDIR /root 11 | 12 | ENV FRP_VERSION=0.62.1 13 | 14 | RUN apk add --no-cache make \ 15 | && wget -c https://github.com/fatedier/frp/archive/refs/tags/v${FRP_VERSION}.tar.gz \ 16 | && tar zxvf v${FRP_VERSION}.tar.gz \ 17 | && cd frp-${FRP_VERSION} \ 18 | && sed -i 's/CGO_ENABLED=0/CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH}/' Makefile \ 19 | && make \ 20 | && cp -rfv bin conf /root/ 21 | 22 | 23 | FROM snowdreamtech/alpine:3.21.3 24 | 25 | # OCI annotations to image 26 | LABEL org.opencontainers.image.authors="Snowdream Tech" \ 27 | org.opencontainers.image.title="Frps Image Based On Alpine" \ 28 | org.opencontainers.image.description="Docker Images for Frps on Alpine. (i386, amd64, arm32v6, arm32v7, arm64, ppc64le,riscv64, s390x)" \ 29 | org.opencontainers.image.documentation="https://hub.docker.com/r/snowdreamtech/frps" \ 30 | org.opencontainers.image.base.name="snowdreamtech/frps:alpine" \ 31 | org.opencontainers.image.licenses="MIT" \ 32 | org.opencontainers.image.source="https://github.com/snowdreamtech/frp" \ 33 | org.opencontainers.image.vendor="Snowdream Tech" \ 34 | org.opencontainers.image.version="0.62.1" \ 35 | org.opencontainers.image.url="https://github.com/snowdreamtech/frp" 36 | 37 | COPY --from=builder /root/bin/frps /usr/bin/ 38 | COPY --from=builder /root/conf/frps.toml /etc/frp/ 39 | 40 | ENTRYPOINT ["/usr/bin/frps"] 41 | 42 | CMD ["-c", "/etc/frp/frps.toml"] -------------------------------------------------------------------------------- /debian/frpc/.dockerignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 3 | 4 | Dockerfile 5 | build.sh 6 | README.md 7 | LICENSE 8 | .github 9 | 10 | ### Emacs ### 11 | # -*- mode: gitignore; -*- 12 | *~ 13 | \#*\# 14 | /.emacs.desktop 15 | /.emacs.desktop.lock 16 | *.elc 17 | auto-save-list 18 | tramp 19 | .\#* 20 | 21 | # Org-mode 22 | .org-id-locations 23 | *_archive 24 | 25 | # flymake-mode 26 | *_flymake.* 27 | 28 | # eshell files 29 | /eshell/history 30 | /eshell/lastdir 31 | 32 | # elpa packages 33 | /elpa/ 34 | 35 | # reftex files 36 | *.rel 37 | 38 | # AUCTeX auto folder 39 | /auto/ 40 | 41 | # cask packages 42 | .cask/ 43 | dist/ 44 | 45 | # Flycheck 46 | flycheck_*.el 47 | 48 | # server auth directory 49 | /server/ 50 | 51 | # projectiles files 52 | .projectile 53 | 54 | # directory configuration 55 | .dir-locals.el 56 | 57 | # network security 58 | /network-security.data 59 | 60 | 61 | ### Git ### 62 | # Created by git for backups. To disable backups in Git: 63 | # $ git config --global mergetool.keepBackup false 64 | *.orig 65 | 66 | # Created by git when using merge tools for conflicts 67 | *.BACKUP.* 68 | *.BASE.* 69 | *.LOCAL.* 70 | *.REMOTE.* 71 | *_BACKUP_*.txt 72 | *_BASE_*.txt 73 | *_LOCAL_*.txt 74 | *_REMOTE_*.txt 75 | 76 | ### JetBrains+all ### 77 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 78 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 79 | 80 | # User-specific stuff 81 | .idea/**/workspace.xml 82 | .idea/**/tasks.xml 83 | .idea/**/usage.statistics.xml 84 | .idea/**/dictionaries 85 | .idea/**/shelf 86 | 87 | # AWS User-specific 88 | .idea/**/aws.xml 89 | 90 | # Generated files 91 | .idea/**/contentModel.xml 92 | 93 | # Sensitive or high-churn files 94 | .idea/**/dataSources/ 95 | .idea/**/dataSources.ids 96 | .idea/**/dataSources.local.xml 97 | .idea/**/sqlDataSources.xml 98 | .idea/**/dynamic.xml 99 | .idea/**/uiDesigner.xml 100 | .idea/**/dbnavigator.xml 101 | 102 | # Gradle 103 | .idea/**/gradle.xml 104 | .idea/**/libraries 105 | 106 | # Gradle and Maven with auto-import 107 | # When using Gradle or Maven with auto-import, you should exclude module files, 108 | # since they will be recreated, and may cause churn. Uncomment if using 109 | # auto-import. 110 | # .idea/artifacts 111 | # .idea/compiler.xml 112 | # .idea/jarRepositories.xml 113 | # .idea/modules.xml 114 | # .idea/*.iml 115 | # .idea/modules 116 | # *.iml 117 | # *.ipr 118 | 119 | # CMake 120 | cmake-build-*/ 121 | 122 | # Mongo Explorer plugin 123 | .idea/**/mongoSettings.xml 124 | 125 | # File-based project format 126 | *.iws 127 | 128 | # IntelliJ 129 | out/ 130 | 131 | # mpeltonen/sbt-idea plugin 132 | .idea_modules/ 133 | 134 | # JIRA plugin 135 | atlassian-ide-plugin.xml 136 | 137 | # Cursive Clojure plugin 138 | .idea/replstate.xml 139 | 140 | # SonarLint plugin 141 | .idea/sonarlint/ 142 | 143 | # Crashlytics plugin (for Android Studio and IntelliJ) 144 | com_crashlytics_export_strings.xml 145 | crashlytics.properties 146 | crashlytics-build.properties 147 | fabric.properties 148 | 149 | # Editor-based Rest Client 150 | .idea/httpRequests 151 | 152 | # Android studio 3.1+ serialized cache file 153 | .idea/caches/build_file_checksums.ser 154 | 155 | ### JetBrains+all Patch ### 156 | # Ignore everything but code style settings and run configurations 157 | # that are supposed to be shared within teams. 158 | 159 | .idea/* 160 | 161 | !.idea/codeStyles 162 | !.idea/runConfigurations 163 | 164 | ### Linux ### 165 | 166 | # temporary files which can be created if a process still has a handle open of a deleted file 167 | .fuse_hidden* 168 | 169 | # KDE directory preferences 170 | .directory 171 | 172 | # Linux trash folder which might appear on any partition or disk 173 | .Trash-* 174 | 175 | # .nfs files are created when an open file is removed but is still being accessed 176 | .nfs* 177 | 178 | ### macOS ### 179 | # General 180 | .DS_Store 181 | .AppleDouble 182 | .LSOverride 183 | 184 | # Icon must end with two \r 185 | Icon 186 | 187 | 188 | # Thumbnails 189 | ._* 190 | 191 | # Files that might appear in the root of a volume 192 | .DocumentRevisions-V100 193 | .fseventsd 194 | .Spotlight-V100 195 | .TemporaryItems 196 | .Trashes 197 | .VolumeIcon.icns 198 | .com.apple.timemachine.donotpresent 199 | 200 | # Directories potentially created on remote AFP share 201 | .AppleDB 202 | .AppleDesktop 203 | Network Trash Folder 204 | Temporary Items 205 | .apdisk 206 | 207 | ### macOS Patch ### 208 | # iCloud generated files 209 | *.icloud 210 | 211 | ### Mercurial ### 212 | .hg/ 213 | .hgignore 214 | .hgsigs 215 | .hgsub 216 | .hgsubstate 217 | .hgtags 218 | 219 | ### SVN ### 220 | .svn/ 221 | 222 | ### Vim ### 223 | # Swap 224 | [._]*.s[a-v][a-z] 225 | !*.svg # comment out if you don't need vector files 226 | [._]*.sw[a-p] 227 | [._]s[a-rt-v][a-z] 228 | [._]ss[a-gi-z] 229 | [._]sw[a-p] 230 | 231 | # Session 232 | Session.vim 233 | Sessionx.vim 234 | 235 | # Temporary 236 | .netrwhist 237 | # Auto-generated tag files 238 | tags 239 | # Persistent undo 240 | [._]*.un~ 241 | 242 | ### VisualStudioCode ### 243 | .vscode/* 244 | !.vscode/settings.json 245 | !.vscode/tasks.json 246 | !.vscode/launch.json 247 | !.vscode/extensions.json 248 | !.vscode/*.code-snippets 249 | 250 | # Local History for Visual Studio Code 251 | .history/ 252 | 253 | # Built Visual Studio Code Extensions 254 | *.vsix 255 | 256 | ### VisualStudioCode Patch ### 257 | # Ignore all local history of files 258 | .history 259 | .ionide 260 | 261 | ### Windows ### 262 | # Windows thumbnail cache files 263 | Thumbs.db 264 | Thumbs.db:encryptable 265 | ehthumbs.db 266 | ehthumbs_vista.db 267 | 268 | # Dump file 269 | *.stackdump 270 | 271 | # Folder config file 272 | [Dd]esktop.ini 273 | 274 | # Recycle Bin used on file shares 275 | $RECYCLE.BIN/ 276 | 277 | # Windows Installer files 278 | *.cab 279 | *.msi 280 | *.msix 281 | *.msm 282 | *.msp 283 | 284 | # Windows shortcuts 285 | *.lnk 286 | 287 | ### VisualStudio ### 288 | ## Ignore Visual Studio temporary files, build results, and 289 | ## files generated by popular Visual Studio add-ons. 290 | ## 291 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 292 | 293 | # User-specific files 294 | *.rsuser 295 | *.suo 296 | *.user 297 | *.userosscache 298 | *.sln.docstates 299 | 300 | # User-specific files (MonoDevelop/Xamarin Studio) 301 | *.userprefs 302 | 303 | # Mono auto generated files 304 | mono_crash.* 305 | 306 | # Build results 307 | [Dd]ebug/ 308 | [Dd]ebugPublic/ 309 | [Rr]elease/ 310 | [Rr]eleases/ 311 | x64/ 312 | x86/ 313 | [Ww][Ii][Nn]32/ 314 | [Aa][Rr][Mm]/ 315 | [Aa][Rr][Mm]64/ 316 | bld/ 317 | [Bb]in/ 318 | [Oo]bj/ 319 | [Ll]og/ 320 | [Ll]ogs/ 321 | 322 | # Visual Studio 2015/2017 cache/options directory 323 | .vs/ 324 | # Uncomment if you have tasks that create the project's static files in wwwroot 325 | #wwwroot/ 326 | 327 | # Visual Studio 2017 auto generated files 328 | Generated\ Files/ 329 | 330 | # MSTest test Results 331 | [Tt]est[Rr]esult*/ 332 | [Bb]uild[Ll]og.* 333 | 334 | # NUnit 335 | *.VisualState.xml 336 | TestResult.xml 337 | nunit-*.xml 338 | 339 | # Build Results of an ATL Project 340 | [Dd]ebugPS/ 341 | [Rr]eleasePS/ 342 | dlldata.c 343 | 344 | # Benchmark Results 345 | BenchmarkDotNet.Artifacts/ 346 | 347 | # .NET Core 348 | project.lock.json 349 | project.fragment.lock.json 350 | artifacts/ 351 | 352 | # ASP.NET Scaffolding 353 | ScaffoldingReadMe.txt 354 | 355 | # StyleCop 356 | StyleCopReport.xml 357 | 358 | # Files built by Visual Studio 359 | *_i.c 360 | *_p.c 361 | *_h.h 362 | *.ilk 363 | *.meta 364 | *.obj 365 | *.iobj 366 | *.pch 367 | *.pdb 368 | *.ipdb 369 | *.pgc 370 | *.pgd 371 | *.rsp 372 | *.sbr 373 | *.tlb 374 | *.tli 375 | *.tlh 376 | *.tmp 377 | *.tmp_proj 378 | *_wpftmp.csproj 379 | *.log 380 | *.tlog 381 | *.vspscc 382 | *.vssscc 383 | .builds 384 | *.pidb 385 | *.svclog 386 | *.scc 387 | 388 | # Chutzpah Test files 389 | _Chutzpah* 390 | 391 | # Visual C++ cache files 392 | ipch/ 393 | *.aps 394 | *.ncb 395 | *.opendb 396 | *.opensdf 397 | *.sdf 398 | *.cachefile 399 | *.VC.db 400 | *.VC.VC.opendb 401 | 402 | # Visual Studio profiler 403 | *.psess 404 | *.vsp 405 | *.vspx 406 | *.sap 407 | 408 | # Visual Studio Trace Files 409 | *.e2e 410 | 411 | # TFS 2012 Local Workspace 412 | $tf/ 413 | 414 | # Guidance Automation Toolkit 415 | *.gpState 416 | 417 | # ReSharper is a .NET coding add-in 418 | _ReSharper*/ 419 | *.[Rr]e[Ss]harper 420 | *.DotSettings.user 421 | 422 | # TeamCity is a build add-in 423 | _TeamCity* 424 | 425 | # DotCover is a Code Coverage Tool 426 | *.dotCover 427 | 428 | # AxoCover is a Code Coverage Tool 429 | .axoCover/* 430 | !.axoCover/settings.json 431 | 432 | # Coverlet is a free, cross platform Code Coverage Tool 433 | coverage*.json 434 | coverage*.xml 435 | coverage*.info 436 | 437 | # Visual Studio code coverage results 438 | *.coverage 439 | *.coveragexml 440 | 441 | # NCrunch 442 | _NCrunch_* 443 | .*crunch*.local.xml 444 | nCrunchTemp_* 445 | 446 | # MightyMoose 447 | *.mm.* 448 | AutoTest.Net/ 449 | 450 | # Web workbench (sass) 451 | .sass-cache/ 452 | 453 | # Installshield output folder 454 | [Ee]xpress/ 455 | 456 | # DocProject is a documentation generator add-in 457 | DocProject/buildhelp/ 458 | DocProject/Help/*.HxT 459 | DocProject/Help/*.HxC 460 | DocProject/Help/*.hhc 461 | DocProject/Help/*.hhk 462 | DocProject/Help/*.hhp 463 | DocProject/Help/Html2 464 | DocProject/Help/html 465 | 466 | # Click-Once directory 467 | publish/ 468 | 469 | # Publish Web Output 470 | *.[Pp]ublish.xml 471 | *.azurePubxml 472 | # Note: Comment the next line if you want to checkin your web deploy settings, 473 | # but database connection strings (with potential passwords) will be unencrypted 474 | *.pubxml 475 | *.publishproj 476 | 477 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 478 | # checkin your Azure Web App publish settings, but sensitive information contained 479 | # in these scripts will be unencrypted 480 | PublishScripts/ 481 | 482 | # NuGet Packages 483 | *.nupkg 484 | # NuGet Symbol Packages 485 | *.snupkg 486 | # The packages folder can be ignored because of Package Restore 487 | **/[Pp]ackages/* 488 | # except build/, which is used as an MSBuild target. 489 | !**/[Pp]ackages/build/ 490 | # Uncomment if necessary however generally it will be regenerated when needed 491 | #!**/[Pp]ackages/repositories.config 492 | # NuGet v3's project.json files produces more ignorable files 493 | *.nuget.props 494 | *.nuget.targets 495 | 496 | # Microsoft Azure Build Output 497 | csx/ 498 | *.build.csdef 499 | 500 | # Microsoft Azure Emulator 501 | ecf/ 502 | rcf/ 503 | 504 | # Windows Store app package directories and files 505 | AppPackages/ 506 | BundleArtifacts/ 507 | Package.StoreAssociation.xml 508 | _pkginfo.txt 509 | *.appx 510 | *.appxbundle 511 | *.appxupload 512 | 513 | # Visual Studio cache files 514 | # files ending in .cache can be ignored 515 | *.[Cc]ache 516 | # but keep track of directories ending in .cache 517 | !?*.[Cc]ache/ 518 | 519 | # Others 520 | ClientBin/ 521 | ~$* 522 | *.dbmdl 523 | *.dbproj.schemaview 524 | *.jfm 525 | *.pfx 526 | *.publishsettings 527 | orleans.codegen.cs 528 | 529 | # Including strong name files can present a security risk 530 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 531 | #*.snk 532 | 533 | # Since there are multiple workflows, uncomment next line to ignore bower_components 534 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 535 | #bower_components/ 536 | 537 | # RIA/Silverlight projects 538 | Generated_Code/ 539 | 540 | # Backup & report files from converting an old project file 541 | # to a newer Visual Studio version. Backup files are not needed, 542 | # because we have git ;-) 543 | _UpgradeReport_Files/ 544 | Backup*/ 545 | UpgradeLog*.XML 546 | UpgradeLog*.htm 547 | ServiceFabricBackup/ 548 | *.rptproj.bak 549 | 550 | # SQL Server files 551 | *.mdf 552 | *.ldf 553 | *.ndf 554 | 555 | # Business Intelligence projects 556 | *.rdl.data 557 | *.bim.layout 558 | *.bim_*.settings 559 | *.rptproj.rsuser 560 | *- [Bb]ackup.rdl 561 | *- [Bb]ackup ([0-9]).rdl 562 | *- [Bb]ackup ([0-9][0-9]).rdl 563 | 564 | # Microsoft Fakes 565 | FakesAssemblies/ 566 | 567 | # GhostDoc plugin setting file 568 | *.GhostDoc.xml 569 | 570 | # Node.js Tools for Visual Studio 571 | .ntvs_analysis.dat 572 | node_modules/ 573 | 574 | # Visual Studio 6 build log 575 | *.plg 576 | 577 | # Visual Studio 6 workspace options file 578 | *.opt 579 | 580 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 581 | *.vbw 582 | 583 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 584 | *.vbp 585 | 586 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 587 | *.dsw 588 | *.dsp 589 | 590 | # Visual Studio 6 technical files 591 | 592 | # Visual Studio LightSwitch build output 593 | **/*.HTMLClient/GeneratedArtifacts 594 | **/*.DesktopClient/GeneratedArtifacts 595 | **/*.DesktopClient/ModelManifest.xml 596 | **/*.Server/GeneratedArtifacts 597 | **/*.Server/ModelManifest.xml 598 | _Pvt_Extensions 599 | 600 | # Paket dependency manager 601 | .paket/paket.exe 602 | paket-files/ 603 | 604 | # FAKE - F# Make 605 | .fake/ 606 | 607 | # CodeRush personal settings 608 | .cr/personal 609 | 610 | # Python Tools for Visual Studio (PTVS) 611 | __pycache__/ 612 | *.pyc 613 | 614 | # Cake - Uncomment if you are using it 615 | # tools/** 616 | # !tools/packages.config 617 | 618 | # Tabs Studio 619 | *.tss 620 | 621 | # Telerik's JustMock configuration file 622 | *.jmconfig 623 | 624 | # BizTalk build output 625 | *.btp.cs 626 | *.btm.cs 627 | *.odx.cs 628 | *.xsd.cs 629 | 630 | # OpenCover UI analysis results 631 | OpenCover/ 632 | 633 | # Azure Stream Analytics local run output 634 | ASALocalRun/ 635 | 636 | # MSBuild Binary and Structured Log 637 | *.binlog 638 | 639 | # NVidia Nsight GPU debugger configuration file 640 | *.nvuser 641 | 642 | # MFractors (Xamarin productivity tool) working folder 643 | .mfractor/ 644 | 645 | # Local History for Visual Studio 646 | .localhistory/ 647 | 648 | # Visual Studio History (VSHistory) files 649 | .vshistory/ 650 | 651 | # BeatPulse healthcheck temp database 652 | healthchecksdb 653 | 654 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 655 | MigrationBackup/ 656 | 657 | # Ionide (cross platform F# VS Code tools) working folder 658 | .ionide/ 659 | 660 | # Fody - auto-generated XML schema 661 | FodyWeavers.xsd 662 | 663 | # VS Code files for those working on multiple tools 664 | *.code-workspace 665 | 666 | # Local History for Visual Studio Code 667 | 668 | # Windows Installer files from build outputs 669 | 670 | # JetBrains Rider 671 | *.sln.iml 672 | 673 | ### VisualStudio Patch ### 674 | # Additional files built by Visual Studio 675 | 676 | # End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial -------------------------------------------------------------------------------- /debian/frpc/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$BUILDPLATFORM snowdreamtech/golang:1.23.5-bookworm AS builder 2 | 3 | ARG TARGETOS 4 | ARG TARGETARCH 5 | 6 | # Switch to the user 7 | USER root 8 | 9 | # Set the workdir 10 | WORKDIR /root 11 | 12 | ENV FRP_VERSION=0.62.1 13 | 14 | RUN set -eux \ 15 | && apt-get -qqy update \ 16 | && apt-get -qqy install --no-install-recommends \ 17 | make \ 18 | && wget -c https://github.com/fatedier/frp/archive/refs/tags/v${FRP_VERSION}.tar.gz \ 19 | && tar zxvf v${FRP_VERSION}.tar.gz \ 20 | && cd frp-${FRP_VERSION} \ 21 | && sed -i 's/CGO_ENABLED=0/CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH}/' Makefile \ 22 | && make \ 23 | && cp -rfv bin conf /root/ \ 24 | && apt-get -qqy --purge autoremove \ 25 | && apt-get -qqy clean \ 26 | && rm -rf /var/lib/apt/lists/* \ 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/tmp/* 29 | 30 | 31 | FROM snowdreamtech/debian:12.10.0 32 | 33 | # OCI annotations to image 34 | LABEL org.opencontainers.image.authors="Snowdream Tech" \ 35 | org.opencontainers.image.title="Frpc Image Based On Debian" \ 36 | org.opencontainers.image.description="Docker Images for Frpc On Debian. (i386,amd64,arm32v5,arm32v7,arm64,mips64le,ppc64le,s390x)" \ 37 | org.opencontainers.image.documentation="https://hub.docker.com/r/snowdreamtech/frpc" \ 38 | org.opencontainers.image.base.name="snowdreamtech/frpc:debian" \ 39 | org.opencontainers.image.licenses="MIT" \ 40 | org.opencontainers.image.source="https://github.com/snowdreamtech/frp" \ 41 | org.opencontainers.image.vendor="Snowdream Tech" \ 42 | org.opencontainers.image.version="0.62.1" \ 43 | org.opencontainers.image.url="https://github.com/snowdreamtech/frp" 44 | 45 | COPY --from=builder /root/bin/frpc /usr/bin/ 46 | COPY --from=builder /root/conf/frpc.toml /etc/frp/ 47 | 48 | ENTRYPOINT ["/usr/bin/frpc"] 49 | 50 | CMD ["-c", "/etc/frp/frpc.toml"] -------------------------------------------------------------------------------- /debian/frps/.dockerignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial 3 | 4 | Dockerfile 5 | build.sh 6 | README.md 7 | LICENSE 8 | .github 9 | 10 | ### Emacs ### 11 | # -*- mode: gitignore; -*- 12 | *~ 13 | \#*\# 14 | /.emacs.desktop 15 | /.emacs.desktop.lock 16 | *.elc 17 | auto-save-list 18 | tramp 19 | .\#* 20 | 21 | # Org-mode 22 | .org-id-locations 23 | *_archive 24 | 25 | # flymake-mode 26 | *_flymake.* 27 | 28 | # eshell files 29 | /eshell/history 30 | /eshell/lastdir 31 | 32 | # elpa packages 33 | /elpa/ 34 | 35 | # reftex files 36 | *.rel 37 | 38 | # AUCTeX auto folder 39 | /auto/ 40 | 41 | # cask packages 42 | .cask/ 43 | dist/ 44 | 45 | # Flycheck 46 | flycheck_*.el 47 | 48 | # server auth directory 49 | /server/ 50 | 51 | # projectiles files 52 | .projectile 53 | 54 | # directory configuration 55 | .dir-locals.el 56 | 57 | # network security 58 | /network-security.data 59 | 60 | 61 | ### Git ### 62 | # Created by git for backups. To disable backups in Git: 63 | # $ git config --global mergetool.keepBackup false 64 | *.orig 65 | 66 | # Created by git when using merge tools for conflicts 67 | *.BACKUP.* 68 | *.BASE.* 69 | *.LOCAL.* 70 | *.REMOTE.* 71 | *_BACKUP_*.txt 72 | *_BASE_*.txt 73 | *_LOCAL_*.txt 74 | *_REMOTE_*.txt 75 | 76 | ### JetBrains+all ### 77 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 78 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 79 | 80 | # User-specific stuff 81 | .idea/**/workspace.xml 82 | .idea/**/tasks.xml 83 | .idea/**/usage.statistics.xml 84 | .idea/**/dictionaries 85 | .idea/**/shelf 86 | 87 | # AWS User-specific 88 | .idea/**/aws.xml 89 | 90 | # Generated files 91 | .idea/**/contentModel.xml 92 | 93 | # Sensitive or high-churn files 94 | .idea/**/dataSources/ 95 | .idea/**/dataSources.ids 96 | .idea/**/dataSources.local.xml 97 | .idea/**/sqlDataSources.xml 98 | .idea/**/dynamic.xml 99 | .idea/**/uiDesigner.xml 100 | .idea/**/dbnavigator.xml 101 | 102 | # Gradle 103 | .idea/**/gradle.xml 104 | .idea/**/libraries 105 | 106 | # Gradle and Maven with auto-import 107 | # When using Gradle or Maven with auto-import, you should exclude module files, 108 | # since they will be recreated, and may cause churn. Uncomment if using 109 | # auto-import. 110 | # .idea/artifacts 111 | # .idea/compiler.xml 112 | # .idea/jarRepositories.xml 113 | # .idea/modules.xml 114 | # .idea/*.iml 115 | # .idea/modules 116 | # *.iml 117 | # *.ipr 118 | 119 | # CMake 120 | cmake-build-*/ 121 | 122 | # Mongo Explorer plugin 123 | .idea/**/mongoSettings.xml 124 | 125 | # File-based project format 126 | *.iws 127 | 128 | # IntelliJ 129 | out/ 130 | 131 | # mpeltonen/sbt-idea plugin 132 | .idea_modules/ 133 | 134 | # JIRA plugin 135 | atlassian-ide-plugin.xml 136 | 137 | # Cursive Clojure plugin 138 | .idea/replstate.xml 139 | 140 | # SonarLint plugin 141 | .idea/sonarlint/ 142 | 143 | # Crashlytics plugin (for Android Studio and IntelliJ) 144 | com_crashlytics_export_strings.xml 145 | crashlytics.properties 146 | crashlytics-build.properties 147 | fabric.properties 148 | 149 | # Editor-based Rest Client 150 | .idea/httpRequests 151 | 152 | # Android studio 3.1+ serialized cache file 153 | .idea/caches/build_file_checksums.ser 154 | 155 | ### JetBrains+all Patch ### 156 | # Ignore everything but code style settings and run configurations 157 | # that are supposed to be shared within teams. 158 | 159 | .idea/* 160 | 161 | !.idea/codeStyles 162 | !.idea/runConfigurations 163 | 164 | ### Linux ### 165 | 166 | # temporary files which can be created if a process still has a handle open of a deleted file 167 | .fuse_hidden* 168 | 169 | # KDE directory preferences 170 | .directory 171 | 172 | # Linux trash folder which might appear on any partition or disk 173 | .Trash-* 174 | 175 | # .nfs files are created when an open file is removed but is still being accessed 176 | .nfs* 177 | 178 | ### macOS ### 179 | # General 180 | .DS_Store 181 | .AppleDouble 182 | .LSOverride 183 | 184 | # Icon must end with two \r 185 | Icon 186 | 187 | 188 | # Thumbnails 189 | ._* 190 | 191 | # Files that might appear in the root of a volume 192 | .DocumentRevisions-V100 193 | .fseventsd 194 | .Spotlight-V100 195 | .TemporaryItems 196 | .Trashes 197 | .VolumeIcon.icns 198 | .com.apple.timemachine.donotpresent 199 | 200 | # Directories potentially created on remote AFP share 201 | .AppleDB 202 | .AppleDesktop 203 | Network Trash Folder 204 | Temporary Items 205 | .apdisk 206 | 207 | ### macOS Patch ### 208 | # iCloud generated files 209 | *.icloud 210 | 211 | ### Mercurial ### 212 | .hg/ 213 | .hgignore 214 | .hgsigs 215 | .hgsub 216 | .hgsubstate 217 | .hgtags 218 | 219 | ### SVN ### 220 | .svn/ 221 | 222 | ### Vim ### 223 | # Swap 224 | [._]*.s[a-v][a-z] 225 | !*.svg # comment out if you don't need vector files 226 | [._]*.sw[a-p] 227 | [._]s[a-rt-v][a-z] 228 | [._]ss[a-gi-z] 229 | [._]sw[a-p] 230 | 231 | # Session 232 | Session.vim 233 | Sessionx.vim 234 | 235 | # Temporary 236 | .netrwhist 237 | # Auto-generated tag files 238 | tags 239 | # Persistent undo 240 | [._]*.un~ 241 | 242 | ### VisualStudioCode ### 243 | .vscode/* 244 | !.vscode/settings.json 245 | !.vscode/tasks.json 246 | !.vscode/launch.json 247 | !.vscode/extensions.json 248 | !.vscode/*.code-snippets 249 | 250 | # Local History for Visual Studio Code 251 | .history/ 252 | 253 | # Built Visual Studio Code Extensions 254 | *.vsix 255 | 256 | ### VisualStudioCode Patch ### 257 | # Ignore all local history of files 258 | .history 259 | .ionide 260 | 261 | ### Windows ### 262 | # Windows thumbnail cache files 263 | Thumbs.db 264 | Thumbs.db:encryptable 265 | ehthumbs.db 266 | ehthumbs_vista.db 267 | 268 | # Dump file 269 | *.stackdump 270 | 271 | # Folder config file 272 | [Dd]esktop.ini 273 | 274 | # Recycle Bin used on file shares 275 | $RECYCLE.BIN/ 276 | 277 | # Windows Installer files 278 | *.cab 279 | *.msi 280 | *.msix 281 | *.msm 282 | *.msp 283 | 284 | # Windows shortcuts 285 | *.lnk 286 | 287 | ### VisualStudio ### 288 | ## Ignore Visual Studio temporary files, build results, and 289 | ## files generated by popular Visual Studio add-ons. 290 | ## 291 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 292 | 293 | # User-specific files 294 | *.rsuser 295 | *.suo 296 | *.user 297 | *.userosscache 298 | *.sln.docstates 299 | 300 | # User-specific files (MonoDevelop/Xamarin Studio) 301 | *.userprefs 302 | 303 | # Mono auto generated files 304 | mono_crash.* 305 | 306 | # Build results 307 | [Dd]ebug/ 308 | [Dd]ebugPublic/ 309 | [Rr]elease/ 310 | [Rr]eleases/ 311 | x64/ 312 | x86/ 313 | [Ww][Ii][Nn]32/ 314 | [Aa][Rr][Mm]/ 315 | [Aa][Rr][Mm]64/ 316 | bld/ 317 | [Bb]in/ 318 | [Oo]bj/ 319 | [Ll]og/ 320 | [Ll]ogs/ 321 | 322 | # Visual Studio 2015/2017 cache/options directory 323 | .vs/ 324 | # Uncomment if you have tasks that create the project's static files in wwwroot 325 | #wwwroot/ 326 | 327 | # Visual Studio 2017 auto generated files 328 | Generated\ Files/ 329 | 330 | # MSTest test Results 331 | [Tt]est[Rr]esult*/ 332 | [Bb]uild[Ll]og.* 333 | 334 | # NUnit 335 | *.VisualState.xml 336 | TestResult.xml 337 | nunit-*.xml 338 | 339 | # Build Results of an ATL Project 340 | [Dd]ebugPS/ 341 | [Rr]eleasePS/ 342 | dlldata.c 343 | 344 | # Benchmark Results 345 | BenchmarkDotNet.Artifacts/ 346 | 347 | # .NET Core 348 | project.lock.json 349 | project.fragment.lock.json 350 | artifacts/ 351 | 352 | # ASP.NET Scaffolding 353 | ScaffoldingReadMe.txt 354 | 355 | # StyleCop 356 | StyleCopReport.xml 357 | 358 | # Files built by Visual Studio 359 | *_i.c 360 | *_p.c 361 | *_h.h 362 | *.ilk 363 | *.meta 364 | *.obj 365 | *.iobj 366 | *.pch 367 | *.pdb 368 | *.ipdb 369 | *.pgc 370 | *.pgd 371 | *.rsp 372 | *.sbr 373 | *.tlb 374 | *.tli 375 | *.tlh 376 | *.tmp 377 | *.tmp_proj 378 | *_wpftmp.csproj 379 | *.log 380 | *.tlog 381 | *.vspscc 382 | *.vssscc 383 | .builds 384 | *.pidb 385 | *.svclog 386 | *.scc 387 | 388 | # Chutzpah Test files 389 | _Chutzpah* 390 | 391 | # Visual C++ cache files 392 | ipch/ 393 | *.aps 394 | *.ncb 395 | *.opendb 396 | *.opensdf 397 | *.sdf 398 | *.cachefile 399 | *.VC.db 400 | *.VC.VC.opendb 401 | 402 | # Visual Studio profiler 403 | *.psess 404 | *.vsp 405 | *.vspx 406 | *.sap 407 | 408 | # Visual Studio Trace Files 409 | *.e2e 410 | 411 | # TFS 2012 Local Workspace 412 | $tf/ 413 | 414 | # Guidance Automation Toolkit 415 | *.gpState 416 | 417 | # ReSharper is a .NET coding add-in 418 | _ReSharper*/ 419 | *.[Rr]e[Ss]harper 420 | *.DotSettings.user 421 | 422 | # TeamCity is a build add-in 423 | _TeamCity* 424 | 425 | # DotCover is a Code Coverage Tool 426 | *.dotCover 427 | 428 | # AxoCover is a Code Coverage Tool 429 | .axoCover/* 430 | !.axoCover/settings.json 431 | 432 | # Coverlet is a free, cross platform Code Coverage Tool 433 | coverage*.json 434 | coverage*.xml 435 | coverage*.info 436 | 437 | # Visual Studio code coverage results 438 | *.coverage 439 | *.coveragexml 440 | 441 | # NCrunch 442 | _NCrunch_* 443 | .*crunch*.local.xml 444 | nCrunchTemp_* 445 | 446 | # MightyMoose 447 | *.mm.* 448 | AutoTest.Net/ 449 | 450 | # Web workbench (sass) 451 | .sass-cache/ 452 | 453 | # Installshield output folder 454 | [Ee]xpress/ 455 | 456 | # DocProject is a documentation generator add-in 457 | DocProject/buildhelp/ 458 | DocProject/Help/*.HxT 459 | DocProject/Help/*.HxC 460 | DocProject/Help/*.hhc 461 | DocProject/Help/*.hhk 462 | DocProject/Help/*.hhp 463 | DocProject/Help/Html2 464 | DocProject/Help/html 465 | 466 | # Click-Once directory 467 | publish/ 468 | 469 | # Publish Web Output 470 | *.[Pp]ublish.xml 471 | *.azurePubxml 472 | # Note: Comment the next line if you want to checkin your web deploy settings, 473 | # but database connection strings (with potential passwords) will be unencrypted 474 | *.pubxml 475 | *.publishproj 476 | 477 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 478 | # checkin your Azure Web App publish settings, but sensitive information contained 479 | # in these scripts will be unencrypted 480 | PublishScripts/ 481 | 482 | # NuGet Packages 483 | *.nupkg 484 | # NuGet Symbol Packages 485 | *.snupkg 486 | # The packages folder can be ignored because of Package Restore 487 | **/[Pp]ackages/* 488 | # except build/, which is used as an MSBuild target. 489 | !**/[Pp]ackages/build/ 490 | # Uncomment if necessary however generally it will be regenerated when needed 491 | #!**/[Pp]ackages/repositories.config 492 | # NuGet v3's project.json files produces more ignorable files 493 | *.nuget.props 494 | *.nuget.targets 495 | 496 | # Microsoft Azure Build Output 497 | csx/ 498 | *.build.csdef 499 | 500 | # Microsoft Azure Emulator 501 | ecf/ 502 | rcf/ 503 | 504 | # Windows Store app package directories and files 505 | AppPackages/ 506 | BundleArtifacts/ 507 | Package.StoreAssociation.xml 508 | _pkginfo.txt 509 | *.appx 510 | *.appxbundle 511 | *.appxupload 512 | 513 | # Visual Studio cache files 514 | # files ending in .cache can be ignored 515 | *.[Cc]ache 516 | # but keep track of directories ending in .cache 517 | !?*.[Cc]ache/ 518 | 519 | # Others 520 | ClientBin/ 521 | ~$* 522 | *.dbmdl 523 | *.dbproj.schemaview 524 | *.jfm 525 | *.pfx 526 | *.publishsettings 527 | orleans.codegen.cs 528 | 529 | # Including strong name files can present a security risk 530 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 531 | #*.snk 532 | 533 | # Since there are multiple workflows, uncomment next line to ignore bower_components 534 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 535 | #bower_components/ 536 | 537 | # RIA/Silverlight projects 538 | Generated_Code/ 539 | 540 | # Backup & report files from converting an old project file 541 | # to a newer Visual Studio version. Backup files are not needed, 542 | # because we have git ;-) 543 | _UpgradeReport_Files/ 544 | Backup*/ 545 | UpgradeLog*.XML 546 | UpgradeLog*.htm 547 | ServiceFabricBackup/ 548 | *.rptproj.bak 549 | 550 | # SQL Server files 551 | *.mdf 552 | *.ldf 553 | *.ndf 554 | 555 | # Business Intelligence projects 556 | *.rdl.data 557 | *.bim.layout 558 | *.bim_*.settings 559 | *.rptproj.rsuser 560 | *- [Bb]ackup.rdl 561 | *- [Bb]ackup ([0-9]).rdl 562 | *- [Bb]ackup ([0-9][0-9]).rdl 563 | 564 | # Microsoft Fakes 565 | FakesAssemblies/ 566 | 567 | # GhostDoc plugin setting file 568 | *.GhostDoc.xml 569 | 570 | # Node.js Tools for Visual Studio 571 | .ntvs_analysis.dat 572 | node_modules/ 573 | 574 | # Visual Studio 6 build log 575 | *.plg 576 | 577 | # Visual Studio 6 workspace options file 578 | *.opt 579 | 580 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 581 | *.vbw 582 | 583 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 584 | *.vbp 585 | 586 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 587 | *.dsw 588 | *.dsp 589 | 590 | # Visual Studio 6 technical files 591 | 592 | # Visual Studio LightSwitch build output 593 | **/*.HTMLClient/GeneratedArtifacts 594 | **/*.DesktopClient/GeneratedArtifacts 595 | **/*.DesktopClient/ModelManifest.xml 596 | **/*.Server/GeneratedArtifacts 597 | **/*.Server/ModelManifest.xml 598 | _Pvt_Extensions 599 | 600 | # Paket dependency manager 601 | .paket/paket.exe 602 | paket-files/ 603 | 604 | # FAKE - F# Make 605 | .fake/ 606 | 607 | # CodeRush personal settings 608 | .cr/personal 609 | 610 | # Python Tools for Visual Studio (PTVS) 611 | __pycache__/ 612 | *.pyc 613 | 614 | # Cake - Uncomment if you are using it 615 | # tools/** 616 | # !tools/packages.config 617 | 618 | # Tabs Studio 619 | *.tss 620 | 621 | # Telerik's JustMock configuration file 622 | *.jmconfig 623 | 624 | # BizTalk build output 625 | *.btp.cs 626 | *.btm.cs 627 | *.odx.cs 628 | *.xsd.cs 629 | 630 | # OpenCover UI analysis results 631 | OpenCover/ 632 | 633 | # Azure Stream Analytics local run output 634 | ASALocalRun/ 635 | 636 | # MSBuild Binary and Structured Log 637 | *.binlog 638 | 639 | # NVidia Nsight GPU debugger configuration file 640 | *.nvuser 641 | 642 | # MFractors (Xamarin productivity tool) working folder 643 | .mfractor/ 644 | 645 | # Local History for Visual Studio 646 | .localhistory/ 647 | 648 | # Visual Studio History (VSHistory) files 649 | .vshistory/ 650 | 651 | # BeatPulse healthcheck temp database 652 | healthchecksdb 653 | 654 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 655 | MigrationBackup/ 656 | 657 | # Ionide (cross platform F# VS Code tools) working folder 658 | .ionide/ 659 | 660 | # Fody - auto-generated XML schema 661 | FodyWeavers.xsd 662 | 663 | # VS Code files for those working on multiple tools 664 | *.code-workspace 665 | 666 | # Local History for Visual Studio Code 667 | 668 | # Windows Installer files from build outputs 669 | 670 | # JetBrains Rider 671 | *.sln.iml 672 | 673 | ### VisualStudio Patch ### 674 | # Additional files built by Visual Studio 675 | 676 | # End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,jetbrains+all,vim,emacs,visualstudio,visualstudiocode,git,svn,mercurial -------------------------------------------------------------------------------- /debian/frps/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM --platform=$BUILDPLATFORM snowdreamtech/golang:1.23.5-bookworm AS builder 2 | 3 | ARG TARGETOS 4 | ARG TARGETARCH 5 | 6 | # Switch to the user 7 | USER root 8 | 9 | # Set the workdir 10 | WORKDIR /root 11 | 12 | ENV FRP_VERSION=0.62.1 13 | 14 | RUN set -eux \ 15 | && apt-get -qqy update \ 16 | && apt-get -qqy install --no-install-recommends \ 17 | make \ 18 | && wget -c https://github.com/fatedier/frp/archive/refs/tags/v${FRP_VERSION}.tar.gz \ 19 | && tar zxvf v${FRP_VERSION}.tar.gz \ 20 | && cd frp-${FRP_VERSION} \ 21 | && sed -i 's/CGO_ENABLED=0/CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH}/' Makefile \ 22 | && make \ 23 | && cp -rfv bin conf /root/ \ 24 | && apt-get -qqy --purge autoremove \ 25 | && apt-get -qqy clean \ 26 | && rm -rf /var/lib/apt/lists/* \ 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/tmp/* 29 | 30 | 31 | FROM snowdreamtech/debian:12.10.0 32 | 33 | # OCI annotations to image 34 | LABEL org.opencontainers.image.authors="Snowdream Tech" \ 35 | org.opencontainers.image.title="Frps Image Based On Debian" \ 36 | org.opencontainers.image.description="Docker Images for Frps On Debian. (i386,amd64,arm32v5,arm32v7,arm64,mips64le,ppc64le,s390x)" \ 37 | org.opencontainers.image.documentation="https://hub.docker.com/r/snowdreamtech/frps" \ 38 | org.opencontainers.image.base.name="snowdreamtech/frps:debian" \ 39 | org.opencontainers.image.licenses="MIT" \ 40 | org.opencontainers.image.source="https://github.com/snowdreamtech/frp" \ 41 | org.opencontainers.image.vendor="Snowdream Tech" \ 42 | org.opencontainers.image.version="0.62.1" \ 43 | org.opencontainers.image.url="https://github.com/snowdreamtech/frp" 44 | 45 | COPY --from=builder /root/bin/frps /usr/bin/ 46 | COPY --from=builder /root/conf/frps.toml /etc/frp/ 47 | 48 | ENTRYPOINT ["/usr/bin/frps"] 49 | 50 | CMD ["-c", "/etc/frp/frps.toml"] --------------------------------------------------------------------------------