一、为什么你需要这样一套组合?
如果你经常写一些小脚本、配置文件、爬虫、自动化任务,你可能会遇到几个烦恼:
- 代码散落在电脑、U盘、网盘里,版本混乱
- 想持续运行一个定时任务,却要一直开着电脑
- 每天刷几十个网站看更新,效率低还被迫看广告
这些问题的一个共同解法是:在自己家里放一台 7×24 小时运行的小服务器。而树莓派,就是成本极低、功耗极小、够用又好玩的选择。
本文将带你在一台树莓派上,部署三个开源工具:
- Gitea:轻量级代码仓库,就像你自己的 GitHub
- Drone:自动化流水线,代码推送后自动执行脚本
- RSSHub:将任意网站生成 RSS 订阅源,聚合信息
三者组合起来,你的树莓派就变成了:
个人代码中心 + 自动任务执行器 + 私有信息聚合器。
本文所有步骤均在一台 树莓派 4B(2GB 或 4GB 内存版) 上验证通过,操作系统为 Raspberry Pi OS Lite(64位)。其他型号(3B+、5)基本通用。
二、准备工作:树莓派基础环境
如果你还没有树莓派,建议购买一块 Raspberry Pi 4B(2GB 版本约 300 元,二手更便宜),再配一张 32GB 以上的 microSD 卡和一个 5V/3A 电源。
如果你已经有树莓派,请确保:
- 已烧录好 Raspberry Pi OS Lite(无桌面环境,省资源)
- 已启用 SSH(在 boot 分区放一个空 ssh 文件)
- 树莓派已连上家里网络,你能通过
ssh pi@树莓派IP登录
本文不需要公网 IP,也不需要配置 DNS。所有服务仅运行在家庭局域网内。如果你希望外网访问,可以日后自行搜索内网穿透或 IPv6,但不是本文内容。
登录后,先执行更新:
bash
sudo apt update && sudo apt upgrade -y
sudo apt install git curl wget nano -y
然后安装 Docker(因为 Gitea、Drone、RSSHub 都可以用容器运行,简单又干净):
bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi
退出 SSH 后重新登录,使权限生效。
三、部署 Gitea:你的私有代码仓库
Gitea 是 Git 的一个轻量级自托管实现,内存占用通常不到 200MB,非常适合树莓派。
3.1 创建目录并启动容器
bash
mkdir -p ~/gitea/data
运行 Gitea 容器:
bash
docker run -d --name=gitea \
-p 3000:3000 \
-p 22:22 \
-v ~/gitea/data:/data \
--restart=always \
gitea/gitea:latest
解释:
-p 3000:3000:网页界面端口-p 22:22:SSH 推送代码端口(注意不要和树莓派本身的 SSH 端口冲突,如果你树莓派 SSH 也是 22,可改成-p 2222:22,后续推送时用端口 2222)--restart=always:树莓派重启后自动启动
3.2 初始化配置
在浏览器访问 http://树莓派IP:3000,首次打开会看到安装页面。
- 数据库:选择 SQLite(够用,简单)
- 站点名称:随便填,如“我的代码仓库”
- 基础 URL:填
http://树莓派IP:3000 - SSH 端口:如果你把容器端口 22 映射到了宿主机的 2222,这里填 2222
然后创建一个管理员账号,比如 pi / 你自己设置的密码。
3.3 日常使用
你可以在这里创建仓库,然后像 GitHub 一样 git push 你的脚本:
bash
git clone http://树莓派IP:3000/你的用户名/仓库名.git # 或者 SSH 方式 git clone ssh://git@树莓派IP:2222/你的用户名/仓库名.git
从此,你的脚本不再流浪。
四、部署 Drone:让代码推送后自动运行脚本
Drone 是一个 CI/CD 工具。你向 Gitea 推送代码后,Drone 会拉取代码,在一个临时容器里执行你指定的命令(比如运行脚本、编译、备份)。
4.1 在 Gitea 中创建 OAuth 应用
这一步让 Drone 能通过 Gitea 验证你的身份。
- 登录 Gitea,右上角头像 → 设置 → 应用
- 创建新的 OAuth2 应用:
- 应用名称:
Drone - 重定向 URI:
http://树莓派IP:8080/login - 保存后,记下客户端 ID 和客户端密钥
- 应用名称:
4.2 运行 Drone 服务端
bash
mkdir -p ~/drone
运行容器(请替换下面的 DRONE_GITEA_CLIENT_ID 和 DRONE_GITEA_CLIENT_SECRET):
bash
docker run -d \
-p 8080:80 \
-v ~/drone:/data \
-e DRONE_GITEA_SERVER=http://树莓派IP:3000 \
-e DRONE_GITEA_CLIENT_ID=上面复制的客户端ID \
-e DRONE_GITEA_CLIENT_SECRET=上面复制的客户端密钥 \
-e DRONE_RPC_SECRET=随意设置一个复杂字符串,如abc123xyz \
-e DRONE_SERVER_HOST=树莓派IP:8080 \
-e DRONE_SERVER_PROTO=http \
-e DRONE_USER_CREATE=username:你的Gitea用户名,admin:true \
--restart=always \
--name=drone \
drone/drone:latest
4.3 运行 Drone 执行器(Runner)
Drone Runner 负责真正执行任务。
bash
docker run -d \
-p 3001:3000 \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=树莓派IP:8080 \
-e DRONE_RPC_SECRET=与上面相同的abc123xyz \
-e DRONE_RUNNER_CAPACITY=2 \
--restart=always \
--name=drone-runner \
drone/drone-runner-docker:latest
4.4 配置一个自动任务
假设你有一个仓库 myscript,里面放了一个 hello.sh:
bash
echo "自动执行成功,时间: $(date)" >> /tmp/result.log
在仓库根目录下创建一个 .drone.yml 文件:
yaml
kind: pipeline
type: docker
name: 测试流水线
steps:
- name: 执行脚本
image: alpine:latest
commands:
- apk add bash
- chmod +x hello.sh
- ./hello.sh
提交这个文件到 Gitea 仓库。
浏览器访问 http://树莓派IP:8080,用 Gitea 账号登录。你会看到刚才的仓库,点击“激活”。之后每次推送代码,Drone 就会自动运行这个流水线。
你可以把任何日常任务放进 .drone.yml:定时备份、爬虫、发邮件、编译固件等。
五、部署 RSSHub:把全网信息聚合到 RSS
RSSHub 是一个神奇的 RSS 生成器。你输入一个微博/知乎/B站/抖音/小宇宙的用户主页,它就能给你输出一个 RSS 链接。
5.1 运行 RSSHub
树莓派版需要限制内存,否则容易卡死。
bash
docker run -d \
--name=rsshub \
-p 1200:1200 \
--restart=always \
--memory=512m \
diygod/rsshub:latest
访问 http://树莓派IP:1200,看到欢迎页即成功。
5.2 订阅一个例子
比如你关注某个 B 站 UP 主,他的主页是 https://space.bilibili.com/2266324
那么 RSSHub 生成的订阅链接就是:http://树莓派IP:1200/bilibili/user/video/2266324
把这个链接粘贴到任何 RSS 阅读器(如 Feedly、Thunderbird、Reeder),就能看到该 UP 主的最新视频。
RSSHub 支持数百个网站,完整文档见官方路由文档。你可以像搭积木一样,为自己定制一份“纯净信息流”。
六、三者的实际联动场景(非强制关联)
虽然 Gitea、Drone、RSSHub 可以各自独立运行,但你可以实现一个漂亮的自动化闭环:
每天上午 9 点,RSSHub 抓取某个技术博客的更新。你通过 RSS 阅读器看到一篇好文章,于是写了一个 Python 爬虫脚本保存到 Gitea 仓库。推送代码后,Drone 自动运行这个脚本,把文章另存为 Markdown 并备份到树莓派本地。
整个流程里:
- Gitea 保管代码版本
- Drone 自动执行脚本
- RSSHub 提供信息源头
你不需要打开任何云服务,不用花钱,不担心隐私。
七、性能与维护建议
| 服务 | 内存占用(树莓派 4B) | CPU 占用(闲置时) |
|---|---|---|
| Gitea | 约 150 MB | < 1% |
| Drone Server + Runner | 约 100 MB | < 1% |
| RSSHub | 约 200 MB | 1–2% |
三者在树莓派 2GB 版本上可同时运行,4GB 版本更从容。
常见维护:
- 查看日志:
docker logs -f 容器名 - 停止/启动:
docker stop/start 容器名 - 升级容器:先
docker pull新镜像,再删除并重新运行
八、总结:自己手里的工具箱
这篇文章从零开始,带你:
- 在一台树莓派上装好 Docker
- 跑起 Gitea —— 私有 GitHub
- 接入 Drone —— 代码推送后自动干活
- 部署 RSSHub —— 全网信息变订阅
这三件事彼此独立,但你拥有了一个 个人开发的完整工具箱:
代码版本管理、自动化执行、信息聚合,全部放在家中一块小小的树莓派上。
不需要公网 IP,不需要额外付费,不需要信任何云厂商。
你的脚本、你的数据、你的订阅,都在这块绿色电路板里,安静而稳定地运行。
接下来,你可以试着往里放第一个脚本,或者给 RSSHub 加一个你最喜欢的博客。
你会发现:技术自由,有时候就是从一台一直开机的树莓派开始的。