给自己搭一个能24小时在线的“数字管家”:Huginn 部署手记

前言

你有没有想过,要是能有个不知疲倦的助手,替你盯着微博热搜的变化、监测心仪商品的价格波动、甚至在你喜欢的博客更新第一时间把内容推送到你手机,那该多好。市面上其实有很多这样的工具,比如 IFTTT 或者 Zapier,但它们大多是云端服务,免费版往往有次数限制,而且你的数据也留在了别人的服务器上。

Huginn 就是来解决这个问题的。它是一个开源的自动化平台,你可以把它理解成一个可以自己掌控的、能跑在你自家服务器上的 IFTTT 。在 Huginn 的世界里,核心概念叫"Agent"(代理),你可以创建各种各样的 Agent,让它们去监听 RSS、抓取网页、处理 Webhook,或者执行你自定义的 JavaScript 代码 。所有数据都在你自己的服务器里流转,不仅隐私有保障,而且想跑多少个任务,全凭你服务器性能说了算 。

当然,Huginn 的上手门槛比那些图形化的商业工具要高一些,它需要你有一台属于自己的服务器,并且愿意花点时间研究它的逻辑 。但一旦跑起来,它能带来的自由度和掌控感,是那些封闭平台给不了的。下面这份指南,就是写给像我一样当初面对文档一头雾水的零基础新手,一步步带你在一台 Linux 云服务器上,把 Huginn 给跑起来。

第一步:准备工作与连接服务器

准备一台具备公网IP的云服务器(推荐使用雨云)

优惠注册地址:https://www.rainyun.com/sn_

使用优惠码:sn

注: 使用优惠码注册后绑定微信可领取5折优惠券

服务器选购步骤:

  1. 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

    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 的网站更新,或者把特定格式的邮件内容推送到手机。

相关推荐
伊织code1 年前
Huginn - 构建代理、执行自动化任务
自动化·agent·代理·工作流·huginn