Hướng dẫn cài đặt Mastodon trên Ubuntu 20.04

Lượt xem
Home

Mastodon là một ứng dụng mạng xã hội microblogging sử dụng mô hình phi tập trung, có tính chất open-source và có thể được triển khai bởi bất kỳ ai trên bất kỳ server nào. Mỗi phiên bản có các thiết lập và chính sách riêng. Trong bài viết này sẽ hướng dẫn bạn cách cài đặt Mastodon trên Ubuntu 20.04.

Điều kiện để cài đặt Mastodon trên Ubuntu 20.04

Trước khi đi vào cài đặt, hãy chắc rằng bạn đã đáp ứng những điều kiện sau:

Để triển khai Mastodon, bạn cần phải sở hữu một máy chủ để cài đặt ứng dụng này. Các gói VPS tốc độ cao của Vietnix có thể giúp bạn triển khai Mastodon một cách dễ dàng và thuận tiện. Với VPS của Vietnix, bạn có thể tự cài đặt hệ điều hành Ubuntu và triển khai Mastodon theo nhu cầu của mình. Liên hệ ngay với Vietnix để được tư vấn chi tiết hơn.

Bước 1: Tạo các User và các role PostgreSQL trong Mastodon

Mastodon mặc định rằng server của bạn sẽ được quản lý bằng cách sử dụng user có tên là mastodon. Điều này hiện được mã hóa cứng trong nhiều phần của Mastodon. Bài này sẽ tuân theo đề xuất là tạo và sử dụng user tên là mastodon, ở cả cấp độ hệ thống và là một role trong PostgreSQL.

Trước hết thì bạn cần một tài khoản user trong quá trình thiết lập server ban đầu, sau đó bạn sử dụng lệnh adduser để tạo người dùng mastodon:

sudo adduser mastodon

Tiếp theo, thêm người dùng Mastodon của bạn vào sudo group để cấp quyền admin:

sudo usermod -aG sudo mastodon

Với user hệ thống tên là mastodon đã được tạo ra, tiếp theo hãy tạo một role phù hợp trong cơ sở dữ liệu của bạn. PostgreSQL sử dụng xác thực ngang hàng, liên kết các role đã tạo với user hệ thống phù hợp. Tạo một user có tên phù hợp với mastodon:

sudo -u postgres createuser --interactive

Cờ interactive sẽ hiển thị lời nhắc sau nơi bạn có thể chọn tên cho role mới của mình, ở đây là mastodon. Tiếp theo là nhập y để đặt role mới của bạn thành superuser:

Output
Enter name of role to add: mastodon
Shall the new role be a superuser? (y/n) y

Bây giờ bạn có thể đăng nhập vào user mastodon mới được tạo của mình:

su - mastodon

Đối với phần còn lại của bài viết này, bạn sẽ chạy tất cả các lệnh với user là mastodon.

Bước 2: Cài đặt các dependency và clone Mastodon

Phần lớn cấu hình của Mastodon được xử lý thông qua thiết lập tương tác (interactive setup) mà bạn sẽ thực hiện ở bước sau. Trước tiên, bạn cần cài đặt các dependency cần thiết. Mastodon là một dự án chủ yếu dựa trên Ruby và Node.js khi hoạt động trong môi trường Linux, dẫn đến việc cần phải có ba chương trình quản lý gói: APT ở mức hệ thống của Linux, Bundler cho Ruby gems và gói Yarn dành cho Node.js. Để cài đặt từ source code, bạn cần clone repository của Mastodon. Quá trình sẽ diễn ra theo trình tự sau:

  • Cài đặt dependency APT.
  • Clone Mastodon.
  • Cài đặt Ruby và các dependency liên quan của Mastodon.
  • Cài đặt các dependency của Node.js.

Bước đầu tiên là cài đặt các dependency thông qua apt, bao gồm: Redis làm cơ sở dữ liệu chính, Certbot để xử lý mã hóa TLS/SSL và cuối cùng là các thư viện khác để tiến hành build, compile và xử lý image. Để cài đặt những thứ này, hãy sử dụng apt update trước:

sudo apt update

Sau đó cài đặt các gói với apt install:

sudo apt install \
  imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev \
  libprotobuf-dev protobuf-compiler pkg-config \
  redis-server redis-tools \
  certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

Tiến hành clone Mastodon

Bây giờ server của bạn đã sẵn sàng clone Mastodon từ repository chính thức. Bài này sẽ sử dụng phiên bản v4.0.2 của Mastodon.

Đầu tiên, tiến hành clone repository của Mastodon tới server của bạn và cho vào một thư mục mới có tên live:

git clone https://github.com/mastodon/mastodon.git live

Quy ước đặt tên thư mục này được sử dụng trong toàn bộ tài liệu của Mastodon và được khuyến khích sử dụng để đảm bảo tính nhất quán. Tiếp theo, di chuyển tới thư mục bạn đã tạo:

cd live

Bây giờ bạn có thể sử dụng git để check out phiên bản mới nhất v4.0.2:

git checkout v4.0.2

Cài đặt Ruby và các dependency Ruby của Mastodon

Với mã nguồn Mastodon sẵn có, bây giờ bạn có thể tiến hành cài đặt Ruby và dependency Ruby của Mastodon. Bạn sẽ cài đặt rbenv, công cụ quản lý phiên bản mà bạn sẽ sử dụng để cài đặt ngôn ngữ lập trình Ruby. Vì rbenv được cài đặt ở cấp độ user thường chứ không phải cấp độ hệ thống, cho nên bước này phải thực hiện tại đây sau khi bạn tạo và chuyển sang user mastodon của mình. Tiếp theo, bạn sẽ cài đặt Ruby on Rails bằng rbenv.

Các dependency Ruby ​​được quản lý bởi Bundler. Bundler cài đặt tất cả các gems Ruby theo yêu cầu của Mastodon, nhưng trước tiên bạn cần phải cấu hình trước để có thể cài đặt.

