Huginn 설치기: 오딘의 두 까마귀가 인터넷을 감시한다

안녕하세요, Mark입니다.

오늘 소개할 프로그램은 이름부터 심상치 않습니다.

Huginn(후긴).


🐦‍⬛ 이름의 유래: 북유럽 신화 속 까마귀

프로그램을 처음 설치하고 로그인하면 대시보드에 이런 문구가 반겨줍니다.

“Two ravens named Huginn and Muninn sit on Odin’s shoulders. The ravens tell Odin everything they see and hear. Odin sends Huginn and Muninn out at dawn, and the birds fly all over the world before returning at dinner-time. As a result, Odin is kept informed of many events.”

북유럽 신화에서 최고신 오딘은 후긴(Huginn)무닌(Muninn)이라는 두 마리 까마귀를 거느립니다. 매일 새벽 세상으로 날아가 모든 것을 보고 듣고 돌아와 오딘에게 보고하는 역할이에요.

이 프로그램의 정체성을 이름 하나로 완벽하게 설명하는 작명이죠. 인터넷 세상을 날아다니며 내가 원하는 정보를 물어다 주는 까마귀. ㅎㅎ


🧭 Huginn이 뭔가요?

Huginn은 온라인에서 자동화 작업을 수행하는 에이전트를 만드는 오픈소스 자동화 서버입니다. 쉽게 말하면 자체 서버에서 운영하는 Zapier나 IFTTT의 셀프호스팅 버전이에요.

핵심 개념은 에이전트(Agent)입니다. 각 에이전트는 웹페이지 가져오기, 데이터 필터링, 이메일 발송처럼 특정 역할을 담당하는 작업자예요. 에이전트들은 JSON 이벤트를 생산하고 소비하면서 방향 그래프를 따라 연결됩니다.

즉, 에이전트들을 체인처럼 연결해서 복잡한 자동화 워크플로우를 만드는 거예요.

2025년 기준 GitHub 스타가 46,000개를 넘을 정도로 커뮤니티가 활발한 프로젝트입니다.


🤔 n8n이 있는데 왜 또 Huginn을?

저는 이미 서버에 n8n이 있어요. 23편에서 설치한 그 n8n이요.

n8n으로도 HTTP 리퀘스트 노드를 써서 웹페이지 몇 개를 감시하고 정보를 받아오는 워크플로우를 쓰고 있었는데, 처음엔 잘 되다가 나중엔 작동이 안 되는 경우가 생기더라고요. 아마 봇으로 감지돼서 밴당한 것 같아요. 😅

여기서 Huginn의 진가가 나옵니다.

Huginn의 WebsiteAgent는 웹사이트 스크래핑, API 크롤링, 구조화된 콘텐츠 추출, JSONPath 쿼리 실행까지 가능합니다. IFTTT는 지원하지 않고, Zapier는 고가 플랜에서만 제공하는 기능들이에요.

n8n과 Huginn을 비교하면 이렇습니다:

항목n8nHuginn
UI시각적 플로우 차트에이전트 목록 기반
웹 스크래핑기본 HTTP 요청전문적인 WebsiteAgent
봇 감지 우회취약한 편상대적으로 강함
워크플로우복잡한 로직에 강함이벤트 체인 방식
연동 서비스매우 많음적당히 많음

그래서 앞으로는 역할을 이렇게 나누려고 합니다:

Huginn  → 웹페이지 감시, 정보 수집 (원초적인 스크래핑)
  ↓
n8n     → 수집된 정보 가공, 알림 발송 (복잡한 로직 처리)
Huginn  → 웹페이지 감시, 정보 수집 (원초적인 스크래핑)
  ↓
n8n     → 수집된 정보 가공, 알림 발송 (복잡한 로직 처리)

두 도구의 장점만 쏙쏙 뽑아 쓰는 이분화 전략이에요. ㅎㅎ


🔧 설치 전 준비: 폴더 먼저 만들기

이번 설치에서 한 가지 다른 점이 있어요. 스택 올리기 전에 File Browser로 폴더를 미리 만들었습니다.

서버 홈 디렉토리(/home/ubuntu/)에:

  • huginn 폴더
  • huginn/mysql-data 하위 폴더

이렇게 미리 만들어두고 시작하면 볼륨 마운트가 깔끔하게 됩니다.


📦 포테이너 스택으로 설치하기

Huginn도 앱 + DB 두 컨테이너 구성입니다.

포테이너 → Stacks → Add Stack에서 아래 내용을 붙여넣으세요.

