Docker Homelab Series - Phần 10: Memos: Hướng dẫn Wiki & Ghi chú cá nhân

Hướng dẫn Memos

Memos: Hướng dẫn Wiki & Ghi chú cá nhân

Memos Wiki

I. Giới thiệu Memos

Memos là một ứng dụng ghi chú (note-taking) nhẹ, mã nguồn mở dùng để tạo wiki cá nhân, ghi chú nhanh, và quản lý kiến thức. Điều này rất hữu ích khi:

  • Bạn muốn ghi chú những thông tin quan trọng
  • Cần tạo wiki cá nhân cho dự án
  • Muốn lưu giữ knowledge base riêng
  • Cần app ghi chú tự host (không dùng Notion, Evernote)
  • Muốn chia sẻ ghi chú với team

Chức năng chính:

  • Tạo ghi chú nhanh (Memos) với Markdown
  • Tổ chức bằng tags
  • Tìm kiếm ghi chú
  • Chia sẻ ghi chú công khai/riêng tư
  • Hỗ trợ hình ảnh & file attachment
  • Export/Import dữ liệu
  • API cho tích hợp
  • Giao diện đơn giản, dễ sử dụng

So sánh Memos với các tool khác:

Tính năng Memos Notion Obsidian
Giá Miễn phí (open source) Miễn phí / Pro Miễn phí / Pro
Self-hosted Có (Docker) Không Có (local)
Online/Offline Online (web) Online Offline (local)
Collaboration Có (sharing) Có (team) Hạn chế
Ease of use Rất dễ Dễ Trung bình

II. Triển khai Memos với Docker

1. Docker Compose

version: '3.8'
services:
  memos:
    image: elestio/memos:v0.24.2
    container_name: wiki-memos
    volumes:
      - /root/memos:/var/opt/memos
    networks:
      - docker-net
    mem_limit: 1024m
    cpus: 0.1
    ports:
      - 5230:5230
    restart: unless-stopped
networks:
  docker-net:
    external: true

Giải thích cấu hình:

  • image: elestio/memos:v0.24.2 (phiên bản ổn định)
  • volumes: Lưu dữ liệu ghi chú vào /root/memos
  • ports: 5230 (host) → 5230 (container)
  • networks: Sử dụng docker-net (mạng external)
  • mem_limit: Giới hạn RAM 1GB
  • cpus: Giới hạn CPU 10%
  • restart: unless-stopped: Tự động khởi động lại

2. Deploy qua Portainer

  1. Vào Portainer Dashboard
  2. Chọn StacksAdd stack
  3. Đặt tên Stack: memos
  4. Copy/paste docker-compose vào Web editor
  5. Chọn network: docker-net
  6. Click Deploy the stack

Container khởi động, truy cập http://your-ip:5230 để vào Memos.

3. Cấu hình lần đầu

Khi mở lần đầu:

  1. Tạo tài khoản (username & password)
  2. Đăng nhập vào Memos
  3. Bắt đầu tạo ghi chú

III. Sử dụng Memos cơ bản

1. Tạo Memo (Ghi chú)

Để tạo ghi chú mới:

  1. Click Compose hoặc + New
  2. Viết nội dung (hỗ trợ Markdown)
  3. Thêm tags: #tag1 #tag2
  4. Chọn visibility (Public/Private)
  5. Click Save hoặc Post

2. Định dạng Markdown

Memos hỗ trợ Markdown đầy đủ:

# Tiêu đề H1
## Tiêu đề H2
### Tiêu đề H3

**Bold text**
*Italic text*
~~Strikethrough~~

- List item 1
- List item 2

1. Ordered item 1
2. Ordered item 2

