SELF HOSTING

rwMarkable – Ứng dụng self-hosted open-source

Trong thế giới kỹ thuật số ngày nay, chu kỳ tìm kiếm, sử dụng và cuối cùng là từ bỏ các ứng dụng năng suất dựa trên đám mây đã trở nên quá quen thuộc. Người dùng thường bị cuốn vào một vòng lặp của sự mệt mỏi vì phí đăng ký, các tính năng thừa thãi làm lộn xộn giao diện, và những lo ngại sâu sắc về quyền riêng tư khi ghi chú cá nhân được lưu trữ trên máy chủ của bên thứ ba. Luôn tồn tại nguy cơ một dịch vụ yêu thích bị mua lại, ngừng hoạt động, hoặc thay đổi mô hình định giá, khiến người dùng bị khóa chân vào một hệ sinh thái không còn phù hợp.

Trong bối cảnh đó, việc tự lưu trữ (self-hosting) nổi lên không chỉ như một sở thích công nghệ, mà là một lựa chọn có chủ đích hướng tới chủ quyền và quyền kiểm soát kỹ thuật số. Triết lý này kết nối trực tiếp với nhu cầu cơ bản về một không gian đáng tin cậy, riêng tư cho những suy nghĩ, kế hoạch và ghi chú của chúng ta. Giữa một thị trường đông đúc, rwMarkable xuất hiện như một làn gió mới, một ứng dụng được thiết kế từ đầu với tâm niệm dành cho cộng đồng tự lưu trữ, ưu tiên sự đơn giản, quyền sở hữu và hiệu suất.

Thị trường công cụ năng suất hiện đang phân cực. Một bên là các bộ công cụ quản lý dự án phức tạp dành cho doanh nghiệp, bên còn lại là các ứng dụng ghi chú quá đơn giản. Sự tồn tại của rwMarkable cho thấy một nhu cầu ngày càng tăng về một “vùng trung gian”: đủ mạnh mẽ cho các dự án nhưng đủ đơn giản cho các ghi chú hàng ngày, và quan trọng nhất là có thêm lớp bảo vệ từ việc tự lưu trữ. Ứng dụng này giải quyết được cả nhu cầu về một danh sách mua sắm đơn giản lẫn một bảng Kanban phức tạp, cho thấy vấn đề cốt lõi không chỉ là “đám mây so với tự lưu trữ”, mà còn là sự không tương thích giữa các công cụ hiện có và một phân khúc người dùng cần sự linh hoạt mà không bị choáng ngợp bởi sự phức tạp. rwMarkable không chỉ là một ứng dụng tự lưu trữ khác; nó là câu trả lời cho một khoảng trống về triết lý và chức năng trong thị trường năng suất cá nhân.

rwMarkable là gì? Sự đơn giản, quyền kiểm soát và dữ liệu của bạn

Triết lý cốt lõi

rwMarkable được định nghĩa là một ứng dụng tự lưu trữ đơn giản dành cho danh sách kiểm tra và ghi chú. Nhiệm vụ cốt lõi của nó là cung cấp một giải pháp thay thế gọn nhẹ cho các ứng dụng đám mây cồng kềnh, nơi mọi dữ liệu đều nằm trên máy chủ của chính người dùng. Điều này đảm bảo rằng thông tin nhạy cảm và ý tưởng cá nhân luôn được kiểm soát hoàn toàn.

Bước đi đột phá về kiến trúc: Không cần cơ sở dữ liệu

Điểm khác biệt lớn nhất và cũng là một trong những ưu điểm mạnh mẽ nhất của rwMarkable là kiến trúc dựa trên tệp. Mọi thứ—từ tài khoản người dùng, danh sách kiểm tra, đến ghi chú—đều được lưu trữ dưới dạng các tệp Markdown và JSON đơn giản, dễ đọc trong một thư mục data duy nhất. Cách tiếp cận này loại bỏ hoàn toàn sự phức tạp của việc quản lý cơ sở dữ liệu, một rào cản phổ biến đối với nhiều người mới bắt đầu tự lưu trữ.

Tổng quan về công nghệ

rwMarkable được xây dựng trên một nền tảng công nghệ hiện đại, bao gồm Next.js, TypeScript, và Tailwind CSS. Việc sử dụng các công nghệ này không chỉ đảm bảo một giao diện người dùng nhanh nhạy và hiện đại mà còn cho thấy đây là một dự án được kiến trúc tốt, có khả năng bảo trì và phát triển lâu dài.

Bảng so sánh rwMarkable và các dịch vụ đám mây:

Để làm rõ hơn giá trị cốt lõi của rwMarkable, bảng so sánh dưới đây sẽ chỉ ra những khác biệt cơ bản về triết lý giữa cách tiếp cận tự lưu trữ và các dịch vụ đám mây thông thường.

