Image default
Máy Tính

Hướng Dẫn Cài Đặt Joplin Server Trên Raspberry Pi: Tự Chủ Ghi Chú An Toàn

Joplin là một ứng dụng ghi chú mã nguồn mở được đánh giá cao, đặc biệt bởi những người dùng quan tâm đến quyền riêng tư và hiệu suất công việc. Ứng dụng này cung cấp khả năng đồng bộ ghi chú dễ dàng giữa các thiết bị, nhưng để kiểm soát hoàn toàn dữ liệu của mình và đảm bảo an toàn tuyệt đối, bạn có thể tự thiết lập một Joplin Server riêng. Việc tự host Joplin Server trên Raspberry Pi không chỉ giúp bạn bảo mật thông tin cá nhân mà còn cho phép tùy chỉnh theo nhu cầu riêng, tiết kiệm chi phí và khai thác tối đa sức mạnh của thiết bị nhúng.

Bài viết này sẽ hướng dẫn bạn từng bước cách thiết lập Joplin Server trên Raspberry Pi, từ chuẩn bị môi trường máy chủ đến cấu hình chi tiết, giúp bạn xây dựng một hệ thống ghi chú cá nhân mạnh mẽ và bảo mật.

Bước 1: Chuẩn bị Raspberry Pi và cài đặt Docker

Để bắt đầu, chúng ta giả định rằng Raspberry Pi của bạn đã được cài đặt và hoạt động. Trong hướng dẫn này, chúng ta sẽ thực hiện trên Raspberry Pi 5 chạy Raspberry Pi OS (64-bit).

Cập nhật hệ thống Raspberry Pi

Đầu tiên, bạn cần đảm bảo hệ điều hành và các gói ứng dụng trên Raspberry Pi được cập nhật lên phiên bản mới nhất.

  1. Mở một phiên làm việc Terminal trên Raspberry Pi của bạn.

  2. Cập nhật cơ sở dữ liệu của trình quản lý gói apt để đảm bảo nó nắm giữ các thông tin gói mới nhất:

    sudo apt update

    Cửa sổ Terminal hiển thị kết quả lệnh sudo apt update trên Raspberry PiCửa sổ Terminal hiển thị kết quả lệnh sudo apt update trên Raspberry Pi

  3. Tiếp theo, nâng cấp bất kỳ gói nào chưa được cập nhật:

    sudo apt upgrade -y

    Kết quả thực thi lệnh sudo apt upgrade để cập nhật các gói hệ thống Raspberry PiKết quả thực thi lệnh sudo apt upgrade để cập nhật các gói hệ thống Raspberry Pi

Cài đặt và cấu hình Docker

Nếu chưa có, bạn cần cài đặt và cấu hình Docker. Docker là một nền tảng quan trọng cho phép bạn chạy các ứng dụng và máy chủ trong các môi trường container độc lập, giúp tránh xung đột phần mềm và quản lý tài nguyên hiệu quả hơn.

  1. Tải xuống và cài đặt các gói Docker mới nhất:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. Đảm bảo Docker đã được cài đặt thành công bằng cách chạy lệnh này, nó sẽ tải một hình ảnh kiểm tra và chạy nó trong một container:

    sudo docker run hello-world

    Khi container chạy, nó sẽ hiển thị một thông báo xác nhận và sau đó thoát.
    Màn hình Terminal hiển thị thông báo "Hello from Docker!" sau khi chạy container thử nghiệmMàn hình Terminal hiển thị thông báo "Hello from Docker!" sau khi chạy container thử nghiệm

  3. Tiếp theo, thêm người dùng hiện tại của bạn vào nhóm docker để tránh phải sử dụng quyền root cho mỗi lệnh Docker:

    sudo usermod -aG docker $USER
  4. Cuối cùng, thoát phiên Terminal hiện tại và mở một phiên mới để làm mới quyền người dùng của bạn.

Cài đặt Docker Compose