services:
  huginn:
    image: ghcr.io/huginn/huginn
    container_name: huginn
    restart: unless-stopped
    depends_on:
      - huginn-db
    environment:
      - TZ=Asia/Seoul
      - DATABASE_ADAPTER=mysql2
      - DATABASE_HOST=huginn-db
      - DATABASE_PORT=3306
      - HUGINN_DATABASE_NAME=huginn
      - HUGINN_DATABASE_USERNAME=huginn
      - HUGINN_DATABASE_PASSWORD=비밀번호입력
      - APP_SECRET_TOKEN=랜덤긴문자열입력
    ports:
            - 3005:3000


  huginn-db:
    image: mariadb:10.11
    container_name: huginn-db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=루트비밀번호입력
      - MYSQL_DATABASE=huginn
      - MYSQL_USER=huginn
      - MYSQL_PASSWORD=비밀번호입력
    volumes:
      - /home/ubuntu/huginn/mysql-data:/var/lib/mysql
services:
  huginn:
    image: ghcr.io/huginn/huginn
    container_name: huginn
    restart: unless-stopped
    depends_on:
      - huginn-db
    environment:
      - TZ=Asia/Seoul
      - DATABASE_ADAPTER=mysql2
      - DATABASE_HOST=huginn-db
      - DATABASE_PORT=3306
      - HUGINN_DATABASE_NAME=huginn
      - HUGINN_DATABASE_USERNAME=huginn
      - HUGINN_DATABASE_PASSWORD=비밀번호입력
      - APP_SECRET_TOKEN=랜덤긴문자열입력
    ports:
            - 3005:3000


  huginn-db:
    image: mariadb:10.11
    container_name: huginn-db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=루트비밀번호입력
      - MYSQL_DATABASE=huginn
      - MYSQL_USER=huginn
      - MYSQL_PASSWORD=비밀번호입력
    volumes:
      - /home/ubuntu/huginn/mysql-data:/var/lib/mysql

주요 환경변수 설명:

항목설명
DATABASE_ADAPTERmysql2 고정 (MariaDB도 이걸로 씀)
HUGINN_DATABASE_PASSWORDDB 비밀번호, 아래 MariaDB 설정과 동일하게
APP_SECRET_TOKEN앱 암호화 토큰, 길고 랜덤한 문자열 입력

⚠️ DB 선택의 우여곡절 (ARM 서버 주의!)

스택 명령어 보시면 데이터베이스가 MariaDB 10.11인 걸 눈치채셨나요?

사실 처음엔 MySQL로 시도했다가 두 번 실패했어요.

1차 시도: MySQL 8.0 → Huginn과 DB 연결이 안 됨 ❌

2차 시도: MySQL 5.7로 다운그레이드 → 연결은 되나… 제 서버가 ARM(Ampere) 아키텍처인데 MySQL 5.7이 ARM을 지원 안 함 ❌

3차 시도: MariaDB 10.11로 교체 → 성공! ✅

오라클 Always Free ARM 서버 쓰시는 분들은 처음부터 MariaDB로 가세요. MySQL 5.7 ARM 호환 문제로 시간 낭비할 필요 없습니다. ㅎㅎ


🔒 최초 로그인 및 도메인 연결

설치 후 http://서버IP:3005로 접속하면 로그인 화면이 뜹니다.

초기 계정:

항목
아이디admin
비밀번호password

로그인 후 바로 설정에서 아이디와 비밀번호를 변경하세요. 그리고 그 유명한 오딘의 까마귀 문구가 대시보드에서 반겨줍니다. ㅎㅎ

도메인 연결은 DuckDNS + NPM 조합으로 이제 익숙한 패턴이죠.

항목입력값
Domain Names내도메인.duckdns.org
Forward Port3005
SSLLet’s Encrypt 자동 발급

✅ 핵심 요약

항목내용
프로그램Huginn (에이전트 기반 자동화)
핵심 강점웹 스크래핑 전문, WebsiteAgent
n8n과의 역할 분담Huginn=수집, n8n=가공·알림
DBMariaDB 10.11 (ARM 서버 필수!)
포트3005
초기 계정admin / password (설치 후 즉시 변경)

마치며

n8n을 쓰면서 “웹 스크래핑이 좀 약하네” 싶었던 분들이라면 Huginn이 딱 그 빈자리를 채워줄 거예요.

오딘이 매일 새벽 까마귀 두 마리를 세상으로 날려 보내듯, 이제 제 서버도 매일 정해진 시간에 Huginn 에이전트들을 인터넷으로 날려보내게 됐습니다. 내가 원하는 정보만 쏙쏙 물어다 주는 까마귀들을요. ㅎㅎ

Mark의 한마디: “처음에 MySQL로 두 번 실패하고 MariaDB로 성공했을 때, ‘역시 설치기는 실패담이 있어야 재미있어’라고 생각했습니다.” 

댓글 남기기