Memos – 경량 오픈소스 메모 앱 Docker 설치 가이드




개요

Memos는 프라이버시를 중시하는 사용자를 위한 경량 셀프 호스팅 메모 애플리케이션입니다. 트위터(X)와 유사한 타임라인 형태의 UI를 제공하며, 빠르게 생각을 기록하고 정리할 수 있습니다. Go와 React로 개발되어 가볍고 빠른 성능을 자랑합니다.

GitHub: https://github.com/usememos/memos
공식 사이트: https://usememos.com
GitHub Stars: 37,000+
라이선스: MIT


Memos란?

Memos는 “메모(Memo)”를 핵심 단위로 하는 개인 지식 관리 도구입니다. 복잡한 폴더 구조나 카테고리 없이, 해시태그 기반으로 메모를 빠르게 작성하고 검색할 수 있습니다.

핵심 컨셉

  • Atomic Notes: 하나의 메모는 독립적이고 간결한 생각의 단위
  • Timeline UI: SNS처럼 시간순으로 메모가 쌓이는 구조
  • Tag-based Organization: #태그로 간단하게 분류

주요 특징

1. 프라이버시 우선

  • 모든 데이터는 사용자 서버에 저장
  • 추적, 분석, 데이터 수집 없음
  • 완전한 데이터 소유권 보장

2. 경량 & 고성능

  • Go + React 기반으로 빠른 속도
  • 단일 바이너리로 간편한 배포
  • 라즈베리파이에서도 구동 가능

3. 마크다운 지원

  • 완전한 마크다운 문법 지원
  • 코드 블록, 체크박스, 링크 등
  • 일반 텍스트로 저장되어 이식성 보장

4. 다양한 기능

  • 해시태그 기반 분류
  • 캘린더 뷰로 일별 메모 확인
  • 이미지/파일 첨부 지원
  • 메모 공개/비공개 설정
  • RESTful API 제공
  • PWA 지원 (모바일 앱처럼 사용)

5. 유연한 데이터베이스 지원

  • SQLite (기본값, 소규모 사용)
  • PostgreSQL (대규모, 프로덕션 권장)
  • MySQL/MariaDB

유사 도구 비교

항목MemosObsidianNotionLogseqJoplin
호스팅셀프 호스팅로컬 앱클라우드로컬 앱셀프/클라우드
가격무료무료 (Sync 유료)프리미엄무료무료
데이터 저장서버 DB로컬 파일클라우드로컬 파일로컬/서버
동기화웹 기반 자동유료 또는 수동자동수동/Git다양한 옵션
협업기본 지원미지원강력 지원미지원제한적
학습 곡선낮음중간낮음높음중간
오프라인제한적완전 지원제한적완전 지원지원
UI 스타일SNS/타임라인에디터 중심블록 기반아웃라이너에디터 중심

언제 Memos를 선택할까?

Memos가 적합한 경우:

  • 빠르게 생각을 기록하고 싶을 때 (플리팅 노트, TIL)
  • 복잡한 구조 없이 단순하게 메모하고 싶을 때
  • 여러 기기에서 웹으로 접근하고 싶을 때
  • 데이터를 직접 관리하고 싶을 때
  • 트위터/SNS 스타일 UI가 익숙할 때

다른 도구가 적합한 경우:

  • 복잡한 지식 그래프가 필요하다면 → Obsidian, Logseq
  • 팀 협업이 중요하다면 → Notion
  • 완전한 오프라인 사용이 필요하다면 → Obsidian, Joplin

Docker Compose 설치

사전 요구사항

  • Docker 및 Docker Compose 설치
  • 최소 512MB RAM (권장 1GB+)
  • 저장 공간 100MB+ (데이터 제외)

기본 설치 (SQLite)

가장 간단한 설치 방법입니다. 소규모 개인 사용에 적합합니다.

1. 디렉토리 생성

mkdir -p ~/docker/memos
cd ~/docker/memos

2. docker-compose.yml 작성

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    ports:
      - "5230:5230"
    volumes:
      - ./data:/var/opt/memos
    environment:
      - TZ=Asia/Seoul
    restart: unless-stopped

3. 컨테이너 실행

docker compose up -d

4. 접속 확인

브라우저에서 http://서버IP:5230 접속 후 관리자 계정을 생성합니다.


PostgreSQL 연동 설치 (프로덕션 권장)

대규모 데이터나 프로덕션 환경에서는 PostgreSQL 사용을 권장합니다.

