Wallabag

한 줄 요약

Wallabag은 웹 글을 저장하여 오프라인으로 읽고, 원본이 삭제되어도 영구 보관하는 셀프호스팅 “나중에 읽기” 서비스다.


왜 Wallabag인가?

문제: 글이 사라진다

개발자라면 이런 경험이 있을 것이다:

  • 나중에 읽으려고 북마크한 기술 블로그가 404
  • 참고했던 스택오버플로우 답변이 삭제
  • 좋은 글을 발견했는데 저장 안 하고 까먹음

기존 서비스의 한계

서비스문제점
Pocket무료 제한, 외부 서버 의존
Instapaper외부 서버, 개인정보 우려
브라우저 북마크원본 삭제 시 접근 불가
Evernote Web Clipper유료, 무거움

Wallabag의 해결책

  • 완전한 아카이빙: 글 전체를 내 서버에 저장
  • 오프라인 접근: 인터넷 없이도 저장된 글 읽기
  • 영구 보관: 원본 사이트가 없어져도 내용 보존
  • 셀프호스팅: 내 데이터는 내가 관리

Wallabag의 장점

1. 완전한 글 저장

단순 링크 저장이 아닌, 글 전체 내용을 저장:

  • HTML 전문 저장
  • 이미지 포함 저장 가능
  • 원본 삭제되어도 열람 가능

2. 다양한 클라이언트

플랫폼지원
⭕ 반응형 웹 UI
iOS⭕ 공식 앱
Android⭕ 공식 앱
브라우저 확장⭕ Chrome, Firefox
E-Reader⭕ epub 내보내기

3. 강력한 연동

  • Miniflux 연동: RSS 리더에서 바로 저장
  • Pocket 가져오기: 기존 Pocket 데이터 마이그레이션
  • API 제공: 자동화 및 커스텀 연동
  • 태그 시스템: 저장한 글 체계적 분류

4. 읽기 편의 기능

  • 광고/사이드바 제거된 깔끔한 읽기 모드
  • 다크 모드 지원
  • 읽기 시간 예측
  • 읽음/안읽음 상태 관리

Docker Compose로 설치하기

docker-compose.yml

services:
  wallabag:
    image: wallabag/wallabag:latest
    container_name: wallabag
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot
      - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
      - SYMFONY__ENV__DATABASE_HOST=db
      - SYMFONY__ENV__DATABASE_PORT=3306
      - SYMFONY__ENV__DATABASE_NAME=wallabag
      - SYMFONY__ENV__DATABASE_USER=wallabag
      - SYMFONY__ENV__DATABASE_PASSWORD=wallapass
      - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
      - SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com
      - SYMFONY__ENV__SERVER_NAME="My Wallabag"
    ports:
      - "8080:80"
    volumes:
      - ./images:/var/www/wallabag/web/assets/images
      - ./data:/var/www/wallabag/data
    depends_on:
      - db
      - redis

  db:
    image: mariadb:10
    container_name: wallabag-db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot
      - MYSQL_DATABASE=wallabag
      - MYSQL_USER=wallabag
      - MYSQL_PASSWORD=wallapass
    volumes:
      - ./mysql:/var/lib/mysql

  redis:
    image: redis:alpine
    container_name: wallabag-redis
    restart: unless-stopped

⚠️ SYMFONY__ENV__DOMAIN_NAME을 실제 접속 URL로 변경하세요.

실행

# 시작
docker compose up -d

# 접속
# http://서버IP:8080
# 기본 계정: wallabag / wallabag

⚠️ 보안 주의: 첫 로그인 후 반드시 비밀번호 변경!


Miniflux와 연동하기

Miniflux와 연동하면 RSS 피드에서 바로 글을 저장할 수 있다.

1. Wallabag에서 API 클라이언트 생성

  1. Wallabag 로그인 → 좌측 메뉴 → API clients management
  2. Create a new client 클릭
API 클라이언트 생성 - 1
  1. Name 입력 후 Create a new client 클릭
API 클라이언트 생성 - 2
  1. Client IDClient Secret 메모
API 키 확인

2. Miniflux에서 연동 설정

  1. Miniflux → SettingsIntegrations
Miniflux 설정
  1. Wallabag 섹션 입력:
    • API Endpoint: Wallabag URL
    • Client ID: 위에서 생성한 값
    • Client Secret: 위에서 생성한 값
    • Username/Password: Wallabag 로그인 정보
Miniflux Wallabag 연동
  1. 연동 완료 후 Miniflux 글 목록에서 “Save” 버튼으로 Wallabag에 저장 가능

브라우저 확장 프로그램

설치 링크

설정 방법

  1. 확장 프로그램 설치
  2. Wallabag URL 입력
  3. API 클라이언트 정보 입력 (위에서 생성한 것과 동일)
  4. 로그인 후 사용

사용 방법

  • 저장하고 싶은 페이지에서 확장 아이콘 클릭
  • 또는 우클릭 → “Save to Wallabag”

모바일 앱 사용

iOS / Android

공식 앱 스토어에서 “Wallabag” 검색 후 설치

설정 방법

  1. 앱 실행 → 서버 URL 입력
  2. API 클라이언트 정보 입력
  3. 로그인

공유 기능 활용

  • 브라우저에서 공유 → Wallabag 선택
  • 다른 앱에서 URL 공유 → Wallabag 선택

단점 및 해결책

단점해결책
초기 설정 복잡Docker Compose로 간소화
일부 사이트 저장 실패브라우저 확장으로 수동 저장
저장 공간 필요주기적 정리 또는 NAS 활용

비슷한 서비스 비교

서비스셀프호스팅완전 저장무료
Wallabag
Pocket⚠️ 제한적
Instapaper⚠️ 제한적
Omnivore
Shiori

마무리

Wallabag은 **“읽고 싶은 글은 내가 보관한다”**는 철학에 맞는 최고의 도구다.

  • 글 전체를 내 서버에 저장
  • 원본이 사라져도 영구 보관
  • Miniflux, 브라우저 확장 등 다양한 연동

나중에 읽을 글이 많다면, Wallabag을 강력 추천한다.