[Link text](https://example.com)

![Image alt](image-url)

\`code inline\`

\`\`\`
code block
\`\`\`

> Quote

3. Sử dụng Tags

Tags giúp organize ghi chú:

  • Thêm tag bằng #tag-name trong nội dung
  • Click vào tag để xem tất cả ghi chú có tag đó
  • Tìm kiếm theo tag
  • Nested tags: #project/feature

Ví dụ:

#docker #deployment #tutorial
#project/infra/monitoring
#bug/critical #2024

4. Chia sẻ Ghi chú

Memos hỗ trợ chia sẻ:

  1. Click vào ghi chú → Share
  2. Chọn visibility:
    • Private: Chỉ mình tôi thấy
    • Public: Ai cũng có thể xem (qua link)
    • Friends: Chia sẻ với bạn bè (nếu có tính năng)
  3. Generate link chia sẻ

IV. Cấu hình Advanced

1. Proxy qua Nginx Proxy Manager

Để expose Memos qua domain public:

  1. Vào Nginx Proxy Manager → HostsProxy Hosts
  2. Click Add Proxy Host
  3. Điền:
    • Domain Names: wiki.yourdomain.com
    • Scheme: http
    • Forward Hostname/IP: wiki-memos (tên container)
    • Forward Port: 5230
  4. Tab SSL: Request Let's Encrypt
  5. Click Save

Bây giờ có thể truy cập https://wiki.yourdomain.com

2. Backup Dữ liệu

Dữ liệu lưu trong /root/memos:

#!/bin/bash
# Backup script
BACKUP_DIR=/root/backups
DATE=$(date +%Y%m%d_%H%M%S)

# Backup Memos database
cp -r /root/memos /root/backups/memos_$DATE

# Optional: Compress
tar -czf /root/backups/memos_$DATE.tar.gz /root/memos

3. Search & Filtering

Tìm kiếm advanced:

  • Tìm theo từ khóa: server monitoring
  • Tìm theo tag: #docker
  • Tìm theo ngày: created:2024-01
  • Kết hợp: #docker created:2024-01 server

V. Sử dụng Memos cho các trường hợp cụ thể

1. Knowledge Base cho Dev Team

Ví dụ cấu trúc ghi chú:

#infrastructure/docker #tutorial
# Docker Best Practice
- Use .dockerignore
- Pin base image version
- Multi-stage builds

#infrastructure/monitoring #alert
# Alert Configuration
Monitor CPU usage > 80%
...

#bug #critical #backend
# Bug: API timeout in production
Reported: 2024-01-15
...

2. Ghi chú dự án

#project/website #todo
# Website Redesign Project

## Phase 1
- [ ] Design mockup
- [ ] Frontend setup
- [ ] Database migration

## Timeline
Start: 2024-01-20
End: 2024-02-28

3. Ghi chú hàng ngày

#daily #2024-01-15
# Daily Standup - 15 Jan 2024

## Completed
- Fixed database query
- Reviewed PR #123

## Today
- Deploy to production
- Team meeting 2PM

## Blockers
- Waiting on API response

VI. Troubleshooting

Memos không tải được

  • Kiểm tra port 5230 có mở không
  • Xem logs: docker logs wiki-memos
  • Kiểm tra volume mount đúng chưa
  • Thử restart container

Dữ liệu bị mất sau restart

  • Kiểm tra volume mount: -/root/memos:/var/opt/memos
  • Kiểm tra folder /root/memos tồn tại
  • Kiểm tra permission: chmod 755 /root/memos

Không thể đăng nhập

  • Kiểm tra database có corrupt không
  • Xóa volume và recreate (mất dữ liệu cũ)
  • Xem logs để tìm error

Performance chậm

  • Kiểm tra RAM/CPU limit
  • Tăng resource: mem_limit: 2048m
  • Kiểm tra disk space của /root/memos
  • Optimize database (xóa ghi chú cũ)

VII. Lưu ý quan trọng

  • Backup dữ liệu: Thư mục /root/memos chứa toàn bộ dữ liệu, backup định kỳ
  • Authentication: Memos có built-in auth, nhưng không quá mạnh. Nên proxy qua OAuth hoặc ngăn public access
  • SSL/TLS: Nếu expose ra internet, phải dùng HTTPS (qua Nginx Proxy Manager + Let's Encrypt)
  • Database: Memos sử dụng SQLite (file-based), không cần external database
  • Sharing: Public memo có thể được tìm thấy, không hoàn toàn bảo mật
  • Version: Kiểm tra version thường xuyên để cập nhật bảo mật
  • Resource usage: Memos rất nhẹ, phù hợp chạy trên VPS nhỏ

VIII. Best Practice

  • Sử dụng tags có cấu trúc (nested tags) để organize
  • Viết ghi chú định kỳ (hàng ngày, hàng tuần) để tạo thói quen
  • Backup dữ liệu hàng tuần
  • Sử dụng Markdown format cho consistent
  • Chia sẻ public memo cho công khai kiến thức
  • Tích hợp với Uptime Kuma để monitor availability
  • Kết hợp với Nginx Proxy Manager cho access bảo mật
  • Ghi lại lesson learned sau mỗi dự án

IX. Tích hợp với các tool khác

1. Uptime Kuma Monitoring

Monitor Memos availability:

  1. Vào Uptime Kuma → Add Monitor
  2. URL: https://wiki.yourdomain.com
  3. Interval: 300 (5 phút)

2. Cloudflare Tunnel

Expose Memos qua Cloudflare Tunnel:

  1. Cấu hình Public Hostname trong Cloudflare
  2. Point tới: http://wiki-memos:5230
  3. Truy cập qua: https://wiki.yourdomain.com

3. Backup Script tích hợp

Tạo backup script chạy định kỳ:

#!/bin/bash
# /root/scripts/backup-memos.sh
BACKUP_DIR=/root/backups
mkdir -p $BACKUP_DIR

DATE=$(date +%Y%m%d_%H%M%S)
tar -czf $BACKUP_DIR/memos_$DATE.tar.gz /root/memos

# Keep only last 7 days
find $BACKUP_DIR -name "memos_*.tar.gz" -mtime +7 -delete

Chạy qua cron hàng ngày:

0 2 * * * /bin/bash /root/scripts/backup-memos.sh

Vậy là bạn đã hoàn thành cấu hình Memos để tạo wiki cá nhân và ghi chú tự host!

Post a Comment

Previous Post Next Post
QR Code
Quét mã QR để gọi miễn phí