docker-compose.yml

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    depends_on:
      postgres:
        condition: service_healthy
    ports:
      - "5230:5230"
    volumes:
      - ./memos-data:/var/opt/memos
    environment:
      - TZ=Asia/Seoul
      - MEMOS_DRIVER=postgres
      - MEMOS_DSN=postgresql://memos:your-secure-password@postgres:5432/memos?sslmode=disable
    restart: unless-stopped

  postgres:
    image: postgres:16-alpine
    container_name: memos-postgres
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=memos
      - POSTGRES_USER=memos
      - POSTGRES_PASSWORD=your-secure-password
      - TZ=Asia/Seoul
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U memos -d memos"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

주의: your-secure-password를 안전한 비밀번호로 변경하세요.


MySQL/MariaDB 연동 설치

기존 MySQL 인프라가 있는 경우 활용할 수 있습니다.

docker-compose.yml

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "5230:5230"
    volumes:
      - ./memos-data:/var/opt/memos
    environment:
      - TZ=Asia/Seoul
      - MEMOS_DRIVER=mysql
      - MEMOS_DSN=memos:your-secure-password@tcp(mariadb:3306)/memos?parseTime=true
    restart: unless-stopped

  mariadb:
    image: mariadb:11
    container_name: memos-mariadb
    volumes:
      - ./mariadb-data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root-password
      - MYSQL_DATABASE=memos
      - MYSQL_USER=memos
      - MYSQL_PASSWORD=your-secure-password
      - TZ=Asia/Seoul
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

컨테이너 관리

기본 명령어

# 시작
docker compose up -d

# 중지
docker compose down

# 로그 확인
docker compose logs -f memos

# 재시작
docker compose restart

# 업데이트
docker compose pull
docker compose up -d

버전 고정 (프로덕션 권장)

안정적인 운영을 위해 특정 버전을 지정할 수 있습니다.

# stable 대신 특정 버전 사용
image: neosmemo/memos:0.24.0

최신 버전은 GitHub Releases에서 확인하세요.


초기 설정

1. 관리자 계정 생성

첫 접속 시 자동으로 관리자 계정 생성 화면이 표시됩니다.

2. 기본 설정

설정(Settings) 메뉴에서 다음 항목을 확인하세요:

  • Server Name: 서버 이름 설정
  • Server URL: 외부 접속 URL 설정 (공유 링크 생성 시 필요)
  • Allow User Signup: 회원가입 허용 여부

3. 프로필 설정

  • 사용자 이름, 아바타 설정
  • 테마 설정 (다크/라이트 모드)

데이터 백업

SQLite 백업

# 데이터 디렉토리 전체 백업
tar -czvf memos-backup-$(date +%Y%m%d).tar.gz ./data

# 또는 SQLite 파일만 복사
cp ./data/memos_prod.db ./backup/memos_prod_$(date +%Y%m%d).db

PostgreSQL 백업

docker exec memos-postgres pg_dump -U memos memos > memos-backup-$(date +%Y%m%d).sql

복원

# SQLite: 백업 파일을 data 디렉토리에 복사 후 재시작
# PostgreSQL:
cat memos-backup.sql | docker exec -i memos-postgres psql -U memos -d memos

활용 팁

1. 해시태그 활용

오늘 배운 Docker 명령어 #TIL #Docker
- docker compose up -d
- docker logs -f

2. 체크박스로 할 일 관리

오늘 할 일 #todo
- [ ] 블로그 글 작성
- [x] 코드 리뷰
- [ ] 미팅 준비

3. 코드 스니펫 저장

자주 쓰는 Git 명령어 #Git #snippet

```bash
git stash
git pull --rebase
git stash pop
```

4. Daily Review 활용

캘린더에서 날짜를 클릭하면 해당 일자의 메모를 한눈에 볼 수 있습니다.


마무리

Memos는 복잡한 기능보다 빠른 메모 작성에 집중한 도구입니다. Notion이나 Obsidian처럼 강력한 기능은 없지만, 그만큼 가볍고 빠르게 생각을 기록할 수 있습니다.

추천 대상

  • 매일 짧은 메모/TIL을 기록하고 싶은 개발자
  • 플리팅 노트 용도로 가벼운 도구가 필요한 분
  • 데이터 프라이버시를 중시하는 분
  • SNS 스타일 UI가 편한 분
  • 셀프 호스팅에 관심 있는 홈서버 운영자

5분이면 설치할 수 있으니, 한번 시도해보세요!


참고 자료




댓글 남기기