Tiêu chírwMarkable (Tự lưu trữ)Ứng dụng Đám mây (SaaS)
Lưu trữ Dữ liệuTrên máy chủ của bạn; các tệp Markdown/JSON đơn giản.Trên máy chủ của công ty; định dạng cơ sở dữ liệu độc quyền.
Quyền sở hữu Dữ liệu100% của bạn, vĩnh viễn.Phụ thuộc vào Điều khoản Dịch vụ; có nguy cơ mất mát.
Chi phíPhần mềm mã nguồn mở miễn phí (chỉ tốn chi phí phần cứng/hosting).Phí đăng ký định kỳ hàng tháng/năm.
Tùy biếnRất linh hoạt (chủ đề, emoji tùy chỉnh, truy cập API).Giới hạn trong các cài đặt được cung cấp.
Tính bền vữngHoạt động miễn là bạn còn duy trì nó.Phụ thuộc vào sự tồn tại và chiến lược của công ty.
Quyền riêng tưTuyệt đối riêng tư trên mạng của bạn.Dữ liệu có thể bị phân tích, chia sẻ hoặc truy cập.

Bảng so sánh này không chỉ liệt kê các tính năng mà còn nhấn mạnh sự khác biệt về các khái niệm cơ bản như quyền sở hữu, tính bền vững và quyền riêng tư. Đây chính là những yếu tố thúc đẩy cộng đồng tự lưu trữ và là nền tảng cho toàn bộ giá trị mà rwMarkable mang lại.

Hướng dẫn cài đặt

Phương pháp được khuyến nghị và dễ dàng nhất để chạy rwMarkable là sử dụng Docker và Docker Compose. Hướng dẫn này sẽ tập trung vào quy trình đó.

Điều kiện

Cần có một máy chủ (host) đã cài đặt Docker và Docker Compose.

Bước 1: Chuẩn bị các thư mục

Đầu tiên, tạo các thư mục cần thiết để lưu trữ dữ liệu và cấu hình của ứng dụng. Sau đó, đặt quyền sở hữu chính xác cho các thư mục này. Lệnh chown là rất quan trọng vì container rwMarkable chạy với người dùng không phải root (ID người dùng 1000 và ID nhóm 1000) để tăng cường bảo mật. Các thư mục trên máy chủ cần phải khớp với quyền sở hữu này để container có thể ghi dữ liệu vào chúng.

Chạy các lệnh sau trong terminal của bạn:

mkdir -p data/users data/checklists data/notes data/sharing cache
sudo chown -R 1000:1000 data/
sudo chown -R 1000:1000 cache/

Bước 2: Tạo tệp docker-compose.yml

Tạo một tệp có tên docker-compose.yml trong cùng thư mục và dán nội dung sau vào đó:

services:
  app:
    # Sử dụng hình ảnh chính thức từ GitHub Container Registry
    image: ghcr.io/fccview/rwmarkable:main
    container_name: rwmarkable
    
    # Chạy container với người dùng không phải root để tăng cường bảo mật
    user: "1000:1000"
    
    ports:
      # Ánh xạ cổng 1122 trên máy chủ tới cổng 3000 trong container
      # Có thể thay đổi cổng 1122 thành bất kỳ cổng nào khác chưa được sử dụng
      - "1122:3000"
      
    volumes:
      # Gắn thư mục data cục bộ vào container để lưu trữ dữ liệu bền vững
      -./data:/app/data:rw
      # Gắn thư mục config cục bộ (nếu có) để thêm chủ đề/emoji tùy chỉnh
      -./config:/app/config:ro
      
    restart: unless-stopped
    environment:
      - NODE_ENV=production
    init: true

Bước 3: Khởi chạy container

Từ thư mục chứa tệp docker-compose.yml, chạy lệnh sau để khởi động ứng dụng:

docker-compose up -d

Cờ -d (detached) sẽ chạy container trong nền.

Mẹo: Xử lý lỗi quyền ban đầu

Đôi khi, trong lần chạy đầu tiên, có thể xảy ra các vấn đề về quyền khi Docker cố gắng tạo các thư mục. Nếu gặp sự cố, việc chạy lệnh khởi động lần đầu tiên với sudo có thể giải quyết vấn đề này. Sau lần chạy đầu tiên thành công, container có thể được quản lý bởi người dùng thông thường.

sudo docker-compose up -d

Bước 4: Thiết lập ban đầu

Sau khi container khởi động, truy cập ứng dụng trong trình duyệt của bạn tại http://<địa-chỉ-ip-máy-chủ>:1122. Trong lần truy cập đầu tiên, bạn sẽ được chuyển hướng đến trang /auth/setup để tạo tài khoản quản trị viên đầu tiên. Sau khi hoàn tất, rwMarkable đã sẵn sàng để sử dụng.


Sau khi phân tích sâu, rõ ràng rwMarkable không chỉ là một công cụ mà còn là một tuyên ngôn. Nó đại diện cho một cách tiếp cận có chủ ý đối với năng suất, nơi quyền kiểm soát, sự đơn giản và quyền riêng tư được đặt lên hàng đầu.

rwMarkable tỏa sáng nhờ sự đơn giản, quyền sở hữu dữ liệu tuyệt đối thông qua kiến trúc dựa trên tệp, khả năng sao lưu dễ dàng, các tính năng mạnh mẽ như bảng Kanban và trình soạn thảo ghi chú phong phú, cùng với khả năng mở rộng thông qua REST API.

Việc lựa chọn rwMarkable không chỉ là chọn một phần mềm; đó là chọn một triết lý. Đó là một quyết định xây dựng một cuộc sống số có chủ đích hơn, được kiểm soát và riêng tư hơn. Đối với những người dùng có giá trị phù hợp với triết lý này, rwMarkable không chỉ là một ứng dụng năng suất tốt—nó có thể là ứng dụng hoàn hảo.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận