首页
关于
Search
1
AdGuardHome 安装及部署教程
47,834 阅读
2
关于微软Azure学生白嫖指南
12,188 阅读
3
Oracle开放全部端口并关闭防火墙
12,177 阅读
4
搭建基于telegram的无限网盘
11,541 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
10,198 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
找到
2
篇与
Github Action
相关的结果
2025-09-22
RustDesk 通过 API 防止服务器被滥用 自动编译将服务器等信息内置客户端
RustDesk 通过 API 防止服务器被滥用 自动编译将服务器等信息内置客户端 原文地址 https://smianao.com/1414.htmlimage图片 引言 现在,Github 无法通过设置变量,将服务器等信息编译进客户端!这可能是作者更新了源码,或者 Github 升级的缘故!同时,可以通过 API,控制客户端的使用,防止服务器被滥用 服务端及 API 安装 若想通过 API,控制 RustDesk 客户端使用,我们用到 Github 大佬 lejianwen 修改的服务端源码,以及该大佬开源的 API 项目。 服务器后台开放端口 1Panel 安装好后,按住 Ctrl 点击这个地址,即可访问 1Panel 面板。多数情况,不能正常访问,我们还需要在服务器后台,开放该端口。同时,我们将 rustdesk 服务端及 API 用到的端口,也一并开启。这类教程,鼠标也讲了很多次,不会的,看这期视频,这里以阿里云为例,进行操作演示。 开放端口列表: TCP:21114-21119,6666(1Panel 自定义端口) UDP:21116Compose 一键部署 RustDesk 服务端及 API 访问 1Panel 面板,左侧导航点击容器,编排 - 创建编排,名称随意,便于区分就好,粘贴如下代码: networks: rustdesk-net: external: false services: rustdesk: ports: - 21114:21114 - 21115:21115 - 21116:21116 - 21116:21116/udp - 21117:21117 - 21118:21118 - 21119:21119 image: lejianwen/rustdesk-server-s6:latest environment: - RELAY=<relay_server[:port]> - ENCRYPTED_ONLY=1 - MUST_LOGIN=N - TZ=Asia/Shanghai - RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]> - RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]> - RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]> - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub - RUSTDESK_API_JWT_KEY=xxxxxx # jwt key volumes: - /data/rustdesk/server:/data - /data/rustdesk/api:/app/data #将数据库挂载 networks: - rustdesk-net restart: unless-stopped参数提示: RELAY=<relay_server[:port]> #中继服务器:21117 MUST_LOGIN=N #默认为 N,设置为 Y 则必须登录才能链接 RUSTDESK_API_RUSTDESK_ID_SERVER=<id_server[:21116]> #ID 服务器 RUSTDESK_API_RUSTDESK_RELAY_SERVER=<relay_server[:21117]> #中继服务器 RUSTDESK_API_RUSTDESK_API_SERVER=http://<api_server[:21114]> #API 服务器 RUSTDESK_API_JWT_KEY=xxxxxx #随便设置个字符串 /data/rustdesk/server #查看 key点击确定,等待拉取 docker 镜像,出现这个提示,意味着 rustdesk 服务端及 API 部署完成。一个 compose 文件,将 rustdesk 服务端,以及 API 都安装好了,服务端是作者基于原版修改,目的是更兼容作者的第三方 API,同时也添加了一些功能,譬如,只有登录客户端,才能发起远程连接,这就有效杜绝客户端被滥用的情况。 通过 docker 挂载的路径,可以查看客户端所用的 key。 API 登录地址为服务器 IP:21114, 用户名默认是 admin,密码可以通过刚部署的容器里日志查看,登录 API 后台后,切记及时修改密码。 ./apimain reset-admin-pwd < 你的新密码 >测试部署的服务端及 API 将服务器、API,以及 Key 等信息填入 rustdesk 客户端,进行远程连接测试,不出意外的情况,一切都正常,确定不登录客户端的情况,无法发起远程协助。 通过 Github Action 编译 rustdesk 利用 Github 的环境变量,将服务器等信息,编译到客户端,现在已经失效,无法将服务器等信息编译到 rustdesk 客户端。上一步,我们已经部署好了 rustdesk 的服务端及 API,接下来,鼠标将通过修改源码的方式,将服务器等信息,保存到客户端源码,并用 Github 的 Actions 自动编译客户端。 修改源码准备工作 修改 rustdesk 源码,我们用到 Git,用来克隆源码到本地修改,并且推送修改后的源码。因为 rustdesk 源码包含子模块,鼠标不会直接在 Github 上修改,所以只能采取 git 的方式。还有就是代码编辑器,使用更好用更美观的 HBuilder X git 下载安装 软件官网下载 git,全程选项保持默认下一步即可。安装好后,通过终端输入 git 命令,测试安装是否成功。 Fork 或者 import rustdesk 项目 Github 注册登录账号,import rustdesk 及子模块项目到自己的账号下。rustdesk 项目 代码页,点击 libs 后再点击这个 hbb,即可跳转到该 子模块项目,直接 import 到自己账号下即可。(建议 import 并设置不公开,因为后面如果需要固定被控端密码的话,你的密码会以明文的形式公开在自己名下的仓库中) 配置 github SSHkey 想要正常克隆推送 github 源码,我们需要配置 github 的 sshkey,以此对接 git 和 github。任务栏搜索框,搜索 git bash 并运行。在 git bash 代码框,依次输入如下代码并执行: # 配置 Git 的用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" #生成密钥(一直回车直至这个界面)ssh-keygen -t rsa -C "邮箱" #查看公钥 cat ~/.ssh/id_rsa.pub打开 github 个人中心 - 设置,左侧导航点击 SSH and GPG keys,再点击 New SSH key,标题随意,将 git bash 窗口公钥复制到 key 这里,最后点击 这里添加保存。 打开 Windows 终端或者 git bash,运行如下代码,测试是否可以成功链接 gtihub # 测试连接 github ssh -T git@github.com终端询问是否继续连接,输入 Yes 回车确认,出现这个提示,就意味着我们通过 SSH 方式,可以正常连接 gtihub。 克隆主项目并配置子模块 本地任意目录,运行 Windows 终端或者 git bash,复制我们 fork 的 rustdesk 项目 SSH 地址,终端输入如下命令 +SSH 地址,将 RustDesk 源码仓库克隆到本地。 git clone --recurse-submodules <SSH 地址 > #--recurse-submodules 参数,递归克隆子模块修改子模块路径 输入如下命令,进入主仓库目 cd RestDesk修改主目录下. gitmodules 文件,将原作者的子模块 URL 替换为我们 Fork 的 地址,运行 HBuilder X,将文件直接拖放到 HBuilder X 主窗口,修改替换如下内容: [submodule "libs/hbb_common"] path = libs/hbb_common url = < 替换为我们 fork 的 hbb_common 项目地址 >同步子模块地址 git submodule sync提交修改后的代码,并推送到主仓库: git add .gitmodules git commit -m "更新所有子模块地址至我的 Fork(备注内容)" git push origin < 主仓库分支名,默认 master>修改 ID/ 中继服务器 进入子模块文件夹 cd libs/hbb_common配置子模块并创建新分支 git checkout -b < 新建分支名 >修改子模块源码 libs\hbb_common\src\config.rs #修改该文件的 101-102 行,分别是服务器及 KEY原代码: pub const RENDEZVOUS_SERVERS: &[&str] = &["rs-ny.rustdesk.com"]; pub const RS_PUB_KEY: &str = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";pub const RENDEZVOUS_SERVERS: &[&str] = &["<自己的id_server>,不带端口"]; pub const RS_PUB_KEY: &str = "<自己的id_ed25519.pub>";或者找到 HARD_SETTINGS 字段 将那一整行替换为如下代码块: pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = { let mut map = HashMap::new(); map.insert("password".to_string(), "<明文填写你要固定的被控端密码>".to_string()); RwLock::new(map) };提交修改后的代码,并推送到子模块仓库: git add . git commit -m "改为自己的 ID/ 中继服务器" git push origin < 新建的分支名 > # 推送分支到我们子模块 Fork(hbb_common 仓库的相关改动直接在网页修改也可以) 返回主仓库主目录: cd ../../..更新子模块的 Commit ID: git add libs/hbb_common # 提交子模块的新 Commit git commit -m "更新修改后的子模块" git push origin < 主仓库分支名 >配置主项目文件 修改替换 API 地址 仓库主目录,修改如下文件:src\common.rs #1027 行替换 API 地址 可以通过搜索get_custom_rendezvous_server,然后往下翻找到.to_owned(),替换前面的URL即可 let s0 = get_custom_rendezvous_server(custom); if !s0.is_empty() { let s = crate::increase_port(&s0, -2); if s == s0 { return format!("http://{}:{}", s, config::RENDEZVOUS_PORT - 2); } else { return format!("http://{}", s); } } "https://admin.rustdesk.com".to_owned() }提交修改并推送到主仓库: git add . git commit -m "修改替换 API 地址" git push origin < 主仓库分支名,默认 master>删除客户端广告提示 仓库主目录,修改如下文件: 打开flutter/lib/desktop/pages/connection_page.dart 原代码为: #原代码为: setupServerWidget() => Flexible( child: Offstage( offstage: !(!_svcStopped.value && stateGlobal.svcStatus.value == SvcStatus.ready && _svcIsUsingPublicServer.value), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text(', ', style: TextStyle(fontSize: em)), Flexible( child: InkWell( onTap: onUsePublicServerGuide, child: Row( children: [ Flexible( child: Text( translate('setup_server_tip'), style: TextStyle( decoration: TextDecoration.underline, fontSize: em), ), ), ], ), ), ) ], ), ), );81-110 行代码替换如下: Widget setupServerWidget() => Flexible( child: Offstage( offstage: !(!_svcStopped.value && stateGlobal.svcStatus.value == SvcStatus.ready && _svcIsUsingPublicServer.value), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [], ), ), );提交修改并推送到主仓库: git add . git commit -m "修改删除客户端广告" git push origin < 主仓库分支名,默认 master>git clone 你自己名下的 rustdesk 仓库到本地,首先删除官方源码中的引用 hbb_common 子模块(直接在本地删除 libs/hbb_common 那个空文件夹即可) cd 到本地 rustdesk 仓库根目录,添加上面自己修改过的 hbb_common 子模块 git submodule add https://github.com/<你自己的github用户名>/hbb_common libs/hbb_common替换过子模块后 push,再输一次如下指令强制更新子模块 git submodule syncGithub Action开始编译 在 <自己名下的>/rustdesk 项目,找到 Settings → Actions → General,确保勾选 Allow all actions and reusable workflows 和 Read and write permissions 两项 回到本地 rustdesk 仓库,创建一个 tag git tag -a <自己拟一个tag名> -m "这是我的自定义客户端tag"在 <自己名下的>/rustdesk 项目,找到 Actions,点击 "i understand xxxx" 那个按钮,回到本地 rustdesk 仓库,输入 git push --tags将刚才新创建的标签同步到远程仓库 在 Action 页面中,选择 Flutter Nightly Build, 并点开 branch 下拉,选择刚才创建的标签 image图片
技术搬砖
# Github Action
# rustdesk
# 编译
# rustdesk-api
admin
9月22日
0
12
0
2023-08-11
Github Action自动化部署Hexo博客和Qexo管理后台
一、Hexo博客搭建 Hexo是个快速、简洁且高效的博客框架,它是一款基于Node.js的静态博客生成程序,作者是中国台湾tommy351。它的安装运行等甚至生成文章页面 生成目录,网站配置都是在爱代码模式下进行的。还有就是要学会使用Hexo,就得学会使用Git,并且对Git常用基础命令要有所了解,还有就是需要安装Node.js,这个软件是Hexo本地搭建必不可少的工具,值得一提的是Hexo博客可以部署到GitHub、Gitee、GitLab、Coding、七牛,都是完全免费的,可以让你实现免服务器,免域名搭建一个完整的博客。1、安装git Git是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。也就是用来管理你的hexo博客文章,上传到GitHub的工具。 Windows:下载并安装 git:https://git-scm.com/download/win 对于中国大陆地区用户,可以前往 淘宝 Git for Windows 镜像 下载 git 安装包。 Linux (Ubuntu, Debian):sudo apt-get install git-core Linux (Fedora, Red Hat, CentOS):sudo yum install git-core 2、安装nodejs Hexo是基于nodeJS编写的,所以需要安装一下nodeJs和里面的npm工具。 windows:打开nodejs:https://nodejs.org/en/download/ 选择LTS版本。 linux:安装完后,打开命令行 sudo apt-get install nodejs sudo apt-get install npm然后检查一下有没有安装成功 node -v npm -v3、安装Hexo 先创建一个文件夹blog,在这个文件夹下的空白地方,右键git bash打开【Windows】,【Linux】如下 mkdir blog cd blog然后安装hexo npm install -g hexo-cli然后初始化hexo,这个hexoblog可以随便填 hexo init hexoblog用cd进入hexoblig里(或者直接打开这个文件夹,在空白地方右键 *git bash打开* ) cd hexoblog这个时候hexoblog文件夹里有指定文件夹目录下有: node_modules: 依赖包 public:存放生成的页面 scaffolds:生成文章的一些模板 source:用来存放你的文章 themes:主题 _config.yml: 博客的配置文件 db.json:source解析所得到的 package.json:项目所需模块项目的配置信息然后本地运行测试一下 hexo g hexo s**hexo generate 顾名思义,生成静态文章,可以用 hexo g缩写 hexo server 顾名思义,启动服务 本地运行,可以用 hexo s缩写** img图片 在浏览器输入 localhost:4000 就可以看到你生成的博客了。 使用ctrl+c可以把服务关掉 4.在GitHub创建一个放博客文件的仓库 没有账号的注册一个,登录后,点击右上角New repository img图片 创建一个和你用户名相同的仓库,后面加.github.io,只有这样,将来要部署到GitHub page的时候,才会被识别,也就是xxx.github.io,其中xxx就是你注册GitHub的用户名。我这里是已经建过了。点击create repository。 img图片 img图片 5. 生成SSH添加到GitHub 在博客hexoblog根目录 右键点击 Git Bash Here git config --global user.name "yourname" git config --global user.email "youremail" ssh-keygen -t rsa -C "youremail"找到这个文件夹。打开 id_rsa.pub 其中,id_rsa是你这台电脑的私人秘钥,不能给别人看的,id_rsa.pub是公共秘钥,可以随便给别人看。把这个公钥放在GitHub上,这样当你链接GitHub自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,才能够顺利的通过git上传你的文件到GitHub上。 **点击GitHub的右上角setting中 -> 点击左边SSH and GPG keys -> 点击New SSH key title随便填,把C盘的id_rsa.pub里面的信息复制到key里。** img图片 img图片 img图片 查看是否成功 ssh -T git@github.com这个时候要输入一次yes,如果前面生成ssh时设置了密码,需要输入密码,然后再回车 6. 将hexo部署到GitHub 打开站点配置文件 _config.yml,拉到最后,修改为1422756921就是你的GitHub账户 deploy: type: git repo: git@github.com:1422756921/1422756921.github.io.git branch: main注意:现在GitHub的默认分支已经是main了,不是master !!!! 这个时候需要先安装deploy-git ,也就是部署的命令,这样你才能用命令部署到GitHub npm install hexo-deployer-git --save然后其中hexo clean清除了你之前生成的东西,hexo deploy 部署文章,可以用hexo d缩写 hexo clean hexo g hexo deploy输入hexo deploy之后会出现一个小弹窗,要你输入GitHub的username和password。(用户名是邮箱) 二、Github Actions自动化部署 Hexo博客 简单说,就是把hexo博客编译前的源代码上传到github代码仓库,Action在代码发生变动的时候,自动通过安装一系列nodejs环境和相关依赖,编译生成html页面到github pages仓库。 再简单点说,就是把本地生成博客的工作,全部交给Action执行。 好处就是随时随地都能修改或增加博文 1、先建一个私有仓库(自动化仓库) 先建一个私有仓库(myhexo),这个仓库存放的是编译前的文件,也就是你电脑本地的文件,这个仓库是拿来做自动化的 img图片 也就是一共两个仓库 一个公有仓库存编译好的hexo(pages仓库,用户名例如是1422756921.github.io) 一个私有仓库存本地电脑编译前的文件(自动化仓库,用户名是myhexo) 2、上传编译前的代码 创建完私有仓库后,在本地博客文件中复制几个文件到另外一个文件夹,其中包括.github,scaffolds,source,themes,_config.yml,package.json,package-lock.json img图片 还有一个很重要的一步:打开themes/bamboo主题模板文件,主题源码.git文件删除,Hexo博客根目录修改配置文件使用bamboo主题 img图片 然后回到myhexo根目录右键打开git bash img图片 git init #把这个目录变成Git可以管理的仓库 git add . #添加当前目录文件到缓存区(别漏命令后面的点) git commit -m "first commit" #提交缓存区内容到本地库,并备注first commit #下面两条命令二选一,就行了 git remote add origin https://github.com/用户名/自动化仓库名.git #利用https关联远程仓库 git remote add origin git@github.com:用户名/自动化仓库名.git #利用ssh关联远程仓库 git push -u origin master #把本地库的所有内容推送到远程库上同样SSH和HTTPS均可。SSH在绑定过ssh key的设备上无需再输入密码,HTTPS则需要输入密码,但是SSH偶尔会遇到端口占用的情况。 3、获取 Github token 打开https://github.com/settings/tokens 点击 Generate new token 新建个 token img图片 note随便填,Expiration选择No expiration,勾选repo和workflow,其他没什么了,然后点生成就好了 img图片 把token复制下来 img图片 打开自动化仓库myhexo的Settings -> Secrets and variables -> Actions -> New repository secret img图片 一共有三个变量名GITHUBTOKEN,GITHUBUSERNAME,GITHUBEMAIL,逐一添加 img图片 变量名常量释义GITHUBMAILGithub 用户邮箱地址GITHUBTOKENGithub tokenGITHUBUSERNAMEGithub 用户名4、添加workflows 接下来点击Actions -> set up a workflow yourself img图片 复制以下代码到里面 name: 自动部署 on: push: branches: - master release: types: - published jobs: deploy: runs-on: ubuntu-latest steps: - name: 检查分支 uses: actions/checkout@v2 with: ref: master - name: 安装 Node uses: actions/setup-node@v1 with: node-version: "16.x" - name: 安装 Hexo run: | export TZ='Asia/Shanghai' npm install hexo-cli -g - name: 缓存 Hexo uses: actions/cache@v1 id: cache with: path: node_modules key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}} - name: 安装依赖 if: steps.cache.outputs.cache-hit != 'true' run: | npm install --save - name: 生成静态文件 run: | hexo clean hexo generate - name: 部署 #此处master:master 指从本地的master分支提交到远程仓库的master分支(不是博客的分支写master即可),若远程仓库没有对应分支则新建一个。如有其他需要,可以根据自己的需求更改。 run: | cd ./public git init git config --global user.name '${{ secrets.GITHUBUSERNAME }}' git config --global user.email '${{ secrets.GITHUBEMAIL }}' git add . git commit -m "${{ github.event.head_commit.message }} $(date +"%Z %Y-%m-%d %A %H:%M:%S") Updated By Github Actions" git push --force --quiet "https://${{ secrets.GITHUBUSERNAME }}:${{ secrets.GITHUBTOKEN }}@github.com/${{ secrets.GITHUBUSERNAME }}/${{ secrets.GITHUBUSERNAME }}.github.io.git" master:master # GitHub配置粘贴上去后点击Commit changes... img图片 就大功告成了,可以点击Actions查看运行进程了 img图片 最后,需要到GitHub pages那个仓库里面把默认页改成master就好了 img图片 三、搭建Hexo博客后台管理Qexo Qexo,一个快速、美观、强大的在线hexo管理器,支持使用 Vercel 零成本一键部署,,您只需要配置一个免费数据库。特色功能:自定义图床上传图片,在线配置编辑,在线页面管理,开放 API,自动检查更新,在线一键更新,快速接入友情链接,简单的说说短文,类似不算子的统计,自动填文章模板1、注册MongoDB 首先我们要去注册MongoDB来给Qexo提供数据库,选择Free计划 img图片 img图片 新建成功后会自动跳到”Security”的”Quickstart” 记住username,密码,之后需要连接数据库 image-20230811200842458图片 等待几分钟数据库新建完成后,允许所有IP段访问(0.0.0.0) image-20230811200943929图片 进入刚刚建立好的数据库总览页面,点击Connect image-20230811201051740图片 然后连接方式选择MangoDB Shell image-20230811201241934图片 img图片 2、部署到Vercel 点击下面的按钮部署,再选择GitHub存储库 部署到 Vercel图片 第一次部署会直接爆炸,问题不大,这是因为我们还没有设置数据库,请无视并重新进入项目, 在项目设置界面添加环境变量 Environment Variables img图片 照着下列表格来添加 名称意义示例MONGODB_HOSTMongoDB 数据库连接地址mongodb+srv://cluster0.xxxx.mongodb.netMONGODB_PORTMongoDB 数据库通信端口 默认应填写 2701727017MONGODB_USERMongoDB 数据库用户名chenruiMONGODB_DBMongoDB 数据库名Cluster0MONGODB_PASSMongoDB 数据库密码JWo0xxxxxxxx添加完之后到顶部的”Deployments”然后”Redeploy” img图片 3、初始化Qexo 若没有 Error 信息即可打开域名进入初始化引导 image-20230811201918647图片 img图片 之前于 Github 设置 生成的 Token (建议使用 Classic) 可以填以下栏目,需要 Repo & Workflow 下的权限 不建议给出所有权限 img图片 您的 Vercel 账户密钥 在 此处 生成 img图片 Qexo 部署所在项目的 ID 位于项目的 Settings -> General -> Project ID prj_xxxxxxxxxxxxx img图片 img图片 img图片 最终大功告成 祝你使用愉快
技术搬砖
# Github Action
# Hexo
# 博客
admin
2年前
0
969
0