Để dễ dàng hơn trong việc tạo và quản lý nhiều container Docker cùng lúc, chúng ta sẽ cài đặt docker-compose.

  1. Trước tiên, cài đặt các điều kiện tiên quyết cần thiết cho docker-compose:

    sudo apt install -y libffi-dev libssl-dev python3-dev python3-pip
  2. Bây giờ bạn có thể cài đặt docker-compose bằng lệnh này:

    sudo pip3 install docker-compose
  3. Nếu bạn gặp lỗi “environment is externally managed”, hãy thực hiện lệnh này thay thế:

    sudo apt install docker-compose-plugin

Bước 2: Cài đặt máy chủ web Nginx và chứng chỉ SSL

Sau khi Docker đã sẵn sàng, chúng ta cần thiết lập một máy chủ web và chứng chỉ SSL để bảo mật Joplin Server. Điều này là cần thiết để đảm bảo kết nối giữa các thiết bị và máy chủ của bạn được mã hóa.

Bạn có thể muốn thiết lập tên miền riêng và Dynamic DNS để cho phép truy cập từ xa vào Joplin Server. Các bước này nằm ngoài phạm vi của bài viết này, vì việc thiết lập Dynamic DNS rất khác nhau giữa các bộ định tuyến. Tuy nhiên, nếu không có, bạn chỉ có thể đồng bộ hóa ghi chú khi ở cùng mạng với Joplin Server.

Cài đặt Nginx

Nginx là một máy chủ web hiệu suất cao mà chúng ta sẽ sử dụng để làm proxy cho Joplin Server.

  1. Cài đặt máy chủ web Nginx:

    sudo apt install -y nginx

Tạo chứng chỉ CA và chứng chỉ SSL tự ký

Để thiết lập SSL, bạn cần tạo khóa riêng (private key) cho cơ quan cấp chứng chỉ (CA) của mình. Đây là một chứng chỉ tự ký (self-signed certificate) sẽ được sử dụng để mã hóa kết nối.

  1. Tạo khóa riêng cho CA của bạn. Khi được yêu cầu mật khẩu (passphrase), bạn nên sử dụng một mật khẩu mạnh để ngăn chặn các vi phạm bảo mật tiềm ẩn. Chỉ cần sử dụng lệnh này và làm theo hướng dẫn:

    sudo openssl genrsa -aes256 -out /etc/ssl/private/local_ca.key 4096
  2. Tiếp theo, bạn cần tạo một chứng chỉ. Chúng ta sẽ tạo một chứng chỉ CA có thời hạn 5 năm (1826 ngày) với lệnh sau. Khi được yêu cầu mật khẩu, hãy sử dụng mật khẩu bạn đã tạo ở bước 2.

    sudo openssl req -x509 -new -nodes -key /etc/ssl/private/local_ca.key -sha256 -days 1826 -out /etc/ssl/certs/local_ca.crt

    Bạn sẽ được yêu cầu cung cấp thêm thông tin, nhưng bạn có thể bỏ qua bất kỳ trường nào bằng cách nhấn dấu chấm (.).

Tạo chứng chỉ SSL cho Nginx

