# Memos

> Cài Memos từ Kho ứng dụng, tạo tài khoản quản trị sau khoá thiết lập, tắt đăng ký tự do, sao lưu dữ liệu ghi chú và cập nhật Memos lên bản mới.

Source: https://zopanel.net/vi/docs/app-memos  
Updated: 2026-10-09

Memos là ứng dụng ghi chú gọn nhẹ, tự host: ghi nhanh, việc cần làm và nhật ký hằng ngày bằng Markdown, có thẻ, tìm kiếm và đính kèm file, dùng được trên trình duyệt điện thoại lẫn máy tính. Chọn Memos khi bạn cần một ứng dụng ghi chú riêng tư thay cho Google Keep hay Flomo, cho bản thân, gia đình hoặc nhóm nhỏ, với dữ liệu nằm trên server của chính bạn.

## Yêu cầu

| Mục | Giá trị |
| --- | --- |
| Image | `neosmemo/memos:0.31` |
| Giới hạn RAM | 256 MB, 1 CPU |
| Dung lượng trống khi cài | Khoảng 1,1 GB trên ổ chứa Docker (image cộng 1 GB chừa lại cho server) |
| Cơ sở dữ liệu | SQLite, nằm trong thư mục dữ liệu của ứng dụng |
| Docker | Quản trị viên cài trước (**Kho ứng dụng → Cài Docker**) |

Website mới được tính vào giới hạn số website của tài khoản. Nếu bạn là khách hàng, gói hosting phải cho phép ứng dụng Docker và còn trống 256 MB **RAM (MB)** cho ứng dụng. Xem [Kho ứng dụng và lưu trữ S3](/vi/docs/apps).

## Cài Memos

### Quản trị viên

1. Trỏ bản ghi A của tên miền (ví dụ `notes.example.com`) về server. SSL chỉ cấp được khi DNS đã trỏ đúng.
2. Mở **Kho ứng dụng**, bấm **Cài đặt** trên thẻ **Memos**.
3. Điền các trường (bảng bên dưới) rồi bấm **Cài đặt**. Log tác vụ hiển thị quá trình tải image và khởi động container.
4. Khi tác vụ xong, mở website vừa tạo và vào tab **Docker**.

### Khách hàng

Mở **Kho ứng dụng** trên menu. Thẻ trên cùng cho biết hạn mức, ví dụ "Gói của bạn: 0/2 ứng dụng · RAM 0/2048 MB." Nếu thẻ báo "Gói của bạn chưa gồm ứng dụng. Hãy liên hệ nhà cung cấp để bật.", gói của bạn đang đặt **Ứng dụng Docker** bằng `0`. Các bước còn lại giống phần trên, chỉ không có trường **Chủ sở hữu**: ứng dụng luôn thuộc tài khoản của bạn.

### Các trường khi cài

