Máy Tính

Tự Host Joplin Server Trên Raspberry Pi: Hướng Dẫn Chi Tiết Để Kiểm Soát Ghi Chú Của Bạn

Mô tả: Một laptop đang chạy ứng dụng ghi chú Joplin mã nguồn mở cùng với GIMP, minh họa khả năng hoạt động đa nền tảng.

Joplin là một ứng dụng ghi chú mã nguồn mở phổ biến, được yêu thích bởi những người coi trọng quyền riêng tư và các chuyên gia năng suất. Ứng dụng này cho phép đồng bộ hóa ghi chú trên nhiều thiết bị một cách dễ dàng. Tuy nhiên, nếu bạn muốn giữ dữ liệu của mình hoàn toàn an toàn và nằm trong tầm kiểm soát, việc thiết lập máy chủ Joplin riêng là một giải pháp tối ưu.

Bài viết này sẽ hướng dẫn bạn từng bước cách tự host Joplin server trên Raspberry Pi. Chúng ta sẽ bắt đầu bằng việc chuẩn bị máy chủ và cấu hình nó phù hợp với nhu cầu của bạn. Cho dù mục tiêu của bạn là tăng cường bảo mật, tiết kiệm chi phí hay cá nhân hóa trải nghiệm ghi chú, việc tự host Joplin chính là con đường để bạn đạt được điều đó.

Mô tả: Một laptop đang chạy ứng dụng ghi chú Joplin mã nguồn mở cùng với GIMP, minh họa khả năng hoạt động đa nền tảng.Mô tả: Một laptop đang chạy ứng dụng ghi chú Joplin mã nguồn mở cùng với GIMP, minh họa khả năng hoạt động đa nền tảng.

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

Chúng ta sẽ bắt đầu với giả định rằng bạn đã cài đặt và chạy Raspberry Pi của mình. Hướng dẫn này được thực hiện trên Raspberry Pi 5 chạy Raspberry Pi OS (64-bit, phiên bản ngày 22 tháng 10 năm 2024). Đầu tiên, bạn phải cập nhật và nâng cấp hệ điều hành với các gói mới nhất.

Cập nhật hệ thống

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

  2. Cập nhật trình quản lý gói apt để đảm bảo cơ sở dữ liệu của nó được cập nhật:

    sudo apt update

    Giao diện Terminal hiển thị lệnh "sudo apt update" đang chạy để cập nhật các gói trên Raspberry Pi, bước đầu tiên trong quá trình cài đặt Docker.Giao diện Terminal hiển thị lệnh "sudo apt update" đang chạy để cập nhật các gói trên Raspberry Pi, bước đầu tiên trong quá trình cài đặt Docker.

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

    sudo apt upgrade -y

    Ảnh chụp màn hình Terminal với lệnh "sudo apt upgrade -y" đang thực thi để nâng cấp các gói đã cài đặt trên Raspberry Pi, chuẩn bị cho việc tự host Joplin.Ảnh chụp màn hình Terminal với lệnh "sudo apt upgrade -y" đang thực thi để nâng cấp các gói đã cài đặt trên Raspberry Pi, chuẩn bị cho việc tự host Joplin.

Cài đặt Docker Engine

Tiếp theo, bạn sẽ cần cài đặt và cấu hình Docker nếu chưa có. Docker cho phép bạn chạy các ứng dụng và máy chủ trong các container riêng biệt, giúp tránh xung đột phần mềm.

  1. Đầu tiên, 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 sau, lệnh này sẽ tải xuống 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.

    Kết quả từ việc chạy lệnh "sudo docker run hello-world" trong Terminal, xác nhận Docker đã được cài đặt và hoạt động chính xác trên Raspberry Pi.Kết quả từ việc chạy lệnh "sudo docker run hello-world" trong Terminal, xác nhận Docker đã được cài đặt và hoạt động chính xác trên Raspberry Pi.

Cấu hình người dùng Docker và cài đặt Docker Compose

  1. 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:
    sudo usermod -aG docker $USER
  2. 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.

Chúng ta sẽ cài đặt docker-compose để hoàn tất và giúp việc tạo các Docker container mới dễ dàng hơn.

  1. Đầu 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 với lệnh này:
    sudo pip3 install docker-compose
  3. Nếu bạn gặp lỗi error: externally managed environment, hãy sử dụng lệnh này thay thế:
    sudo apt install docker-compose-plugin

Bước 2: Thiết lập Máy chủ Web Nginx và Chứng chỉ SSL Tự Ký

Khi Docker đã được cài đặt, bạn gần như đã sẵn sàng để cài đặt máy chủ Joplin của mình. Đầu tiên, chúng ta phải đảm bảo nó có một máy chủ web và chứng chỉ SSL để giữ an toàn.

Bạn cũng 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 máy chủ Joplin. Các bước này nằm ngoài phạm vi bài viết này vì việc thiết lập Dynamic DNS khác nhau rất nhiều giữa các bộ định tuyến. Tuy nhiên, nếu không có Dynamic DNS, bạn chỉ có thể đồng bộ ghi chú của mình khi ở trên cùng mạng với máy chủ Joplin.