Dùng lệnh bundle config từ Bundler để giao tiếp với hệ thống cấu hình và đặt deployment thành true:

bundle config deployment 'true'

Tiếp theo, sử dụng without để đảm bảo các dependency cho quá trình phát triển và thử nghiệm sẽ không được cài đặt:

bundle config without 'development test'

Bây giờ bạn có thể cài đặt các dependency Ruby của mình với lệnh install. Quá trình cài đặt này có thể mất một chút thời gian và một vài lần tạm dừng:

bundle install
Output
Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/ClearlyClaire/webpush.git
Fetching rake 13.0.6
Installing rake 13.0.6
Fetching concurrent-ruby 1.1.10
Installing concurrent-ruby 1.1.10
. . .

Sau khi quá trình này kết thúc, có rất nhiều output trông có vẻ như cần được xử lý. Tuy nhiên, bạn có thể làm tiếp các bước khác một cách an toàn mà không cần làm thêm hành động nào.

Cài đặt các dependency JavaScript của Mastodon

Khi các dependency Ruby của Mastodon đã cài đặt xong, bạn có thể chuyển sang phần cài đặt dependency của JavaScript. Mastodon dựa vào yarn để quản lý và cài đặt các gói JavaScript chứ không phải npm. Với Node.js phiên bản 16.10 trở lên thì theo mặc định yarn có sẵn trong corepack.

Để có quyền truy cập vào yarn, hãy enable corepack đi kèm của Node.js:

sudo corepack enable

Yarn đã có lịch sử phát triển khác nhau giữa phiên bản 1.0, còn được gọi là classic và phiên bản 2.0. Mastodon yêu cầu phiên bản yarn classic, bạn có thể thực hiện bằng lệnh:

yarn set version classic

Bây giờ, bạn có thể cài đặt các dependency JavaScript của Mastodon bằng cách sử dụng yarn install. Sẽ có flag bổ sung vào để đảm bảo rằng tệp yarn.lock không được tạo ra:

yarn install --pure-lockfile
Output
yarn install v1.22.19
[1/6] Validating package.json...
[2/6] Resolving packages...
[3/6] Fetching packages...
[4/6] Linking dependencies...
warning Workspaces can only be enabled in private projects.
[5/6] Building fresh packages...
[6/6] Cleaning modules...
Done in 50.84s.

Lúc này bạn đã sẵn sàng để tạo một tệp cấu hình Mastodon tùy chỉnh cho server của mình.

Bước 3: Tạo file cấu hình Mastodon với thiết lập tương tác (Interactive Setup)

Mastodon thay đổi file .env để biến đổi file này thành file cấu hình. Có sẵn một file mẫu bạn có thể xem tại ~/live/.env.production.sample, nhưng thay vì sao chép file đó, bạn sẽ sử dụng quy trình interactive setup. Sau khi hoàn thành, một file custom sẽ được tạo ra tại ~/live/.env.production. Quá trình interactive setup sẽ bao gồm các thông tin cơ bản của server, thiết lập kết nối cho PostgreSQL và Redis, thiết lập lưu trữ đám mây và xử lý email, biên dịch nội dung CSS và JavaScript cũng như tạo tài khoản quản trị viên trong Mastodon.

Trước khi bắt đầu quy trình thiết lập gồm nhiều bước, hãy đảm bảo rằng firewall của bạn cho phép lưu lượng SMTP đi qua port phù hợp. Port SMTP mặc định cho các kết nối secure TLS là port 587 và điều này sẽ được giải thích trong phần sau. Bây giờ, ta sẽ tiến hành cho phép truy cập vào cổng này trong firewall của bạn bằng lệnh:

sudo ufw allow 587

Để bắt đầu interactive setup, hãy sử dụng lệnh bundle exec rake để thực thi các thiết lập của Mastodon, đồng thời đặt biến môi trường cho product:

RAILS_ENV=production bundle exec rake mastodon:setup

Nhập vào tên miền của bạn. Lưu ý rằng rất khó để thay đổi điều này sau khi thiết lập, vì vậy hãy kiểm tra kỹ thông tin nhập vào của bạn để đảm bảo độ chính xác:

Output
Your instance is identified by its domain name. Changing it afterward will break things.
Domain name: your_domain

Mastodon có một mode đó là single user mode, trong đó trong đó việc đăng ký bị vô hiệu hóa. Đối với server được thiết lập với mục đích tạo không gian chia sẻ với những người khác, bạn không nên bật chế độ single user mode lên:

Output
Single user mode disables registrations and redirects the landing page to your public profile.
Do you want to enable single user mode? No

Bạn sẽ trả lời no cho lời nhắc về việc sử dụng Docker, vì hướng dẫn này đề cập đến cách cài đặt thông thường trên server vật lý:

Output
Are you using Docker to run Mastodon? no

Cấu hình các Database

Tất cả các thiết lập cho PostgreSQL có thể giữ nguyên ở dạng mặc định bằng cách nhấn Enter cho mỗi lời nhắc. Cơ sở dữ liệu của bạn không thực hiện xác thực bằng mật khẩu, mà thay vào đó là sử dụng xác thực ngang hàng, điều này chúng ta sẽ thảo luận sau. Hiện tại, phần password có thể để trống:

Output
PostgreSQL host: /var/run/postgresql
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon_production
Name of PostgreSQL user: mastodon
Password of PostgreSQL user:
Database configuration works! 

Ta cũng có thể cài đặt Redis với các giá trị mặc định và với phần password được để trống. Bạn sẽ không thiết lập mật khẩu vì cơ sở dữ liệu này chỉ có thể truy cập cục bộ trên server này. Bạn có thể nhấn Enter cho mỗi lời nhắc:

Output
Redis host: localhost
Redis port: 6379
Redis password:
Redis configuration works!

Cấu hình vùng nhớ

