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
- Instance một người dùng cho chính bạn hoặc tài khoản chính thức của công ty.
- Cộng đồng nhỏ gồm bạn bè hay một nhóm dự án — vài chục người, không phải hàng nghìn.
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ủ.
| Instance | Gói |
|---|---|
| Một người dùng, ít theo dõi | Small-IP — 2 vCPU, 4 GB, $16/tháng |
| Cộng đồng nhỏ, liên kết sôi động | Medium-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ì
- Cập nhật: lấy tag mới,
docker compose pull, chạy migration theo ghi chú phát hành, khởi động lại. Đừng nhảy cóc phiên bản lớn. - Sao lưu: dump PostgreSQL và cất giữ
.env.productioncẩn thận — thiếu các khóa bí mật trong đó, việc khôi phục sẽ không thành. Hướng dẫn restic của chúng tôi bao quát bản sao ngoài máy chủ, còn Managed Backups bổ sung điểm khôi phục hằng ngày cho toàn bộ máy chủ. - Tên miền là vĩnh viễn. Nó gắn vào địa chỉ của mọi tài khoản trên toàn fediverse. Hãy chọn trước khi tạo tài khoản đầu tiên.
Muốn thứ gì nhẹ hơn cho chat nhóm? Một máy chủ Matrix có thể hợp hơn.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.