Hãy chuyển sang thiết lập máy chủ web bạn sẽ sử dụng cho máy chủ Joplin của mình.

Cài đặt Nginx

  1. Đầu tiên, cài đặt máy chủ web Nginx:
    sudo apt install -y nginx

Tạo Chứng chỉ CA Tự Ký

  1. Để thiết lập SSL, hãy tạo khóa riêng của cơ quan cấp chứng chỉ (CA) của bạn. Khi được hỏi về cụm mật khẩu (passphrase), tốt nhất là nên sử dụng để 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 khi chúng xuất hiệ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ó giá trị trong năm năm (1826 ngày) với lệnh sau. Khi được hỏi về cụm mật khẩu, hãy sử dụng cụm 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ông tin bổ sung, nhưng bạn có thể bỏ qua bất kỳ trường nào bằng cách sử dụng dấu chấm (.).

Tạo Chứng chỉ SSL cho Nginx

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

Đầu 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'

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.1 và IP.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

Xác minh nội dung chính xác bằng cách sử dụng:

cat nginx.ext

Hiển thị nội dung tệp "nginx.ext" trong Terminal bằng lệnh "cat nginx.ext", kiểm tra các thông số cấu hình chứng chỉ SSL cho Nginx trên Raspberry Pi.Hiển thị nội dung tệp "nginx.ext" trong Terminal bằng lệnh "cat nginx.ext", kiểm tra các thông số cấu hình chứng chỉ SSL cho Nginx trên Raspberry Pi.

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 gần như đã sẵn sàng để cài đặt máy chủ Joplin. Tuy nhiên, trước khi làm điều đó, chúng ta cần tạo một cấu hình Nginx mới cho máy chủ Joplin. 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

Sao chép và dán thông tin sau, đảm bảo chỉnh sửa server_name để phù hợp với cấu hình 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;
}
}

Lưu và thoát bằng cách sử dụng Ctrl+X, [Y], và Enter/Return.

Ảnh chụp màn hình trình soạn thảo Nano với tệp cấu hình Nginx cho Joplin server, hiển thị các thiết lập proxy và SSL cần thiết.Ảnh chụp màn hình trình soạn thảo Nano với tệp cấu hình Nginx cho Joplin server, hiển thị các thiết lập proxy và SSL cần thiết.

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: Triển khai Máy chủ Joplin 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 máy chủ Joplin. Docker sẽ thực hiện phần lớn công việc cho chúng ta, theo các “recipe” trong kho Docker. Để bắt đầu, bạn sẽ cần tạo một tệp docker-compose.yml mới. Trong Terminal, hãy thực hiện lệnh này:

nano docker-compose.yml

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.

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

Tiếp theo, bạn sẽ sử dụng tệp cấu hình để tải xuống và cài đặt các hình ảnh Docker cần thiết:

docker compose up -d

Kiểm tra và đăng nhập vào Joplin Server

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. 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 của Joplin Server. Tên người dùng mặc định là admin@localhost và mật khẩu mặc định là admin. Đảm bảo thay đổi chúng ngay lập tức để duy trì bảo mật của bạn.

Giao diện đăng nhập của Joplin Server trên trình duyệt web, xác nhận việc cài đặt thành công máy chủ Joplin tự host trên Raspberry Pi.Giao diện đăng nhập của Joplin Server trên trình duyệt web, xác nhận việc cài đặt thành công máy chủ Joplin tự host trên Raspberry Pi.

Kết nối Thiết bị của Bạn với Joplin Server Tự Host

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 của mình trên các thiết bị. Bạn có thể cần nhập chứng chỉ bảo mật mà bạn đã tạo vào các thiết bị 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ị đó.

Joplin Server đã sẵn sàng hoạt động!

Vậy là xong. Đây là một quy trình khá dài, nhưng nếu bạn đã làm theo hướng dẫn một cách chính xác, mọi thứ sẽ hoạt động trơn tru. Tất nhiên, bước tiếp theo của bạn có thể là đưa máy chủ Joplin của bạn lên mạng internet. 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 để “lộ” máy chủ Joplin trên Raspberry Pi của bạn ra thế giới bên ngoài. Do đó, 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.

Nếu bạn có bất kỳ câu hỏi nào trong quá trình tự host Joplin server hoặc muốn chia sẻ kinh nghiệm, đừng ngần ngại để lại bình luận bên dưới!

Related posts

5 Plugin Logseq Không Thể Thiếu Giúp Tối Ưu Năng Suất Ghi Chú Của Bạn

Administrator

Đánh giá HiFile: Trình quản lý tệp đa nền tảng tiềm năng nhưng còn nhiều hạn chế

Administrator

7 Lý Do Hàng Đầu Nên Chuyển Sang LibreOffice Thay Thế Microsoft Office Ngay Hôm Nay

Administrator