Tiếp theo, bạn sẽ thiết lập về việc file lên bộ nhớ cloud. Bộ nhớ Mastodon có thể được thiết lập bằng bộ nhớ cục bộ hoặc bộ nhớ cloud thông qua một số nhà cung cấp. Nếu bạn muốn sử dụng bộ nhớ cục bộ hoặc nếu bạn chưa có sẵn giải pháp lưu trữ đám mây ngay lập tức, thì hãy trả lời no khi đến bước cài đặt về việc upload file.

Tuy nhiên, đây không phải là giải pháp lưu trữ lâu dài và bền vững. Để phục vụ cho mục đích là hướng tới các sản phẩm production thì giải pháp lưu trữ đối tượng (object storage solution) mới là giải pháp được khuyến khích sử dụng. Mastodon có hỗ trợ một số giải pháp lưu trữ đối tượng phổ biến như MinIO và các giải pháp S3-compatible khác. Như vậy, các bước thiết lập để upload file là:

Do you want to store uploaded files on the cloud? yes
Provider your_provider_spaces
Space name: your_spaces_name
Space region: your_spaces_region
Space endpoint: your_spaces_endpoint
Space access key: your_spaces_access_key
Space secret key: your_spaces_secret_key
Do you want to access the uploaded files from your own domain? No

Bạn cũng có thể truy cập các file được tải lên Mastodon của mình bằng các link trên domain thay vì sử dụng các link trực tiếp đến bộ nhớ cloud. Bạn có thể chọn tùy chọn này nếu muốn, trong bài này sẽ lựa chọn no. Bạn có thể quay lại sau và chỉnh sửa file cấu hình đã tạo nếu bạn thay đổi ý định về việc lưu trữ.

Cấu hình outbound cho email

Mastodon yêu cầu quyền truy cập vào email server SMTP như một phương thức để gửi email. Bạn nên sử dụng nhà cung cấp dịch vụ email bên ngoài thay vì chạy dịch vụ của riêng bạn. Mastodon thì sử dụng Mailgun. Để có thể duy trì một email server an toàn và đáng tin cậy là một công việc khó khăn, vì vậy bạn nên dựa vào nhà cung cấp dịch vụ email bên thứ ba bên ngoài. Tuy nhiên, bạn nên lưu ý rằng hầu hết các nhà cung cấp dịch vụ email bên thứ ba đều tính phí dựa trên chất lượng của dịch vụ, bạn hãy cân nhắc dựa vào tình hình thực tế.

Lưu ý: Mặc dù bài viết này có thể được hoàn thành mà không cần SMTP ngay lập tức, bằng cách để trống các trường thông tin xác thực hoặc để mặc định, làm như thế sẽ cản trở chức năng đầy đủ của Mastodon và không được khuyến khích. Bạn có thể tùy chọn thiết lập tài khoản với nhà cung cấp email và thêm thông tin đăng nhập vào file cấu hình của mình sau này. Tuy nhiên, điều này có nghĩa là email của Mastodon sẽ không được gửi cho đến khi bạn thực hiện việc này và một số chức năng như theo dõi các tài khoản khác sẽ không khả dụng.

Output
Do you want to send e-mails from localhost? No

Với tất cả các nhà cung cấp dịch vụ email, bạn phải tạo và cấu hình tài khoản. Sự khác nhau thì tùy thuộc vào nhà cung cấp. Rất có thể sau khi đăng ký, bạn cần xác minh miền của mình với nhà cung cấp để cho phép gửi email trong quá trình liên quan đến việc thêm DNS record vào domain của bạn. Ngoài ra, bạn cần lấy hoặc tạo khóa API làm thông tin xác thực để xác thực an toàn.

Hướng dẫn này sử dụng Mailgun làm ví dụ, mặc dù các lựa chọn nhà cung cấp dịch vụ email đều được. Mailgun thì sẽ tự động tạo thông tin đăng nhập SMTP cho các domain được thêm vào. Một lần nữa, điều này sẽ khác nhau tùy thuộc vào dịch vụ email mà bạn sử dụng và bạn nên kiểm tra tài liệu tương ứng của nhà cung cấp dịch vụ mail:

Output
SMTP server: smtp.mailgun.org
SMTP port: 587
SMTP username: your_smtp_username
SMTP password: your_smtp_password
SMTP authentication: plain
SMTP OpenSSL verify mode: peer
Enable STARTTLS: auto
E-mail address to send e-mails "from": Mastodon <notifications@your_domain>

Bài viết này sẽ để giá trị của SMTP authentication là plain, các tùy chọn thông thường cho SMTP authentication được các nhà cung cấp dịch vụ email hỗ trợ bao gồm plain login, cả hai đều được mã hóa Base64. Nếu chỉ sử dụng mã hóa Base64 thì việc bảo mật sẽ chưa đầy đủ.

Vì thế, điều quan trọng là gửi yêu cầu tới nhà cung cấp dịch vụ email của bạn thông qua kết nối TLS/SSL secure. Kết nối SMTP trên port 587 là mặc định cho kết nối TLS với nhà cung cấp dịch vụ email. Mặc dù lựa chọn này an toàn khi TLS được bảo mật đúng cách, nhưng việc tham khảo tài liệu chính thức của nhà cung cấp dịch vụ email của bạn sẽ cung cấp cho bạn câu trả lời chi tiết hơn và cụ thể hơn về cách thiết lập với các dịch vụ SMTP của họ một cách an toàn.

Gửi thử một email để kiểm tra và đảm bảo rằng thông tin đăng nhập SMTP của bạn đang hoạt động, sau đó chỉ định email người nhận mà bạn có quyền truy cập, chẳng hạn như email cá nhân của bạn:

Output
Send a test e-mail with this configuration right now? yes

Email test này có thể mất một lúc để đến, tùy thuộc vào dịch vụ email của bạn. Hãy nhớ rằng bạn có thể quay lại sau để thay đổi thông tin đăng nhập SMTP trong tệp cấu hình Mastodon đã tạo của mình.

