Cách cài đặt Lemmy - Content Aggregator giống Reddit trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Lemmy là một trình tổng hợp nội dung và nền tảng blog nhỏ giống Reddit nguồn mở dành cho fediverse. Nó cho phép bạn tạo và điều hành cộng đồng và có thể giao tiếp với các dịch vụ ActivityPub khác bao gồm Mastodon, Pleroma và Peertube.

Mặc dù có những phiên bản Lemmy phổ biến mà bạn có thể tham gia và sử dụng, bạn cũng có thể chạy phiên bản Lemmy của riêng mình cho bạn bè và gia đình. Trong hướng dẫn này, bạn sẽ học cách cài đặt Lemmy trên máy chủ Ubuntu 22.04.

Điều kiện tiên quyết​


  • Máy chủ chạy Ubuntu 22.04.

  • Người dùng sudo không phải root.

  • Tên miền đủ điều kiện (FQDN) như example.com.

  • Đảm bảo mọi thứ đều đã cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Ubuntu đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Bật Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy một thông báo tương tự đầu ra.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt Docker và Docker Compose​

Ubuntu 22.04 đi kèm với phiên bản Docker cũ hơn. Để cài đặt phiên bản mới nhất, trước tiên, hãy nhập khóa GPG của Docker.
Mã:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
Tạo tệp kho lưu trữ Docker.
Mã:
$ echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Cài đặt phiên bản mới nhất của Docker.
Mã:
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Xác minh rằng đó là đang chạy.
Mã:
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2023-08-04 07:48:20 UTC; 4min 29s ago
TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 2372 (dockerd) Tasks: 8 Memory: 23.9M CPU: 295ms CGroup: /system.slice/docker.service ??2372 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Theo mặc định, Docker yêu cầu quyền root. Nếu bạn muốn tránh sử dụng sudo mỗi khi bạn chạy lệnh docker, hãy thêm tên người dùng của bạn vào docker nhóm.
Mã:
$ sudo usermod -aG docker $(whoami)
Bạn sẽ cần phải đăng xuất khỏi máy chủ và đăng nhập lại với cùng một người dùng để kích hoạt thay đổi này hoặc sử dụng lệnh sau lệnh.
Mã:
$ su - ${USER}
Xác nhận rằng người dùng của bạn đã được thêm vào nhóm Docker.
Mã:
$ groups
navjot wheel docker

Bước 3 - Tạo và tải xuống các tệp Lemmy​

Tạo một thư mục cho Lemmy.
Mã:
$ mkdir ~/lemmy
Chuyển sang thư mục.
Mã:
$ cd ~/lemmy
Lấy tệp Nginx tùy chỉnh để làm việc Docker.
Mã:
$ wget https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx_internal.conf
Lấy tệp Docker compose.
Mã:
$ wget https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/docker-compose.yml
Tạo một thư mục cho ứng dụng Pictrs.
Mã:
$ mkdir -p volumes/pict-rs
Đặt quyền chính xác cho thư mục.
Mã:
$ sudo chown -R 991:991 volumes/pict-rs

Bước 4 - Cấu hình Lemmy​

Trước khi tiến hành cài đặt, chúng ta cần chỉnh sửa các tệp đã tải xuống.

Mở tệp Docker compose để chỉnh sửa.
Mã:
$ nano docker-compose.yml
Thực hiện các thay đổi sau trong tệp:

  • Thay thế biến {{ lemmy_port }} bằng 8536 trong tệp.

  • Thay thế biến {{ lemmy_docker_image }} với dessalines/lemmy:0.18.3 trong tệp. Bạn có thể tải phiên bản mới nhất của hình ảnh Docker của Lemmy từ trang Docker Hub. Trang này yêu cầu bạn phải có tài khoản Docker. Ngoài ra, bạn có thể lấy phiên bản từ trang phát hành Github.

  • Thay thế biến {{ lemmy_docker_ui_image }} bằng dessalines/lemmy-ui:0.18.3 trong tệp. Đảm bảo phiên bản khớp với hình ảnh docker của Lemmy, nếu không, nó sẽ không hoạt động.

  • Tạo khóa API cho pict-rs bằng lệnh sau.