| Trường | Nhập gì |
| --- | --- |
| **Tên miền** | Tên miền hoặc tên miền phụ cho Memos, không kèm `http://`. Tên miền chưa được website nào dùng. |
| **Chủ sở hữu** | Chỉ quản trị viên thấy: tài khoản hosting sở hữu website và ứng dụng. |
| **SSL miễn phí (Let's Encrypt)** | Bật sẵn. Chứng chỉ được xin sau khi container chạy. Nếu DNS chưa trỏ về server, log báo "SSL could not be issued yet" và bạn cấp lại sau ở tab **SSL**. |

Memos không có trường cài đặt riêng. ZoPanel không đặt biến môi trường nào cho Memos; mọi cấu hình nằm trong ứng dụng.

## Hoàn tất thiết lập sau khoá thiết lập

Với Memos, tài khoản đầu tiên được tạo sẽ là quản trị viên. Để người lạ không chiếm trước, ZoPanel khoá mọi bản Memos mới cài: khách truy cập chỉ thấy trang "This app is being set up" cho tới khi bạn mở công khai.

1. Tab **Docker** hiển thị thẻ **Đang khoá thiết lập**. Bấm **Mở ứng dụng (chỉ mình tôi)**. Trình duyệt của bạn nhận một cookie (hiệu lực 30 ngày) và mở Memos.
2. Tạo tài khoản ở màn hình đầu tiên (tên đăng nhập và mật khẩu). Đây là tài khoản quản trị của instance (Memos gọi là host).
3. Tắt đăng ký tự do nếu ghi chú chỉ dành cho bạn hoặc một nhóm cố định (mục sau).
4. Quay lại tab **Docker** và bấm **Đã thiết lập xong — mở công khai**. Thông báo "Ứng dụng đã mở công khai" xác nhận thao tác.

**Quan trọng:** Đừng bỏ qua bước 4 nếu người khác hoặc trình duyệt trên điện thoại của bạn cần vào Memos: trước khi bấm, chỉ trình duyệt có cookie thiết lập mới vào được.

## Thiết lập cần làm trong Memos

Đăng nhập bằng tài khoản quản trị rồi mở phần cài đặt ở thanh bên.

- **Đăng ký người dùng.** Mặc định ai vào được website cũng tạo được tài khoản. Bật **Disallow user registration** trong phần cài đặt hệ thống dành cho quản trị viên, sau đó tự tạo tài khoản cho người khác trong phần quản lý thành viên. Tên menu có thể thay đổi giữa các phiên bản Memos; nếu không thấy, xem [tài liệu Memos](https://usememos.com/docs).
- **Quyền xem của khách.** Memos 0.31 có thiết lập truy cập của instance, quyết định khách chưa đăng nhập được xem gì, tách biệt với chế độ hiển thị của từng ghi chú (riêng tư, được bảo vệ, công khai). Kiểm tra thiết lập này trước khi chia sẻ ghi chú công khai.
- **Nơi lưu file đính kèm.** Trong phần cài đặt lưu trữ, file đính kèm có thể lưu trong database, trên hệ thống file, hoặc trên kho tương thích S3. Lưu trong database hay hệ thống file thì dữ liệu đều nằm trong thư mục dữ liệu của ứng dụng, nên bản sao lưu bên dưới đã bao gồm.

Muốn lưu đính kèm vào bucket của ZoPanel, hãy mở lưu trữ S3 ra một tên miền trước (xem [Kho ứng dụng và lưu trữ S3](/vi/docs/apps)). Container kết nối tới tên miền đó qua HTTPS cổng 443; container không gọi được S3 API trên 127.0.0.1.

## Dữ liệu và sao lưu

| Nội dung | Vị trí trên server |
| --- | --- |
| Database (`memos_prod.db`) và file đính kèm lưu cục bộ | `/var/lib/zopanel-apps/<instance>/data/` (gắn vào `/var/opt/memos` trong container) |
| File biến môi trường (chỉ root đọc) | `/var/lib/zopanel-apps/<instance>/.env` |
| Tên container | `zp-app-<instance>` |

`<instance>` là tên miền với dấu chấm đổi thành gạch ngang: `notes.example.com` thành `notes-example-com`.

**Bản sao lưu tài khoản của ZoPanel không gồm thư mục này.** Bản sao lưu đầy đủ và bản sao lưu gia tăng (restic) chỉ chứa thư mục website của tài khoản trong `/home`, database và email. Dữ liệu ứng dụng nằm ở `/var/lib/zopanel-apps`, ngoài tài khoản, nên không có trong các bản sao lưu đó, không hiện trong **Quản lý file** và không tính vào quota ổ đĩa của tài khoản. Dữ liệu này được sao lưu bằng thẻ **Sao lưu** trong tab **Docker** của website. Bản sao lưu cấu hình (`.zpb`) chỉ khôi phục bản ghi của ứng dụng trong panel, không khôi phục ghi chú.

Để sao lưu Memos, bấm **Sao lưu ngay** trong thẻ **Sao lưu** ở tab **Docker** của website. Quản trị viên còn đặt được **Lịch** (**Tắt**, **Mỗi ngày** hoặc **Mỗi tuần**; mặc định tắt) và số bản **Giữ lại** (1–60, mặc định 7), rồi bấm **Lưu**. Mỗi bản sao lưu nén `/var/lib/zopanel-apps/<instance>/` thành `/var/backups/zopanel-apps/<instance>/YYYYMMDD-HHMMSS.tar.gz`, trong thư mục chỉ root đọc được và không tính vào dung lượng đĩa của tài khoản. Container được tạm dừng (pause, không phải stop) trong vài giây sao chép, nên database SQLite nhất quán. Các bản cũ vượt quá số **Giữ lại** bị xoá, và khi một lần sao lưu theo lịch thất bại, quản trị viên nhận cảnh báo **Sao lưu thất bại**.

Để khôi phục, quản trị viên bấm **Khôi phục** cạnh một bản sao lưu. Memos được dừng và dữ liệu được thay bằng nội dung file nén; dữ liệu hiện tại được giữ riêng tới khi ứng dụng khôi phục khởi động được, và được đặt lại nếu nó không khởi động. Mọi thay đổi sau thời điểm sao lưu sẽ mất. Mỗi bản sao lưu còn có nút xoá (chỉ quản trị viên), và xoá ứng dụng kèm file của nó cũng xoá luôn các bản sao lưu. Khách hàng có thể bấm **Sao lưu ngay** và xem danh sách; việc đặt lịch và khôi phục do nhà cung cấp thực hiện.

Các file nén vẫn ở trên cùng máy chủ. Hãy chép những bản quan trọng ra ngoài (ví dụ bằng `scp` hoặc `rclone` từ `/var/backups/zopanel-apps/<instance>/`) và lưu ở dạng mã hoá, vì chúng chứa ghi chú và file `.env`. Để khôi phục trên máy chủ khác, cài Memos với cùng tên miền ở đó, chép file nén vào `/var/backups/zopanel-apps/<instance>/` trên máy chủ mới rồi bấm **Khôi phục** trong thẻ **Sao lưu** của nó. Docker chạy container trong một dải UID riêng (`userns-remap`), nên cách này chỉ làm được khi hai server dùng cùng dải `dockremap`; so sánh bằng `grep dockremap /etc/subuid` trên cả hai.

Khách hàng cũng có thể dùng tính năng xuất dữ liệu của Memos cho ghi chú quan trọng.

## Cập nhật Memos

Quản trị viên bấm **Cập nhật bản mới** ở tab **Docker**. ZoPanel kéo lại image, tạo lại container với cấu hình cũ và giữ nguyên thư mục dữ liệu. Tag `0.31` nhận các bản sửa lỗi của dòng 0.31; dòng mới hơn chỉ đến khi một bản cập nhật ZoPanel chuyển danh mục sang dòng đó.

Memos tự chuyển đổi database khi khởi động và không hỗ trợ quay về phiên bản cũ sau đó. Hãy sao lưu (**Sao lưu ngay**) trước mỗi lần cập nhật. Khách hàng không thấy nút cập nhật: hãy nhờ nhà cung cấp cập nhật giúp.

## Giới hạn mạng

Mọi container của Kho ứng dụng đều bị chặn khỏi mạng nội bộ của server. Với Memos, điều đó có nghĩa:

- Webhook và liên kết tới địa chỉ private (`10.x`, `172.16–31.x`, `192.168.x`, `127.x`, địa chỉ metadata của cloud `169.254.169.254`) bị từ chối. Webhook tới địa chỉ HTTPS công khai vẫn hoạt động.
- Trên chính server, container chỉ tới được cổng 80, 443, 25, 465, 587 và DNS, không bao giờ tới được panel, MySQL/MariaDB, PostgreSQL hay Redis.
- Đăng nhập một lần (OAuth/OIDC) với nhà cung cấp trên internet vẫn dùng được vì đó là địa chỉ công khai.

## Xử lý sự cố

| Hiện tượng hoặc thông báo | Cách xử lý |
| --- | --- |
| "This app is being set up" | Khoá thiết lập vẫn bật. Bấm **Mở ứng dụng (chỉ mình tôi)** trên cùng trình duyệt, hoặc bấm **Đã thiết lập xong — mở công khai**. |
| "This website is very busy right now" | Memos đang khởi động hoặc khởi động lại. Trang tự tải lại; nếu kéo dài, xem **Log ứng dụng** ở tab **Docker**. |
| "not enough disk space: this app needs about 1.1 GB free…" | Giải phóng dung lượng trên ổ chứa Docker rồi cài lại. |
| "your plan allows 1 application(s)" / "Memos needs 256 MB of memory; your plan has…" | Đã chạm giới hạn của gói. Gỡ bớt ứng dụng khác hoặc xin nâng gói. |
| "the app did not start listening: …" | Container không mở cổng trong 2 phút. Cuối thông báo là các dòng log cuối; đọc chúng rồi bấm **Khởi động lại**. |
| Xuất hiện tài khoản lạ | Đăng ký đang mở. Xoá tài khoản đó trong phần quản lý thành viên của Memos và bật **Disallow user registration**. |
| Mất ghi chú sau khi xoá website | Xoá website mà tích **Xoá luôn toàn bộ file** sẽ xoá cả `/var/lib/zopanel-apps/<instance>` và các bản sao lưu của ứng dụng. Khôi phục từ bản sao bạn đã chép ra ngoài server. |

## Xem thêm

- [Kho ứng dụng và lưu trữ S3](/vi/docs/apps)
- [Từng ứng dụng dùng để làm gì](/vi/docs/app-catalog)
- [Gói hosting và giới hạn](/vi/docs/packages-limits)
- [Sao lưu](/vi/docs/backups)
- [Tài liệu Memos](https://usememos.com/docs)