Hoàn thiện cấu hình của bạn

Tiếp theo, bạn được thông báo về việc lưu cấu hình của mình. Mastodon sau đó sẽ tạo cơ sở dữ liệu của bạn:

Output
This configuration will be written to .env.production
Save configuration? Yes

Now that configuration is saved, the database schema must be loaded.
If the database already exists, this will erase its contents.
Prepare the database now? Yes
Running `RAILS_ENV=production rails db:setup` ...


Created database 'mastodon_production'
Done!

Sau đó, bạn được nhắc biên dịch nội dung CSS và JavaScript của Mastodon. Sẽ xuất hiện lưu ý cảnh báo về thời gian và mức tiêu thụ tài nguyên:

Output
The final step is compiling CSS/JS assets.
This may take a while and consume a lot of RAM.
Compile the assets now? Yes
Running `RAILS_ENV=production rails assets:precompile` ...


yarn install v1.22.19
[1/6] Validating package.json...
[2/6] Resolving packages...
[3/6] Fetching packages...
[4/6] Linking dependencies...
. . .


All done! You can now power on the Mastodon server 

Server Mastodon của bạn hiện đã sẵn sàng, nhưng sẽ chưa chạy. Có một thông báo khác để tạo tài khoản quản trị viên để đăng nhập vào server Mastodon của bạn:

Output
Do you want to create an admin user straight away? Yes
Username: mastodon
E-mail: your_email
You can login with the password: your_generated_password
You can change your password once you login.

Lưu ý : Bạn sẽ không thể đặt mật khẩu cho tài khoản quản trị viên của mình ngay bây giờ. Bạn sẽ được cung cấp một mật khẩu và bạn nên ghi chú ở nơi khác. Khi bạn có quyền truy cập vào giao diện người dùng quản trị, bạn sẽ có thể thay đổi mật khẩu của mình.

Mở file cấu hình Mastodon đã tạo của bạn để xác minh nội dung bằng nano hoặc text editor ưa thích của bạn:

nano ~/live/.env.production

Nội dung sẽ tương tự như sau:

# Generated with mastodon:setup on 2022-11-22 18:22:25 UTC

# Some variables in this file will be interpreted differently whether you are
# using docker-compose or not.

LOCAL_DOMAIN=your_domain
SINGLE_USER_MODE=false
SECRET_KEY_BASE=your_generated_key_base
OTP_SECRET=your_generated_secret
VAPID_PRIVATE_KEY=your_generated_private_key
VAPID_PUBLIC_KEY=your_generated_public_key
DB_HOST=/var/run/postgresql
DB_PORT=5432
DB_NAME=mastodon_production
DB_USER=mastodon
DB_PASS=
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
S3_ENABLED=true
S3_PROTOCOL=https
S3_BUCKET=your_spaces_name
S3_REGION=your_spaces_region
S3_HOSTNAME=your_spaces_endpoint
S3_ENDPOINT=https://your_spaces_endpoint
AWS_ACCESS_KEY_ID=your_spaces_access_key
AWS_SECRET_ACCESS_KEY=your_spaces_secret_key
SMTP_SERVER=smtp.mailgun.org
SMTP_PORT=587
SMTP_LOGIN=your_smtp_username
SMTP_PASSWORD=your_smtp_password
SMTP_AUTH_METHOD=plain
SMTP_OPENSSL_VERIFY_MODE=peer
SMTP_ENABLE_STARTTLS=auto
SMTP_FROM_ADDRESS='Mastodon <notifications@test.do-community.com>'

Bạn có thể chỉnh sửa file này theo cách thủ công sau quá trình interactive setup. Khi bạn đã kiểm tra xong, hãy lưu và đóng tệp. Nếu bạn đang sử dụng nano, bạn có thể thực hiện việc này bằng CTRL + X, tiếp theo là nhấn Y rồi Enter.

Bước 4: Cấu hình Nginx cho Mastodon với Certbot và Let’s Encrypt

Server Mastodon của bạn hiện chỉ có thể truy cập local. Để cho phép truy cập qua internet, bạn cần expose bằng reverse proxy. Nginx được khuyến nghị để làm reverse proxy cho ứng dụng Mastodon của bạn.

Repository của Mastodon đã có sẵn file cấu hình Nginx mặc định mà bạn có thể sử dụng. Tuy nhiên, bạn cần thực hiện một số thay đổi để khớp file cấu hình đó với miền của riêng bạn và bảo mật file bằng Certbot và Let’s Encrypt.

Mặc dù file Nginx do Mastodon cung cấp được điền đầy đủ các block và các lệnh cần thiết để triển khai đầy đủ, việc cài đặt SSL/TLS mặc định sẽ ngăn chặn một số thao tác với Certbot. Bước này sẽ thực hiện chỉnh sửa file cấu hình Nginx 2 lần để vượt qua giới hạn này, trước và sau khi sử dụng Certbot.

Trước tiên, hãy điều chỉnh cài đặt firewall của bạn để cho phép lưu lượng HTTPHTTPS đến server Nginx của bạn:

sudo ufw allow 'Nginx Full'

Điều này là cần thiết để người dùng truy cập trang Mastodon của bạn, nhưng cũng cần thiết để Certbot thực hiện các xác minh cần thiết cho chứng chỉ của bạn. Tiếp theo, sao chép cấu hình Nginx được cung cấp từ repository Mastodon:

sudo cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon

Nginx sử dụng một phương pháp phổ biến được gọi là symbolic links hoặc symlink để theo dõi server block nào của bạn được bật. Tạo một symlink cũng giống như tạo shortcut trên đĩa, để sau này bạn có thể xóa shortcut khỏi thư mục sites-enabled trong khi vẫn giữ server block trong sites-available nếu bạn muốn bật nó. Tạo một link với file mới tạo của bạn:

sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

