개요
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
유사 도구 비교
| 항목 | Memos | Obsidian | Notion | Logseq | Joplin |
|---|---|---|---|---|---|
| 호스팅 | 셀프 호스팅 | 로컬 앱 | 클라우드 | 로컬 앱 | 셀프/클라우드 |
| 가격 | 무료 | 무료 (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분이면 설치할 수 있으니, 한번 시도해보세요!