如何在本地部署 Github Actions Runner,通过代理服务器正常运行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sn0wdr1am
V2EX    程序员

如何在本地部署 Github Actions Runner,通过代理服务器正常运行?

  •  
  •   sn0wdr1am 191 天前 2085 次点击
    这是一个创建于 191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,怎么部署 Github Actions Runner ,这个简单。

    难点就是:

    如果让这个 Github Actions Runner 在代理服务器后面能够正常运行?

    代码:( dev 分支) https://github.com/snowdreamtech/alpine

    Github Actions:( dev 的都是) https://github.com/snowdreamtech/alpine/actions

    第 1 条附言    190 天前
    灵光一现,顿悟了。

    关键点:

    1. 宿主机搭建的本地代理服务器,监听改成 0.0.0.0 ,而不是 127.0.0.1
    2. 代理服务器的 ip ,用 172.17.0.1 ,而不是 127.0.0.1 (为什么?因为 172.17.0.1 是 docker 容器内部网关。127.0.0.1 在容器内部,指向的是容器本身,而不是宿主机)
    3. 参考下面的博客,给 Docker 配置代理服务器地址(比如: http://172.17.0.1:1080)

    如何优雅的给 Docker 配置网络代理
    https://cloud.tencent.com/developer/article/1806455

    主要就这些了。
    困扰很久的问题,终于解决了。
    第 2 条附言    190 天前
    这件事情的意义,在于:

    1. 你可以在境内部署 Github Actions Self-hosted Runner.
    2. 你可以去咸鱼捡那些机顶盒,矿渣(玩客云等),树莓派,等设备(只要支持 docker ),本地部署 Github Actions Self-hosted Runner 。
    3.理论上,境内的云服务器也可以部署 Github Actions Self-hosted Runner.(不清楚会不会被监管)

    好了,现在 托管在 Github 的公开项目或者私有项目,可以通过 CI (持续集成),CD (持续部署) 跑起来。
    23 条回复    2025-04-03 10:31:25 +08:00
    defunct9
        1
    defunct9  
       191 天前
    开 ssh ,让我上去看看
    sn0wdr1am
        2
    sn0wdr1am  
    OP
       191 天前
    @defunct9

    这里有完整信息。

    代码:( dev 分支) https://github.com/snowdreamtech/alpine

    Github Actions:( dev 的都是) https://github.com/snowdreamtech/alpine/actions
    defunct9
        3
    defunct9  
       191 天前
    runner 跑起来,能访问 github 不就行了。代理设置好环境变量就行了吧。
    lomtom
        4
    lomtom  
       191 天前
    为什么要开代理,github action 本身就可以连通外网的,而且速度贼快
    luckyc
        5
    luckyc  
       191 天前
    1. 部署到香港,解决所有网络相关问题。
    2. 部署在国内,跟着官方的指导一步一步来,出问题把错误日志贴上来再问。
    sn0wdr1am
        6
    sn0wdr1am  
    OP
       191 天前
    @l4ever
    部署到境外,确实爽,一把梭,没压力。

    但是我想部署在境内,比如本地的小功耗设备里面。

    问题主要出在代理服务器的设置上。
    sn0wdr1am
        7
    sn0wdr1am  
    OP
       191 天前
    @lomtom 正常 github action 用的是微软的设备,有时间限制的。
    如果部署自己本地的主机,应该没时间限制。
    Mystery0
        8
    Mystery0  
       191 天前

    我给它配了代理的环境变量,代理服务端的机器是香港的机器,这样子能用,不过隔段时间看日志能看到偶尔会断,断了之后它自己重启又能连上
    Mystery0
        9
    Mystery0  
       191 天前
    sampeng
        10
    sampeng  
       191 天前
    别折腾了。。我折腾过。爽的时候很爽。。你急着 release 项目的时候,不好意思,连不上 github 拉代码。急死你。
    所以干脆切 gitlab 了。。再不折腾 github 的网络。github 除非公司有全局梯子,自己玩还是家里玩吧,公司级的,要用的时候出问题可麻烦了
    buffzty
        11
    buffzty  
       190 天前
    设置完 HTTP_PROXY,HTTPS_PROXY 就不会有任何问题了. 我就是部署在境内的,正常运行几年了
    go 项目一般 20s 内完成
    setup 2s, pull code 2s,build push image 5 s,helm 5s
    基本镜像就用官方的: actions/actions-runner:2.323.0
    Goooler
        12
    Goooler  
       190 天前
    开 tun 代理是最简单的,否则你还得分别处理 Shell, Npm, Gradle 等的代理
    sn0wdr1am
        13
    sn0wdr1am  
    OP
       190 天前
    @buffzty

    基本镜像就用官方的: actions/actions-runner:2.323.0

    这个是哪里的?是否可以给个地址。
    moefishtang
        15
    moefishtang  
       190 天前
    其实更一劳永逸的解决方法是想办法在本地搭建一个无墙网络环境,所有在这个网络下的设备默认可以连接外网。
    省的配置代理了,正常的部署流程中本来也不应该有这个步骤,默认你网络是畅通的
    sn0wdr1am
        16
    sn0wdr1am  
    OP
       190 天前
    @moefishtang
    这个是最基本的,要做的事情。

    下面这一步,不是必要的吗?

    3. 参考下面的博客,给 Docker 配置代理服务器地址(比如: http://172.17.0.1:1080)

    如何优雅的给 Docker 配置网络代理
    https://cloud.tencent.com/developer/article/1806455
    wind1986
        17
    wind1986  
       190 天前
    @moefishtang
    @sn0wdr1am #16 对, 比如开个 surge, runner 那台机器默认就自动过墙
    moefishtang
        18
    moefishtang  
       190 天前
    @sn0wdr1am #16 我知道,我的意思是,我先在本地创建一个无墙的网络环境,在这个网络下的设备无需配置代理就可以直接无限制访问互联网(例如直接把梯子装路由器上,开 TUN 模式)
    这样做就不用给 docker 容器或者系统中运行的任何其他服务一个个配置代理了,直接是无墙网络
    moefishtang
        19
    moefishtang  
       190 天前
    @sn0wdr1am #16 例如你在境外服务器上部署 docker ,难道你还需要配置代理嘛?
    sn0wdr1am
        20
    sn0wdr1am  
    OP
       190 天前
    @moefishtang 境外服务器,不需要任何配置,直接用。
    sn0wdr1am
        21
    sn0wdr1am  
    OP
       190 天前
    @moefishtang docker 要设置,是因为 docker buildx ,要额外设置。

    如何优雅的给 Docker 配置网络代理
    https://cloud.tencent.com/developer/article/1806455
    zhaojun1998
        22
    zhaojun1998  
       190 天前
    试过,但效果都不是很好,网络和性能都是问题,还有各种兼容性问题,你自己搭建的不一定和官方提供的环境一模一样。

    后来使用了第三方的 Github Actions Runner 服务,比官方的性能快好几倍,有免费额度,完全够用:

    https://www.ubicloud.com/use-cases/github-actions (amd64 arm64) 性能中上,还不错,免费 1250 分钟
    https://www.warpbuild.com/pricing (amd64 arm64 macos windows) 为数不多的提供 windows 还有免费额度的,免费 2000 分钟
    https://docs.blacksmith.sh/runners/pricing (amd64 arm64) 基于 Hetzner 超高性能服务器,免费 3000 分钟
    sn0wdr1am
        23
    sn0wdr1am  
    OP
       190 天前
    @zhaojun1998

    确实可能遇到这样的问题。

    自建的 Github Actions Runner 主要是给私有项目用的。
    开源项目直接用 Github 官方的 Github Actions Runner 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5800 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:17 PVG 14:17 LAX 23:17 JFK 02:17
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86