Bây giờ Nginx sẽ biết các cài đặt trong file cấu hình này nên được sử dụng để phục vụ trang web Mastodon của bạn. Tuy nhiên, bạn chưa thực hiện các thay đổi cần thiết đối với cấu hình Nginx của mình. Giờ hãy mở file cấu hình đã sao chép của bạn:

sudo nano /etc/nginx/sites-enabled/mastodon

Bạn cần đảm bảo rằng lệnh server_iname trỏ tới domain của bạn và trỏ tới phiên bản www. của bạn. Có hai loại server_name, một là server block lắng nghe trên port 80 cho HTTP và thứ hai là block lắng nghe trên cổng 443 cho HTTPS. Đảm bảo rằng cả hai lệnh server_name đều trỏ đến domain của bạn.

Ngoài ra, bạn cần comment các dòng lệnh listen trong server block thứ hai bằng cách thêm ký hiệu # vào đầu dòng. Hiện tại chứng chỉ SSL của bạn chưa được thiết lập, việc có tham số ssl cho lệnh listen này sẽ khiến Nginx phát hiện cấu hình này là không hợp lệ. Điều này có nghĩa là Certbot sẽ không tạo chứng chỉ cho bạn. Để khắc phục điều này, hãy tạm thời comment lệnh này và kích hoạt lại nó sau khi bạn tạo chứng chỉ của mình:

. . .
server {
  listen 80;
  listen [::]:80;
  server_name your_domain www.your_domain;
  root /home/mastodon/live/public;
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
   # listen 443 ssl http2;
   # listen [::]:443 ssl http2;
  server_name your_domain www.your_domain;
. . .

Khi bạn hoàn thành, lưu và đóng file. Bây giờ bạn đã sẵn sàng để tạo chứng chỉ của mình để truy cập SSL/TLS một cách an toàn. Bởi vì bạn đang sử dụng file cấu hình Nginx mặc định của Mastodon, sau đó Certbot của bạn được gọi bằng lệnh certonly. Điều này cho phép bạn có thể tự thiết lập file cấu hình. Mặt khác, Certbot sẽ đưa ra giả định về môi trường Nginx của bạn không tương thích với mastodon:

sudo certbot certonly --nginx -d your_domain -d www.your_domain
Output
. . .
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
. . .

Bạn hãy ghi chú lại đường dẫn của chứng chỉ và các tệp quan trọng. Bạn sẽ cần thêm đường dẫn đó vào file cấu hình. Mở lại file cấu hình của bạn để tiến hành chỉnh sửa:

sudo nano /etc/nginx/sites-enabled/mastodon

Bây giờ bạn có thể bỏ comment cho các lệnh listen trước đây cho cổng 443. Trước đây, các dòng này sẽ gây ra lỗi do không có chứng chỉ. Với chứng chỉ mới được tạo của bạn thông qua Certbot, các dòng này đã hợp lệ.

Ngoài ra, gỡ comment cho các lệnh ssl_certificatessl_certificate_key trong cùng một khối. Đảm bảo rằng nó phù hợp với các đường dẫn file với các chứng chỉ được tạo trước đó bởi Certbot:

. . .
server {
   listen 443 ssl http2;
   listen [::]:443 ssl http2;
  server_name your_domain www.your_domain;
. . . 
  # Uncomment these lines once you acquire a certificate:
   ssl_certificate 	/etc/letsencrypt/live/your_domain/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
. . .

Lưu file của bạn và thoát text editor. Ta sẽ xác minh rằng file cấu hình Nginx có hiệu lực bằng lệnh sau:

sudo nginx -t

Cuối cùng, khởi động lại Nginx để áp dụng các thay đổi:

sudo systemctl reload nginx

Server Mastodon của bạn hiện đang được chạy bởi Nginx, nhưng bạn vẫn cần thiết lập một số dịch vụ trước khi kiểm tra trang web của mình.

Bước 5: Thiết lập Dịch vụ Mastodon

Mastodon bao gồm ba service hệ thống để duy trì chức năng và thời gian hoạt động: mastodon-web, mastodon-sidekiq, và mastodon-streaming. Điều này cho phép Mastodon luôn restart, giữ cho ứng dụng web hoạt động và thực hiện lập lịch tác vụ không đồng bộ (asynchronous task scheduling). Mastodon sẽ luôn đi kèm với các service này, bạn cần thiết lập chúng đúng cách và kích hoạt chúng.

Đầu tiên, sao chép các service từ source của Mastodon:

sudo cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

Các file này giả định rằng mọi thứ được cài đặt mặc định, chẳng hạn như sử dụng mastodon làm tài khoản user của bạn. Nếu bạn đã thiết lập thứ gì khác với mặc định hoặc khác với các đề xuất của bài viết này, bạn có thể mở các file ra và kiểm tra lại các tên user và các đường dẫn cần thay đổi:

sudo nano /etc/systemd/system/mastodon-*.service

Nếu bạn làm theo các bước trong bài này, bạn sẽ không cần phải thay đổi bất cứ điều gì. Sau khi bạn đã kiểm tra các file của mình, hãy đóng các file và tiến hành kích hoạt các service. Đầu tiên, bạn cần gọi daemon-reload:

sudo systemctl daemon-reload

Sau đó, bạn có thể bật các service mới được kích hoạt của mình:

sudo systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
Created symlink /etc/systemd/system/multi-user.target.wants/mastodon-web.service → /etc/systemd/system/mastodon-web.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mastodon-sidekiq.service → /etc/systemd/system/mastodon-sidekiq.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mastodon-streaming.service → /etc/systemd/system/mastodon-streaming.service.

Việc cài đặt Mastodon của bạn đã hoàn tất. Bạn có thể mở Mastodon trong trình duyệt của mình bằng cách truy cập: https: // your_domain. Lưu ý rằng lần đầu tiên của bạn mở Mastodon trong trình duyệt của bạn sẽ kích hoạt một số khởi tạo ở phía back-end, vì vậy có thể sẽ dẫn đến việc không hoàn tất việc load trang.

Khi bị lỗi như vậy thì trên màn hình có thể hiển thị “We’re sorry, but something went wrong on our end”. Trong trường hợp này, hãy đợi trong vài giây, sau đó refresh trình duyệt trong khi giữ shift để thực hiện làm mới trang web. Điều này sẽ giải quyết vấn đề và chỉ xảy ra lần đầu tiên Mastodon được tải.

Trang Homepage của Mastodon
Hướng dẫn cài đặt Mastodon trên Ubuntu 20.04 2

Bạn có thể sử dụng user quản trị viên và mật khẩu đã tạo từ trước để đăng nhập và bắt đầu thao tác trên đây. Ngoài ra, bạn nên thay đổi mật khẩu và cài đặt chức năng quản trị trên server Mastodon mới của bạn.

Bạn cũng có thể tham khảo thêm về hướng dẫn cài đặt Ruby on Rails với rbenv trên Ubuntu 20.04 để có thêm các tùy chọn kiến thức về Ubuntu 20.04 hiện có trên website Vietnix.

Lời kết

Trong bài viết này, chúng ta đã thiết lập một server Mastodon riêng. Điều này bao gồm thiết lập cơ sở dữ liệu và web server với reverse proxy, cùng với tất cả các yêu cầu cần thiết và các dependency cụ thể cho Mastodon. Trong Mastodon, bạn đã thiết lập email, không gian lưu trữ và các file, trước khi tạo tài khoản quản trị viên đầu tiên của bạn. Cuối cùng, bạn đã bảo mật thiết lập của mình với SSL/TLS bằng Certbot và Let’s Encrypt. Cảm ơn bạn đã theo dõi bài viết.

Chia sẻ lên

Theo dõi trên

Logo Google new

Đánh giá

5/5 - (139 bình chọn)

Hưng Nguyễn

Kết nối với mình qua

Icon Quote
Icon Quote
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix

Bình luận

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Chỉ số tăng trưởng

Điểm Desktop

100 (+39)

Điểm Mobile

100 (+67)

Core Web Vitals

Passed

Lĩnh vực

Ecommerce

Chỉ số tăng trưởng

Điểm Desktop

99 (+28)

Điểm Mobile

100 (+50)

Core Web Vitals

Passed

Lĩnh vực

SEO

Chỉ số tăng trưởng

Điểm Desktop

99 (+26)

Điểm Mobile

98 (+59)

Core Web Vitals

Passed

Lĩnh vực

Ecommerce

Chỉ số tăng trưởng

Điểm Desktop

100 (+8)

Điểm Mobile

98 (+35)

Core Web Vitals

Passed

Lĩnh vực

Giáo Dục

Chỉ số tăng trưởng

Điểm Desktop

100 (+61)

Điểm Mobile

100 (+61)

Core Web Vitals

Passed

Lĩnh vực

Giáo Dục

Võ Thiên Tòng

25 Tháng 2 lúc 21:09

·

Mình muốn gửi lời cảm ơn chân thành đến Team Vietnix, anh Hưng Nguyễn, anh Vietnix Trung, em Quốc Huy đã hỗ trợ tối ưu Page Speed Insight (PSI) cho website vanvoiminhhoa.vn của mình.
Biết đến anh Hưng đã lâu nhưng chưa có duyên sử dụng dịch vụ bên anh. Tình cờ thấy được bài Post của anh về việc hỗ trợ tối ưu PSI miễn phí chỉ với vài Slot, thấy AE cmt khá nhiều nên cũng không nghĩ tới lượt mình. Hôm sau đánh liều inbox 1 phen xem sao thì may mắn được đưa vào danh sách. Vài ngày sau được Team Vietnix liên hệ và hỗ trợ.
Kết quả đạt được:
• Điểm xanh lè xanh lét
• Tốc độ tải trang nhanh hơn hẳn
• Các chỉ số cũng được cải thiện đáng kể
• Và mình tin rằng với việc PSI được cải thiện cũng thúc đẩy những thứ khác đi lên theo!
Mình thực sự hài lòng với dịch vụ của Vietnix và muốn giới thiệu đến tất cả mọi người:
• Dịch vụ Wordpress Hosting: Tốc độ nhanh, ổn định, bảo mật cao, hỗ trợ kỹ thuật 24/7. (https://vietnix.vn/wordpress-hosting/)
• Dịch vụ Business Hosting: Dung lượng lớn, phù hợp cho website có lượng truy cập cao, tích hợp nhiều tính năng cao cấp. (https://vietnix.vn/business-hosting/)
Đặc biệt, Vietnix đang có chương trình ưu đãi:
• Giảm giá 20% trọn đời khi nhập code THIENTONG_PAGESPEED tại trang thanh toán (Chu kỳ 12 tháng trở lên)
• Tặng 1 lần tối ưu điểm Page Speed Insight cho 1 website
Cám ơn Vietnix một lần nữa!
#Vietnix #Vanvoiminhhoa #Pagespeedinsight
Trước khi tối ưu
Sau khi tối ưu
Thiện Nguyễn - CEO SEO Dạo

5 Tháng 3 lúc 16:21

·

CORE WEB VITAL YẾU TỐ XẾP HẠNG TÌM KIẾM SEO
Core Web Vitals là một tập hợp các chỉ số đo lường hiệu suất của trang web từ góc độ người dùng, được Google sử dụng để đánh giá trải nghiệm người dùng trên các trang web. Các chỉ số chính bao gồm:
– Largest contentful paint (LCP): Tốc độ render của page. Mục tiêu là dưới 2,5 giây.
– First input delay (FID): Tốc độ phản hồi của website với tương tác của người dùng. Mục tiêu là dưới 100ms.
– Cumulative Layout Shift (CLS): Độ ổn định của bố cục trang. Mục tiêu là dưới 0.1.
Tất cả các chỉ số này đo lường các khía cạnh quan trọng của trải nghiệm người dùng trên trang web. Google đã công bố rằng từ tháng 5 năm 2021, các Core Web Vitals sẽ được sử dụng làm một trong các yếu tố đánh giá trong việc xếp hạng trang web trên kết quả tìm kiếm. Do đó, hiểu và cải thiện các Core Web Vitals là rất quan trọng đối với SEO.
Tóm lại, Core Web Vitals không chỉ giúp cải thiện hiệu suất và xếp hạng trang web trên công cụ tìm kiếm, mà còn cải thiện trải nghiệm của người dùng khi họ truy cập và tương tác với trang website.
P/s: mình đang có gói hỗ trợ đặc biệt cho anh em tối ưu tốc độ bên VIETNIX:
– Giảm 20% lifetime dịch vụ Hosting Business và Hosting Wordpress chu kỳ 12 tháng trở lên.
– Tặng 1 lần tối ưu điểm Page Speed Insight cho 1 website.
Anh em có nhu cầu đăng ký qua bạn Vietnix Trung này nhé và nhập mã SEODAO_PAGESPEED để được ưu đãi nhé.😁
Trước khi tối ưu
Sau khi tối ưu SEO Dạo
Icharm review

5 Tháng 3 lúc 15:43

·

[Mình vừa được hỗ trợ tối ưu page speed website]
Trước khi được tối ưu, web của mình điểm rất thấp, đặc biệt là mobile chỉ có 39. Cơ duyên thế nào lúc lướt face lại va phải chương trình tối ưu pagespeed bên Vietnix.
Sau khi được Trần Hoàng Phúc và team Vietnix hỗ trợ nhiệt tình, điểm web vọt lên 98 99 (như hình bên dưới). Dùng thử web thì thấy quá là mượt, 10 điểm cho team Vietnix.
Nói thật thì mình thật sự ấn tượng về sự nhiệt huyết, tận tâm và rất chuyên nghiệp bên Vietnix.
Anh em có nhu cầu về hosting hay có vấn đề về website như:
1. Web load chậm
2. Khách rời web vì đợi tải nội dung, hình ảnh lâu
3. Hay tất tần tật mọi thứ về website
THÌ LIÊN HỆ NGAY VIETNIX NHÉ!
Và đừng quên dùng pass “ICHARM_PAGESPEED” để được giảm 20% trọn đời hosting business và wp hosting. Quả code này còn được tặng 1 lần tối ưu pagespeed nữa nhé, ưu đãi chắc cũng phải nhất nhì thị trường luôn.
Trước khi tối ưu
Sau khi tối ưu
Hoàng Nguyễn

29 Tháng 2 lúc 17:04

·

Xin chào mọi người! Vừa rồi mình có sử dụng dịch vụ tối ưu website, tăng tốc độ tải trang pagespeed của Vietnix kết quả trên cả tuyệt vời nên mình viết bài này để chia sẻ thông tin với các bạn.
Lý do mình chọn dịch vụ tối ưu tốc độ website của Vietnix:
✅ Đội ngũ chuyên gia giàu kinh nghiệm: Đã tối ưu thành công cho hàng nghìn website trong nhiều lĩnh vực khác nhau. Các bạn nhân viên rất thân thiện, nhiệt tình và chủ động trong quá trình làm việc để cập nhật tiến độ.
✅ Quy trình chuyên nghiệp:
– Kiểm tra và phân tích: Vietnix sử dụng các công cụ tiên tiến để kiểm tra và phân tích tốc độ website của bạn.
– Xác định nguyên nhân: Vietnix xác định nguyên nhân khiến website tải chậm và đưa ra giải pháp tối ưu phù hợp.
– Tối ưu hóa website: Vietnix áp dụng các kỹ thuật tối ưu tiên tiến nhất để tăng tốc độ tải trang.
– Báo cáo kết quả: Vietnix cung cấp báo cáo chi tiết về kết quả tối ưu hóa website.
Công nghệ tiên tiến: Vietnix sử dụng các công nghệ tối ưu mới nhất như LiteSpeed, LSCache, Memcached, Redis, v.v.
✅ Cam kết kết quả: Vietnix cam kết tăng tốc độ website của bạn lên tối thiểu 90%.
✅ Giá cả cạnh tranh: Vietnix cung cấp dịch vụ tối ưu tốc độ website với mức giá cạnh tranh nhất trên thị trường.
📣 Để đăng ký sử dụng dịch vụ tối ưu tốc độ website và các dịch vụ khác như hosting, vps, domain… các bạn có thể đăng ký tại https://portal.vietnix.vn/aff.php?aff=57 hoặc Inbox cho sếp Vietnix Trung nhé.
Các bạn có thể kiểm tra tốc độ trang của mình https://lasan.edu.vn hoặc một vài trang khác đã sử dụng dịch vụ của Vietnix như sau:
https://pagespeed.web.dev/…/https…/v8beqewyt2…
https://pagespeed.web.dev/…/https…/etiohjvtl4…
https://pagespeed.web.dev/…/https…/yczuqpw6d1…
https://pagespeed.web.dev/…/https…/xf9y65kuzk…
https://pagespeed.web.dev/…/https…/fdrsms15en…
https://pagespeed.web.dev/…/https…/s7p9cgzeri…
Trước khi tối ưu
Sau khi tối ưu
Dũng cá xinh

30 Tháng 1 lúc 19:09

·

[Đỉnh]
Em có dùng hosting, vps, cloud vps, cloud server, dedicated server của rất nhiều bên từ trong nước đến nước ngoài để hosting khoảng 2,000+ domain. Mỗi bên đều có ưu nhược khác nhau, nhưng có 1 số bên đặc biệt “bá đạo”, trong đó có: Vietnix!!!!

Lần đầu tiên em được cả CEO Hưng Nguyễn lẫn Master về dev Vietnix Trung của 1 đơn vị hàng đầu liên quan đến Hosting, Server support từ A – Z (từ Zalo, Tele, đến FB và cả Phone)

Em có khá nhiều web dạng Big Data (bài, ảnh, database, data) lên đến hàng trăm Gb. Càng to thì nó càng có nhiều vấn đề về phần phản hồi ban đầu (nhược điểm cố hữu của php wordpress so với nativejs, reactjs, html, headless,…), và anh em Vietnix có nhã ý hỗ trợ xử lý phần Speed Insight này.

Kết quả thực sự kinh ngạc, từ cách trao đổi đến xử lý vấn đề, cut off những cái cần cut off, xử lý rất sâu vấn đề và gợi ý rất nhiều ý tưởng optimize hệ thống!!!! Thực sự quá hài lòng về kết quả cũng như cách tương tác của các đầu tầu bên Vietnix ^^!!!

Nhân cơ duyên được kết nối với những cao thủ của Vietnix, em xin chia sẻ và lan tỏa để nhiều anh em có cơ hội được sử dụng những dịch vụ tốt nhất với giá vô cùng hợp lý!!!!

1 – Với anh em chưa có hosting, em đặc biệt recommend sử dụng hosting bên Vietnix:
– Sử dụng mã DUNGCAXINH_PAGESPEED sẽ được giảm 20% trọn đời (lifetime luôn)
– Áp dụng các gói Hosting Business, Hosting wordpress và reg 1 năm trở lên
– Anh em chưa biết cách reg thì còm men hoặc ib để em hướng dẫn hoặc nhờ các bạn bên Vietnix support từ A – Z

2 – Anh em có hosting rồi và muốn build blog hoặc web = wordpress mà chưa có giao diện thì nhân tiện em đang có tài khoản Premium bên Envato, em sẽ tặng bất kỳ giao diện nào có trên Envato Themes (Link em để dưới còm men) ạ. Cả nhà còm hoặc ib em Themes mà mọi người “chim ưng”, em sẽ cho anh em tải về, up drive và gửi ạ!!! (Chương trình này kéo dài đến ngày 29 tết âm lịch ạ)

3 – BEST NHẤT luôn!!!! Anh em nào mua hosting dùng mã DUNGCAXINH_PAGESPEED sẽ được tối ưu 100 điểm tốc độ cho 1 web (đây là ưu đãi riêng của CEO Hưng Nguyễn dành cho bạn bè của #dungcaxinh ^^) (Giá trị nhất là cái vụ số 3 này anh chị em nhé ^^), cơ hội vàng để move về đơn vị hosting uy tín là đây ^^!!!!

Một lần nữa xin chân thành cám ơn 2 đồng chí em: Hưng Nguyễn và Vietnix Trung đã giải được một bài toán khó cho các trang WP Big data mà anh loay hoay bao lâu nay chưa tìm ra đáp án!!! Chúc Vietnix ngày càng phát triển và có một năm 2024 đại đại thắng nhé ^^ !!!!!
#SEO #Vietnix #dungcaxinh

Trước khi tối ưu
Sau khi tối ưu
Hiếu AI

2 Tháng 2 lúc 21:06

·

UY TÍN – TẬN TÂM – TỐC ĐỘ

3 từ trên là vẫn chưa đủ để nói về quy trình làm việc cực chuyên nghiệp của team Vietnix.Chuyện là mình có con website chính đang có lượt truy cập organic hàng ngày cũng tương đối (hình 1)

Vấn đề là, con site này đang nằm trên hosting dùng chung nên tốc độ load chưa nhanh, tốc độ load chưa nhanh thì trải nghiệm visitor chưa tốt, trải nghiệm visitor chưa tốt thì tỷ lệ chuyển đổi ra đơn hàng kiểu gì thì kiểu cũng sẽ bị ảnh hưởng.

Biết rõ là đang mất tiền nhưng không biết xử lý như lào, nghĩ mà cay.

Đang loay hoay thì vận may nó tới, hôm qua đang lướt phở bò thấy a Nguyễn Việt Dũng đăng bài, rảnh nên thả cái comment hóng hớt, ai ngờ ngoằng phát thấy ông Dũng tạo nhóm với Vietnix Trung luôn.

Ae Vietnix thì siêu tốc độ, lập tức lấy thông tin vào việc, không hỏi han lằng nhằng, không kỳ kèo chốt đơn dù lúc đấy cũng đang đêm muộn.
Sáng hôm sau dậy vẫn còn đang lơ ngơ mở điện thoại check tin nhắn thì đã thấy ae Vietnix báo xong việc, trong khi mình vẫn chưa biết có chuyện gì xảy ra @@.

Được cái bấm thử website thì thấy load siêu nhanh, chưa tới một giây là thông tin các thứ hiện hết. Quá phê, thả con ảnh trước sau (hình 2,3) để ace tiện đối chiếu nhé. Thế này thì mình gửi gắm nốt 15 em website còn lại cho team Vietnix thôi chứ không cần nghĩ ngợi gì nữa. 10/10.

Nên là:

  1. Anh chị em muốn có một con website tốc độ load nhanh như tốc độ trở mặt của nyc – Dùng ngay dịch vụ hosting của Vietnix
  2. Anh chị em có website rồi muốn tìm bên hosting uy tín, chuyên nghiệp hỗ trợ không quản ngày đêm – Liên hệ ngay Vietnix Trung
  3. Anh chị em quan tâm đến trải nghiệm khách hàng, từ những cái nhỏ nhất như tăng tốc độ website – Better call Vietnix Trung

Và đừng quên dùng pass “HIEUAI_PAGESPEED” để được giảm 20% trọn đời hosting business và wp hosting, quả code này còn được tặng 1 lần tối ưu pagespeed nữa nhé, ưu đãi chắc cũng phải nhất nhì thị trường luôn.
#SEO #Vietnix #hieuai

Website
Trước khi tối ưu
Sau khi tối ưu

Chỉ số tăng trưởng

Điểm Desktop

100 (+43)

Điểm Mobile

100 (+74)

Core Web Vitals

Passed

Lĩnh vực

AI