Gitea Webhook 自动部署:零依赖实现 Astro 博客多端同步发布

简介: 该工具实现Gitea触发的Astro博客自动构建部署:推送代码后,Webhook服务自动拉取、安装依赖、构建并更新Nginx站点。零依赖、异步响应、systemd守护,彻底告别SSH手动操作。(239字)

之前我每次写完文章都要重复这些流程:SSH 登录服务器 -> 手动拉取代码 -> 等待 pnpm install 安装依赖 -> 执行 pnpm build 构建博客 -> 手动复制构建产物到 Nginx 目录。

在家里和公司两地办公的时候,这种重复性的机械劳动让人崩溃。


解决方案

项目地址https://github.com/moewah/gitea-astro-webhook

在多个地方(家里、公司)推送代码后,服务器上的 Webhook 服务会自动触发构建流程,拉取最新代码、安装依赖、构建博客,全程无需人工干预。

核心特点:

  • 零依赖: 仅使用 Node.js 原生模块,无需 npm install
  • 异步构建: 立即响应 Gitea,不超时
  • systemd 管理: 开机自启,崩溃自动重启

部署步骤

在部署之前,这里我先假设已经在服务器部署了 Gitea 个人代码托管服务,并在此服务器中有一个 Astro 等静态博客,下面的操作指引帮助你实现从家里及公司的电脑中随时随地的发布管理文章。

1. 克隆项目到服务器

Terminal window

# SSH 登录服务器

ssh root@your-server

cd /opt

git clone https://github.com/moewah/gitea-astro-webhook.git

2. 配置环境变量

Terminal window

# 进入服务器项目目录cd /opt/gitea-astro-webhook
# 复制配置文件cp .env.example .env
# 编辑配置nano .env

配置示例

Terminal window显示更多

# Webhook 服务端口PORT=28080
# Gitea Webhook 密钥WEBHOOK_SECRET=your-webhook-secret-here
# 博客项目路径BLOG_PATH=/home/wwwroot/blog
# Git 仓库地址(SSH 格式)GIT_REPO=ssh://git@git.example.com:222/username/blog.git
# 监听的 Git 分支GIT_BRANCH=main
# 日志级别:info | errorLOG_LEVEL=info

显示更多

生成密钥

Terminal window

openssl rand -hex 32

将生成的密钥粘贴到 WEBHOOK_SECRET

3. 配置 systemd 服务

Terminal window

# 修改服务文件中的路径

nano gitea-astro-webhook.service

将以下三个路径改为实际路径:

  • WorkingDirectory=/opt/gitea-astro-webhook
  • ExecStart=/usr/bin/node /opt/gitea-astro-webhook/webhook.js
  • EnvironmentFile=/opt/gitea-astro-webhook/.env

Terminal window

# 安装服务sudo cp gitea-astro-webhook.service /etc/systemd/system/
# 重新加载 systemdsudo systemctl daemon-reload
# 启动服务sudo systemctl start gitea-astro-webhook
# 设置开机自启sudo systemctl enable gitea-astro-webhook
# 查看服务状态sudo systemctl status gitea-astro-webhook

4. 配置 Nginx 反向代理

Terminal window

# 编辑你的 Nginx 配置文件

nano /etc/nginx/conf.d/blog.example.com.conf

添加以下配置:

location /webhook {    proxy_pass http://127.0.0.1:28080/webhook;
    # 传递必要的请求头    proxy_pass_request_headers on;    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_set_header X-Forwarded-Proto $scheme;
    # 传递 Gitea 签名头    proxy_set_header X-Gitea-Signature $http_x_gitea_signature;    proxy_set_header X-Gitea-Event $http_x_gitea_event;
    # 增加超时时间    proxy_connect_timeout 600s;    proxy_send_timeout 600s;    proxy_read_timeout 600s;
    # 禁用缓冲    proxy_buffering off;}

显示更多

Terminal window

# 测试并重启 Nginx

sudo nginx -t

sudo systemctl restart nginx

5. 测试服务

Terminal window

# 健康检查curl http://localhost:28080/health
# 通过 Nginx 测试 Webhook 端点curl https://blog.example.com/webhook
# 查看日志sudo journalctl -u gitea-astro-webhook -f

6. 配置 Gitea Webhook

在 Gitea 中:

  1. 打开仓库 → 设置Webhooks
  2. 添加 Webhook:
    • URLhttps://blog.example.com/webhook
    • Content Typeapplication/json
    • Secret:粘贴 .env 中的 WEBHOOK_SECRET
    • Events:Push Events
    • Branch: main

验证部署

在本地电脑推送测试代码:

如果是 Astro,注意测试时上传的文章 Frontmatter 属性要符合规范要求,Astro 对这一块校验很严格。

Terminal window

cd /path/to/your/blog

echo "test $(date)" > test.md

git add test.md

git commit -m "test: 测试自动部署"

git push origin main

在服务器查看日志:

Terminal window

sudo journalctl -u gitea-astro-webhook -f

故障排查

  1. 签名验证失败:检查 Gitea 和 .env 中的 WEBHOOK_SECRET 是否完全一致。
  2. Git 拉取失败:测试 SSH 连接 ssh -T -p 222 git@git.example.com
  3. 服务无法启动:检查 Node.js 版本(需要 >= 18.0.0),手动启动测试 node webhook.js

扩展阅读

也许刚开始接触 Git 命令有点懵 —— 这一大堆命令要记到什么时候?但其实,你只需要掌握几个基础操作就完全够用了。我整理了一份 超实用的👉 《Git 常用命令速查与使用详解》

一旦你上手了,就会真香 —— Git 真的超级顺手,commit、push、pull 这几个命令敲多了,根本不用过脑子就完成了。

而且,最骚的来了:当你把这个流程调通之后,你完全可以自己写个 SKILL 交给 OpenClaw 来帮你自动发布内容。想想就很美对吧?

目录
相关文章
|
6天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4333 17
|
17天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
14942 138
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
5天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
3104 8
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
7天前
|
人工智能 自然语言处理 数据挖掘
零基础30分钟搞定 Claude Code,这一步90%的人直接跳过了
本文直击Claude Code使用痛点,提供零基础30分钟上手指南:强调必须配置“工作上下文”(about-me.md+anti-ai-style.md)、采用Cowork/Code模式、建立标准文件结构、用提问式提示词驱动AI理解→规划→执行。附可复制模板与真实项目启动法,助你将Claude从聊天工具升级为高效执行系统。
|
6天前
|
人工智能 定位技术
Claude Code源码泄露:8大隐藏功能曝光
2026年3月,Anthropic因配置失误致Claude Code超51万行源码泄露,意外促成“被动开源”。代码中藏有8大未发布功能,揭示其向“超级智能体”演进的完整蓝图,引发AI编程领域震动。(239字)
2456 9