Pixiv - Ashima
574 字
3 分钟
通过GitAction自动部署Blog到家庭服务器
概述
服务器网络拓扑图大概为:
云服务器-frps → PVE-OpenWrt-frpc → PVE-OpenWrt-nginx → PVE-Ubuntu
具体操作
复制一份并修改Firefly主题自带的deploy.yml
name: Deploy to Pages Branchname: Deploy to Home Server
on: # 每次推送到 `master` 分支时触发这个"工作流程" # 如果你使用了别的分支名,请按需将 `master` 替换成你的分支名 push: branches: [ master ] # 允许你在 GitHub 上的 Actions 标签中手动触发此"工作流程" workflow_dispatch:
# 需要写入权限来推送到pages分支permissions: contents: write
jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout your repository using git uses: actions/checkout@v4
- name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20'
- name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 9.14.4 run_install: false
- name: Install dependencies run: pnpm install --no-frozen-lockfile
- name: Build site run: pnpm run build
- name: Create .nojekyll file run: touch dist/.nojekyll
- name: Deploy to pages branch uses: JamesIves/github-pages-deploy-action@v4 with: branch: pages # 部署到pages分支 folder: dist # Astro默认构建输出目录 clean: true # 清理目标分支中的旧文件 - name: Deploy to home server uses: burnett01/rsync-deployments@v8 with: switches: -avzr --delete path: dist/ remote_path: ${{ secrets.REMOTE_PATH }} # ex: /var/www/html/ remote_host: ${{ secrets.REMOTE_HOST }} # ex: example.com remote_port: ${{ secrets.REMOTE_PORT }} # ex: 22 remote_user: ${{ secrets.REMOTE_USER }} # ex: ubuntu remote_key: ${{ secrets.REMOTE_PRIVATE_KEY }}配置Ubuntu
1. 创建一个受限的新用户专门用于部署
su root #切换为rootadduser --comment "Blog-Deployer" blogdeploy
# outputinfo: Adding user `blogdeploy' ...info: Selecting UID/GID from range 1000 to 59999 ...info: Adding new group `blogdeploy' (1001) ...info: Adding new user `blogdeploy' (1001) with group `blogdeploy (1001)' ...info: Creating home directory `/home/blogdeploy' ...info: Copying files from `/etc/skel' ...New password:Retype new password:passwd: password updated successfullyinfo: Adding new user `blogdeploy' to supplemental / extra groups `users' ...info: Adding user `blogdeploy' to group `users' ...2. 创建blog专用的目录
mkdir -p /var/www/blogchown -chR blogdeploy:blogdeploy /var/www/blog
ls -l /var/wwwchmod +x /var/www/blog3. 配置SSH密钥登录
SSH密码登录对应用户创建密钥
ssh-keygen -C "blog-git-action"
# outputGenerating public/private ed25519 key pair.Enter file in which to save the key (/home/blogdeploy/.ssh/id_ed25519):Created directory '/home/blogdeploy/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/blogdeploy/.ssh/id_ed25519Your public key has been saved in /home/blogdeploy/.ssh/id_ed25519.pub将公钥加入信任,记得复制一份私钥
cat id_ed25519.pub >> authorized_keys按需锁定密码登录
passwd -l blogdeploy设置Github Repository secrets
REMOTE_PATH部署目录REMOTE_HOST连接主机REMOTE_PORT连接端口REMOTE_USER连接用户REMOTE_PRIVATE_KEY连接私钥
测试
尝试手动启动一下workflow,看看是否能够部署
References
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
通过GitAction自动部署Blog到家庭服务器
https://blog.cedon.cn/posts/system-ops/deploy-blog-via-git-action/ 最后更新于 2026-02-17,距今已过 64 天
部分内容可能已过时