Mã:
$ openssl rand -base64 32
lRLcaM5rovxzmztlDvtkGijJyBtg4KlEKC6HRb3dn7s=
Khóa PICTRS__API_KEY trong thuộc tính môi trường bên dưới Dịch vụ pictrs được cấu hình sai khi nói rằng đó phải là mật khẩu PostgreSQL. Thay thế biến {{ postgres_password }} trên biến khóa API bằng khóa được tạo trong lệnh trên.

[*]
Thay thế biến {{ domain }} trong tệp bằng tên miền đủ điều kiện cho phiên bản Lemmy của bạn.

[*]
Thay thế {{ postgres_password }} bằng mật khẩu mạnh mà bạn chọn cho máy chủ PostgreSQL.

[*]
Thay thế biến môi trường hiện tại RUST_LOG bằng sau đây.
Mã:
- RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"
- RUST_BACKTRACE=full
[*]
Thêm phần sau vào thuộc tính hostname trong PostgreSQL dịch vụ.
Mã:
command: [ "postgres", "-c", "session_preload_libraries=auto_explain", "-c", "auto_explain.log_min_duration=5ms", "-c", "auto_explain.log_analyze=true", "-c", "track_activity_query_size=1048576", ]
ports: # use a different port so it doesnt conflict with potential postgres db running on the host - "5433:5432"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất. Tiếp theo, tạo và mở tệp lemmy.hjson để chỉnh sửa.
Mã:
$ nano lemmy.hjson
Dán nội dung sau mã.
Mã:
{ # for more info about the config, check out the documentation # https://join-lemmy.org/docs/en/administration/configuration.html database: { host: "postgres" user: "lemmy" password: "yourpsqlpassword" database: "lemmy" port: 5432 } hostname: "example.com" pictrs: { url: "http://pictrs:8080/" # Set a custom pictrs API key. ( Required for deleting images ) api_key: "lRLcaM5rovxzmztlDvtkGijJyBtg4KlEKC6HRb3dn7s=" } email: { smtp_server: "email-smtp.us-west-2.amazonaws.com:465" smtp_login: "AmazonSESUserID" smtp_password:"AmazonSESPassword" smtp_from_address: "[emailprotected]" # Whether or not smtp connections should use tls. Can be none, tls, or starttls tls_type: "tls" } setup: { # Username for the admin user admin_username: "admin" # Password for the admin user. It must be at least 10 characters. admin_password: "tf6HHDS4RolWfFhk4Rq9" # Name of the site (can be changed later) site_name: "Howtoforge Lemmy" # Email for the admin user (optional, can be omitted and set later through the website) admin_email: "[emailprotected]" }
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Bước tiếp theo là tạo tệp cấu hình PostgreSQL tùy chỉnh để tối ưu hóa cơ sở dữ liệu. Truy cập trang web PGTune để tạo các giá trị tùy thuộc vào kích thước máy chủ của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22600%22%3E%3C/svg%3E


Nhập các giá trị máy chủ và nhấp vào nút Tạo và tạo cấu hình tùy chỉnh.

Tạo và mở tệp customPostgresql.conf cho chỉnh sửa.
Mã:
$ nano customPostgresql.conf
Dán mã bạn lấy từ PGTune.
Mã:
# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 2 GB
# CPUs num: 2
# Connections num: 100
# Data Storage: ssd
max_connections = 100
shared_buffers = 512MB
effective_cache_size = 1536MB
maintenance_work_mem = 128MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 2621kB
min_wal_size = 1GB
max_wal_size = 4GB
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 5 - Cài đặt Lemmy​

Bây giờ tất cả các tệp đã được định cấu hình, đã đến lúc chạy Lemmy. Chạy lệnh sau để khởi chạy các container docker.
Mã:
$ docker compose up -d
Kiểm tra trạng thái của các container.
Mã:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75443bb3db3e nginx:1-alpine "/docker-entrypoint.…" 32 seconds ago Up 29 seconds 80/tcp, 0.0.0.0:8536->8536/tcp, :::8536->8536/tcp lemmy-proxy-1
8393c8d625af dessalines/lemmy-ui:0.18.1 "docker-entrypoint.s…" 32 seconds ago Up 30 seconds 1234/tcp lemmy-lemmy-ui-1
ea743c8279f7 dessalines/lemmy:0.18.1 "/app/lemmy" 32 seconds ago Up 26 seconds lemmy-lemmy-1
78855ae7871e postgres:15-alpine "docker-entrypoint.s…" 33 seconds ago Up 31 seconds 5432/tcp lemmy-postgres-1
9556b57afdb9 asonix/pictrs:0.4.0 "/sbin/tini -- /usr/…" 33 seconds ago Up 31 seconds 6669/tcp, 8080/tcp lemmy-pictrs-1
Bạn cũng có thể kiểm tra trạng thái bằng Docker Soạn thảo.
Mã:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
lemmy-lemmy-1 dessalines/lemmy:0.18.1 "/app/lemmy" lemmy About a minute ago Up About a minute
lemmy-lemmy-ui-1 dessalines/lemmy-ui:0.18.1 "docker-entrypoint.s…" lemmy-ui About a minute ago Up About a minute 1234/tcp
lemmy-pictrs-1 asonix/pictrs:0.4.0 "/sbin/tini -- /usr/…" pictrs About a minute ago Up About a minute 6669/tcp, 8080/tcp
lemmy-postgres-1 postgres:15-alpine "docker-entrypoint.s…" postgres About a minute ago Up About a minute 5432/tcp
lemmy-proxy-1 nginx:1-alpine "/docker-entrypoint.…" proxy About a minute ago Up About a minute 80/tcp, 0.0.0.0:8536->8536/tcp, :::8536->8536/tcp
Bạn có thể kiểm tra bằng cách mở URL http://:8536/ và bạn sẽ thấy trang chủ của Lemmy. Điều đó kết luận rằng mọi thứ đều ổn. Bước tiếp theo là cài đặt Nginx và Certbot để phục vụ Lemmy thông qua tên miền.

Bước 6 - Cài đặt Nginx​

Ubuntu 22.04 được tích hợp phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Khởi động Nginx.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2023-08-04 09:01:56 UTC; 3s ago Docs: https://nginx.org/en/docs/ Process: 5297 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 5298 (nginx) Tasks: 2 (limit: 2308) Memory: 1.9M CPU: 7ms CGroup: /system.slice/nginx.service ??5298 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??5299 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Bước 7 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
Fri 2023-08-04 09:50:30 UTC 46min left Fri 2023-08-04 01:49:37 UTC 7h ago apt-daily.timer apt-daily.service
Sat 2023-08-05 00:00:00 UTC 14h left Wed 2023-06-28 04:41:28 UTC 5h 7min ago dpkg-db-backup.timer dpkg-db-backup.service
Fri 2023-08-04 18:54:00 UTC 9h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 8 - Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/lemmy.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/lemmy.conf
Dán mã sau vào nó.
Mã:
limit_req_zone $binary_remote_addr zone=example.com_ratelimit:10m rate=1r/s;
server { listen 80; listen [::]:80; server_name example.com; # Hide nginx version server_tokens off; location / { return 301 https://$host$request_uri; }
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; access_log /var/log/nginx/lemmy.access.log; error_log /var/log/nginx/lemmy.error.log; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s; # Hide nginx version server_tokens off; # Enable compression for JS/CSS/HTML bundle, for improved client load times. # It might be nice to compress JSON, but leaving that out to protect against potential # compression+encryption information leak attacks like BREACH. gzip on; gzip_types text/css application/javascript image/svg+xml; gzip_vary on; # Various content security headers add_header Referrer-Policy "same-origin"; add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "DENY"; add_header X-XSS-Protection "1; mode=block"; location / { proxy_pass http://localhost:8536; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
}
Lưu ý thư mục gốc được sử dụng trong cấu hình Nginx là /var/www/html/Lemmy/public/.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx.
Mã:
$ sudo systemctl restart nginx

Bước 9 - Truy cập Lemmy​

Mở URL https://example.com và bạn sẽ nhận được trang chủ Lemmy sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22436%22%3E%3C/svg%3E


Nhấp vào liên kết Đăng nhập ở trên cùng để mở trang đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22545%22%3E%3C/svg%3E


Nhập thông tin đăng nhập đã sử dụng ở bước 4 và nhấp vào nút Đăng nhập để tiếp tục. Bạn sẽ được đưa trở lại trang chủ Lemmy. Bạn có thể bắt đầu sử dụng Lemmy từ đây.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22526%22%3E%3C/svg%3E

Bước 10 - Nâng cấp Lemmy​

Để nâng cấp Lemmy, hãy mở tệp docker-compose.yml trong Thư mục ~/lemmy.
Mã:
$ cd ~/lemmy
$ nano docker-compose.yml
Thay đổi số phiên bản của các ứng dụng Lemmy, Lemmy-UI và Pictrs trong tệp. Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Tắt nguồn các thùng chứa Lemmy.
Mã:
$ docker compose down --remove-orphan
Khởi động lại các thùng chứa bằng cấu hình mới.
Mã:
$ docker compose up -d

Bước 11 - Sao lưu và khôi phục Lemmy​

Để sao lưu Lemmy, chúng ta phải sao lưu cả cơ sở dữ liệu và thư mục ổ đĩa. Chạy các lệnh sau để sao lưu cơ sở dữ liệu.
Mã:
$ cd ~/lemmy
$ docker compose exec postgres pg_dumpall -c -U lemmy | gzip > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz
Trong lệnh trên postgres là tên dịch vụ cho PostgreSQL trong tệp compose.

Tiếp theo, sao lưu thư mục volumes bằng lệnh sau lệnh.
Mã:
$ sudo rsync -avP volumes ~/backup/lemmy
Bạn có thể sử dụng tập lệnh sao lưu sau và chạy nó từ hệ thống cục bộ của mình để sao lưu từ xa.
Mã:
#!/bin/sh
# DB Backup
ssh USERNAME@SERVER_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" | gzip > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz
# Volumes folder Backup
rsync -avP -zz --rsync-path="sudo rsync" USERNAME@SERVER_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAME

Khôi phục cơ sở dữ liệu Lemmy​

Để khôi phục cơ sở dữ liệu trên bản cài đặt Lemmy mới, hãy chạy tập lệnh sau lệnh.
Mã:
# Start only the PostgreSQL container first
$ docker compose up -d postgres
# Restore from the .sql.gz backup
$ gunzip < db_dump.sql | docker-compose exec -T postgres psql -U lemmy
# Note: You may need to change the permissions on the postgres directory, depending on your system.
$ chown -R $USER volumes
$ docker compose restart postgres
# Continue with the startup
$ docker compose up -d
Nếu vô tình bạn đã khởi động Lemmy trước, bạn cần xóa cơ sở dữ liệu hiện có bằng các lệnh sau.
Mã:
# Drop the existing DB
docker exec -i FOLDERNAME-postgres-1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
# This also might be necessary when doing a db import with a different password.
docker exec -i FOLDERNAME-postgres-1 psql -U lemmy -c "alter user lemmy with password 'bleh'"
Bây giờ bạn có thể thực hiện các lệnh khôi phục ở trên.

Kết luận​

Đây là kết thúc hướng dẫn của chúng tôi về cách cài đặt Trình tổng hợp nội dung giống Reddit Lemmy trên máy chủ Ubuntu 22.04. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên