−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS

VPS cho Mastodon: instance nhỏ của riêng bạn

Host một instance Mastodon nhỏ trên VPS: ước tính RAM và ổ đĩa thật lòng, cài bằng Docker, gửi email qua SMTP relay và dọn media để ổ không bị đầy.

Sở hữu tài khoản mạng xã hội của riêng mình nghe thật hay, cho đến khi bạn nhận ra tài khoản ấy sống trên máy chủ của người khác, theo luật lệ và thời gian hoạt động của họ. Một instance Mastodon riêng giải quyết chuyện đó: định danh của bạn là @you@your-domain, và không ai ngoài bạn có thể tắt nó. Vấn đề là Mastodon không phải ứng dụng nhỏ. Nên biết trước mình sắp dấn thân vào việc gì.

Dành cho ai

Với quy mô lớn hơn, bạn đang vận hành một dịch vụ kèm nghĩa vụ kiểm duyệt, báo cáo lạm dụng và hạ tầng thực thụ. Đó là chuyện khác.

Thật sự cần gì

Mastodon chạy nhiều tiến trình cùng lúc: ứng dụng web Rails, các worker nền Sidekiq, một máy chủ streaming, PostgreSQL và Redis. Do cơ chế liên kết, máy chủ của bạn liên tục kéo bài viết và media từ các máy chủ khác ngay cả khi bạn đang ngủ.

InstanceGói
Một người dùng, ít theo dõiSmall-IP — 2 vCPU, 4 GB, $16/tháng
Cộng đồng nhỏ, liên kết sôi độngMedium-IP — 4 vCPU, 6 GB, $20/tháng

4 GB chạy được nhưng chật; hàng đợi Sidekiq ùn lại khi một bài nổi tiếng bạn theo dõi nhận hàng nghìn phản hồi. 6 GB cho bạn khoảng thở. Giới hạn còn lại là ổ đĩa — xem phần media bên dưới.

Bạn cũng cần tên miền và IP riêng: các máy chủ khác gửi tới máy chủ của bạn trên cổng 443.

Cài đặt bằng Docker

Kho chính thức có sẵn docker-compose.yml. Trên máy chủ Ubuntu 24.04 mới với Docker đã cài:

git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
touch .env.production
docker compose run --rm -v $(pwd)/.env.production:/opt/mastodon/.env.production \
  web bundle exec rake mastodon:setup
docker compose up -d

Tác vụ thiết lập hỏi tên miền, cấu hình cơ sở dữ liệu và Redis (giá trị mặc định khớp với file compose), cấu hình email và tài khoản quản trị đầu tiên. Nó ghi mọi thứ vào .env.production. Hãy đọc ghi chú phát hành của tag bạn chọn — các bước đôi khi thay đổi giữa các phiên bản lớn.

Mastodon kèm một mẫu nginx ở dist/nginx.conf. Sao chép nó vào /etc/nginx/sites-available/, thay tên miền và lấy chứng chỉ bằng certbot. Hướng dẫn reverse proxy và tên miền của chúng tôi bao quát cả hai.

Email: hãy dùng relay

Mastodon gửi email xác nhận và đặt lại mật khẩu. Cổng 25 và 465 bị đóng trên máy chủ của chúng tôi, nên hãy trỏ Mastodon tới một nhà cung cấp email giao dịch bên ngoài qua cổng 587:

SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example

Nói thật, đằng nào bạn cũng sẽ muốn một relay. Thư từ một IP máy chủ mới tinh thường rơi vào spam; relay có uy tín mà bạn chưa có.

Media: kẻ ngốn ổ đĩa

Mọi ảnh và video từ các tài khoản mà máy chủ bạn nhìn thấy đều được lưu cache cục bộ. Trên một instance đông đúc, đó là hàng gigabyte mỗi tuần. Hãy dọn media từ xa cũ theo lịch:

docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30

Đặt chúng vào một cron job hằng ngày. Nếu instance lớn lên, chuyển media sang bộ nhớ đối tượng tương thích S3 bằng các thiết lập S3_* trong .env.production — khi đó ổ đĩa VPS chỉ còn chứa cơ sở dữ liệu.

Bảo trì

Muốn thứ gì nhẹ hơn cho chat nhóm? Một máy chủ Matrix có thể hợp hơn.

Sẵn sàng triển khai? Thanh toán bằng crypto, không KYC — trực tuyến trong khoảng một phút.

Triển khai ngay →

FAQ

Một instance Mastodon cần bao nhiêu RAM?

Với instance một người hoặc nhỏ, 4 GB là mức tối thiểu thực tế và 6 GB là thoải mái. Mastodon chạy đồng thời một tiến trình web, các worker Sidekiq, PostgreSQL và Redis, và việc liên kết khiến Sidekiq bận rộn ngay cả khi không ai đăng bài.

Vì sao Mastodon cần IP riêng?

Các máy chủ khác gửi bài tới máy chủ của bạn qua HTTPS trên cổng 443, và mọi người mở instance của bạn trong trình duyệt. Điều đó cần lưu lượng đi vào cổng 443 trên IP của riêng bạn, thứ mà gói NAT không có.

Làm sao gửi email từ Mastodon?

Dùng một nhà cung cấp email giao dịch bên ngoài qua SMTP trên cổng 587. Cổng 25 và 465 bị đóng trên máy chủ của chúng tôi, và dù sao thì relay cũng giúp thư tới hộp thư tốt hơn nhiều so với một IP mới tinh.

Sao ổ đĩa của tôi đầy nhanh thế?

Máy chủ của bạn lưu cache media của mọi tài khoản nó nhìn thấy. Chạy 'tootctl media remove --days 7' theo lịch, hoặc chuyển media sang bộ nhớ đối tượng tương thích S3.

Sau này có đổi tên miền được không?

Không. Tên miền là một phần danh tính của mọi tài khoản trên toàn fediverse. Hãy chọn cẩn thận trước khi tạo tài khoản đầu tiên.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.