前言
你有没有想过,要是能有个不知疲倦的助手,替你盯着微博热搜的变化、监测心仪商品的价格波动、甚至在你喜欢的博客更新第一时间把内容推送到你手机,那该多好。市面上其实有很多这样的工具,比如 IFTTT 或者 Zapier,但它们大多是云端服务,免费版往往有次数限制,而且你的数据也留在了别人的服务器上。
Huginn 就是来解决这个问题的。它是一个开源的自动化平台,你可以把它理解成一个可以自己掌控的、能跑在你自家服务器上的 IFTTT 。在 Huginn 的世界里,核心概念叫"Agent"(代理),你可以创建各种各样的 Agent,让它们去监听 RSS、抓取网页、处理 Webhook,或者执行你自定义的 JavaScript 代码 。所有数据都在你自己的服务器里流转,不仅隐私有保障,而且想跑多少个任务,全凭你服务器性能说了算 。
当然,Huginn 的上手门槛比那些图形化的商业工具要高一些,它需要你有一台属于自己的服务器,并且愿意花点时间研究它的逻辑 。但一旦跑起来,它能带来的自由度和掌控感,是那些封闭平台给不了的。下面这份指南,就是写给像我一样当初面对文档一头雾水的零基础新手,一步步带你在一台 Linux 云服务器上,把 Huginn 给跑起来。
第一步:准备工作与连接服务器
准备一台具备公网IP的云服务器(推荐使用雨云)
优惠注册地址:https://www.rainyun.com/sn_
使用优惠码:sn
注: 使用优惠码注册后绑定微信可领取5折优惠券
服务器选购步骤:
- 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

2.根据需求选择合适的配置,建议选择国内的服务器,访问更快,选好后点击立即购买即可

3.选好后进入控制台,使用SSH客户端远程连接服务器即可,SSH客户端建议选择FinalShell
第二步:安装 Docker
手动安装 Huginn 需要配置 Ruby 环境和数据库,步骤比较繁琐 。更推荐用 Docker 方式部署,能省掉很多麻烦 。
先更新一下软件包列表,然后安装 Docker:
bash
sudo apt update
sudo apt install docker.io -y
安装完成后,Docker 服务会自动启动。可以运行下面命令确认安装成功:
bash
sudo docker --version
看到类似 Docker version 24.0.7 的输出,就说明 Docker 装好了。
为了方便,可以把当前用户加到 docker 用户组里,这样以后执行 docker 命令就不用每次都敲 sudo 了:
bash
sudo usermod -aG docker $USER
注意: 这条命令执行完后,需要退出 SSH 重新登录一下,权限才会生效。
第三步:用 Docker 跑起 Huginn
Huginn 官方在 GitHub 上提供了 Docker 镜像,我们直接拉取并运行就行。这里我们用一种比较适合生产环境的方式:把容器里的数据目录挂载到宿主机上,这样即使容器出问题被删了,你的配置和数据也不会丢 。
先创建一个目录,用来存放 Huginn 的数据库文件:
bash
mkdir -p ~/huginn-data
然后运行容器:
bash
docker run -d \
--name huginn \
-p 3000:3000 \
-v ~/huginn-data:/var/lib/mysql \
--restart always \
ghcr.io/huginn/huginn
简单解释一下这条命令干了什么:
-d:让容器在后台运行。--name huginn:给容器起个名字叫 huginn。-p 3000:3000:把服务器的 3000 端口映射到容器的 3000 端口,这样我们就能通过浏览器访问了。-v ~/huginn-data:/var/lib/mysql:把刚才创建的文件夹挂载到容器里的 MySQL 数据目录,实现数据持久化。--restart always:如果服务器重启或者容器意外退出,Docker 会自动把它拉起来。ghcr.io/huginn/huginn:这是镜像的地址。
第一次运行会从 GitHub 的容器仓库下载镜像,需要等几分钟,取决于你的网络速度。运行完后,可以看下容器状态:
bash
docker ps
如果看到 huginn 在列表里,STATUS 显示 Up 几分钟,就说明启动成功了。
第四步:登录并完成基础设置
打开浏览器,访问 http://你的服务器IP:3000。你就能看到 Huginn 的登录界面了。
使用默认账号登录 :
- 用户名:
admin - 密码:
password
登录进去第一件事,就是改密码 。点击右上角的 admin 头像,选择 Account,然后在 Change your password 那里填上新密码保存。
第五步:跑通第一个 Agent
Huginn 默认自带几个示例 Agent,我们可以先跑一个试试水,感受一下它是怎么工作的。
在顶部菜单栏点击 Agents,你会看到里面已经有一些现成的了。比如有一个叫 XKCD 的,它会去监测一个漫画网站的更新。你可以点进去看它的配置,会发现它其实是用 JSON 格式定义的一套抓取规则,告诉 Agent 去哪个网址、提取哪些内容 。
我们可以不改它,直接看效果。等一会儿,点击某个 Agent 的 Events 选项卡,如果看到有记录,就说明它已经抓到东西了。
第六步:给服务加点"安全保障"
到目前为止,我们都是用 IP 加端口的方式访问,而且用的还是 HTTP。如果有域名,建议用 Nginx 反代一下,配上 SSL 证书,这样既安全又美观。
1. 安装 Nginx
bash
sudo apt install nginx -y
2. 配置 SSL(以 Let's Encrypt 为例)
先安装 Certbot 工具:
bash
sudo apt install certbot python3-certbot-nginx -y
然后申请证书(把 yourdomain.com 换成你的域名):
bash
sudo certbot --nginx -d yourdomain.com
跟着提示走,Certbot 会自动帮你修改 Nginx 配置并启用 HTTPS。
3. 配置 Nginx 反向代理
如果 Certbot 没有自动配置好上游地址,你可以手动编辑 Nginx 配置文件(比如 /etc/nginx/sites-available/huginn),加入这样一段:
nginx
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
配置好后启用并重载 Nginx:
bash
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置是否有语法错误
sudo systemctl reload nginx
之后就可以直接用 https://yourdomain.com 安全地访问你的 Huginn 了。
最后想说的话
至此,你的 Huginn 已经跑起来了。你可以从一些简单的需求开始尝试,比如监控某个不带 RSS 的网站更新,或者把特定格式的邮件内容推送到手机。