Sau khi tạo CA và chứng chỉ tự ký, Nginx sẽ cần chứng chỉ riêng cho máy chủ web.

  1. Trước tiên, tạo một chứng chỉ tự ký cho dịch vụ Nginx:

    sudo openssl req -new -nodes -out /etc/ssl/certs/nginx.csr -newkey rsa:4096 -keyout /etc/ssl/private/nginx.key -subj '/CN=Nginx Service'
  2. Máy chủ web cần một tệp mở rộng để cấu hình các cài đặt chứng chỉ, chẳng hạn như tên máy chủ và địa chỉ IP. Sao chép văn bản sau vào Terminal, thay đổi các giá trị cho DNS.1IP.1 thành tên máy chủ và địa chỉ IP của Raspberry Pi của bạn:

    cat > nginx.ext
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = [Type Raspberry's hostname here]
    IP.1 = [Type Raspberry's IP address here]
    EOF
  3. Xác minh nội dung đã chính xác bằng cách sử dụng:

    cat nginx.ext

    Kiểm tra nội dung tệp nginx.ext để cấu hình chứng chỉ SSL cho NginxKiểm tra nội dung tệp nginx.ext để cấu hình chứng chỉ SSL cho Nginx

  4. Cuối cùng, ký chứng chỉ cho Nginx với lệnh này:

    sudo openssl x509 -req -in /etc/ssl/certs/nginx.csr -CA /etc/ssl/certs/local_ca.crt -CAkey /etc/ssl/private/local_ca.key -CAcreateserial -out /etc/ssl/certs/nginx.crt -days 3650 -sha256 -extfile nginx.ext

Cấu hình Nginx cho Joplin Server

Chúng ta sắp sẵn sàng cài đặt Joplin Server. Tuy nhiên, trước đó, chúng ta cần tạo một cấu hình Nginx mới cho Joplin Server.

  1. Tạo một tệp cấu hình mới bằng nano trong phiên Terminal của bạn:

    sudo nano /etc/nginx/sites-enabled/joplin
  2. Sao chép và dán thông tin sau, đảm bảo chỉnh sửa server_name để khớp với cấu hình của bạn (ví dụ: raspberrypi.local hoặc tên máy chủ của bạn):

    server {
        listen 443 ssl http2;
        server_name raspberrypi.local;
    
        ssl_certificate /etc/ssl/certs/nginx.crt;
        ssl_certificate_key /etc/ssl/private/nginx.key;
    
        location /joplin/ {
            proxy_redirect off;
            proxy_pass http://127.0.0.1:22300;
            rewrite ^/joplin/(.*)$ /$1 break;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  3. Lưu và thoát bằng cách nhấn Ctrl+X, sau đó [Y], và Enter/Return.
    Cấu hình Nginx cho Joplin Server trong tệp /etc/nginx/sites-enabled/joplinCấu hình Nginx cho Joplin Server trong tệp /etc/nginx/sites-enabled/joplin

  4. Cuối cùng, khởi động lại Nginx để áp dụng cấu hình máy chủ mới:

    sudo systemctl restart nginx.service

Bước 3: Thiết lập Joplin Server tự host

Với các bước chuẩn bị đã hoàn tất, đã đến lúc cài đặt và cấu hình Joplin Server. Docker sẽ thực hiện hầu hết công việc này cho chúng ta, theo các “công thức” trong kho lưu trữ Docker.

Tạo file docker-compose.yml

Để bắt đầu, bạn cần tạo một tệp docker-compose.yml mới.

  1. Trong Terminal, thực hiện lệnh này:

    nano docker-compose.yml
  2. Tiếp theo, sao chép và dán văn bản dưới đây vào tệp, sau đó lưu tệp và thoát nano.
    Lưu ý quan trọng: Bạn cần thay thế [Enter postgres password here], [Enter postgres username here], [Enter postgres db name here], và [raspberry hostname here] bằng các giá trị thực tế của bạn. Đảm bảo mật khẩu và tên người dùng đủ mạnh.

    version: '3'
    services:
      db:
        restart: unless-stopped
        image: postgres:13.1
        ports:
          - "5432:5432"
        volumes:
          - /data/joplin-data:/var/lib/postgresql/data
        environment:
          - POSTGRES_PASSWORD=[Enter postgres password here]
          - POSTGRES_USER=[Enter postgres username here]
          - POSTGRES_DB=[Enter postgres db name here]
      app:
        environment:
          - APP_BASE_URL=https://[raspberry hostname here]/joplin
          - APP_PORT=22300
          - POSTGRES_PASSWORD=[Enter postgres password here]
          - POSTGRES_DATABASE=[Enter postgres db name here]
          - POSTGRES_USER=[Enter postgres username here]
          - POSTGRES_PORT=5432
          - POSTGRES_HOST=db
          - DB_CLIENT=pg
        restart: unless-stopped
        image: etechonomy/joplin-server:latest
        ports:
          - "127.0.0.1:22300:22300"
        depends_on:
          - db

Triển khai Joplin Server

  1. Tiếp theo, bạn sẽ sử dụng tệp cấu hình này để tải xuống và cài đặt các hình ảnh Docker cần thiết, cũng như khởi chạy Joplin Server:

    docker compose up -d

Kiểm tra và cấu hình ban đầu

  1. Cuối cùng, kiểm tra xem máy chủ có đang chạy hay không bằng cách mở một cửa sổ trình duyệt web mới và điều hướng đến:

    https://[hostname].local/joplin

    Thay thế [hostname] bằng tên máy chủ bạn đã cấu hình cho Raspberry Pi của mình. Bạn có thể sẽ nhận được cảnh báo về chứng chỉ, nhưng bạn có thể chấp nhận chúng bằng cách nhấp vào Advanced -> Accept the Risk and Continue.

    Bạn sẽ thấy trang đăng nhập Joplin Server. Tên người dùng mặc định là admin@localhost và mật khẩu mặc định là admin. Hãy đảm bảo thay đổi những thông tin này ngay lập tức để duy trì bảo mật cho server của bạn.
    Giao diện đăng nhập Joplin Server trên trình duyệt web sau khi cài đặt thành côngGiao diện đăng nhập Joplin Server trên trình duyệt web sau khi cài đặt thành công

Bước 4: Kết nối thiết bị với Joplin Server

Sau khi cấu hình máy chủ hoàn tất, bạn có thể bắt đầu đồng bộ hóa ứng dụng Joplin với máy chủ tự host trên các thiết bị của mình. Bạn có thể cần nhập chứng chỉ bảo mật bạn đã tạo vào các thiết bị mà bạn muốn kết nối. Sử dụng email, SCP hoặc bất kỳ phương pháp nào khác, chuyển một bản sao của chứng chỉ CA được tìm thấy trên Raspberry Pi của bạn tại /etc/ssl/certs/local_ca.crt sang các thiết bị đó. Sau đó, trong cài đặt đồng bộ hóa của ứng dụng Joplin trên thiết bị, chọn “Joplin Server” làm phương thức đồng bộ và nhập URL của server cùng thông tin đăng nhập của bạn.

Kết luận

Việc tự host Joplin Server trên Raspberry Pi là một quá trình khá dài và đòi hỏi sự tỉ mỉ, nhưng nếu bạn làm theo các hướng dẫn một cách chính xác, bạn sẽ có một hệ thống ghi chú cá nhân hoàn chỉnh, an toàn và hoàn toàn nằm trong tầm kiểm soát của bạn. Giải pháp này không chỉ mang lại sự yên tâm về quyền riêng tư dữ liệu mà còn cho phép bạn tùy chỉnh trải nghiệm ghi chú của mình một cách sâu sắc hơn.

Bước tiếp theo của bạn có thể là làm cho Joplin Server của mình có thể truy cập trực tuyến. Như đã đề cập trước đó, điều này sẽ yêu cầu đăng ký tên miền riêng và sử dụng Dynamic DNS để “phơi bày” Joplin Server của Raspberry Pi ra thế giới bên ngoài. Tuy nhiên, hãy đảm bảo rằng bạn đã bảo mật hoàn toàn Raspberry Pi của mình trước khi thực hiện điều này. Khám phá thêm các hướng dẫn tự host ứng dụng khác trên congnghetonghop.com để tối ưu hóa không gian làm việc số của bạn.

Related posts

Hoto Snapbloq: Bộ Công Cụ Đa Năng Cần Có Cho Mọi Tín Đồ Công Nghệ

Administrator

Tự xây dựng Dashboard nhà thông minh chuyên nghiệp với Home Assistant, Grafana, InfluxDB

Administrator

Điểm Nhấn Asus Computex 2025: Màn Hình 610Hz, Bàn Phím Tách Đôi, eGPU Thunderbolt 5 Đột Phá

Administrator