การเป็นเจ้าของบัญชีโซเชียลเองฟังดูดี จนกระทั่งคุณรู้ว่าบัญชีนั้นอยู่บนเซิร์ฟเวอร์ของคนอื่น ภายใต้กฎและเวลาทำงานของเขา อินสแตนซ์ Mastodon ของคุณเองแก้เรื่องนี้ได้: แฮนเดิลของคุณคือ @you@your-domain และไม่มีใครปิดมันได้นอกจากคุณ ข้อแม้คือ Mastodon ไม่ใช่แอปเล็กๆ ควรรู้ก่อนว่ากำลังจะเจออะไร
เหมาะกับใคร
- อินสแตนซ์สำหรับผู้ใช้คนเดียว ของคุณเองหรือบัญชีทางการของบริษัท
- ชุมชนเล็กๆ ของเพื่อนหรือทีมโปรเจกต์ — หลักสิบคน ไม่ใช่หลักพัน
ใหญ่กว่านั้นแปลว่าคุณกำลังรันบริการที่มีหน้าที่ดูแลเนื้อหา รับเรื่องร้องเรียนการใช้งานผิด และโครงสร้างพื้นฐานจริงจัง นั่นเป็นอีกเรื่องหนึ่ง
ต้องใช้อะไรจริงๆ
Mastodon รันหลายโปรเซสพร้อมกัน: เว็บแอป Rails, worker เบื้องหลังของ Sidekiq, เซิร์ฟเวอร์สตรีมมิง, PostgreSQL และ Redis ด้วยการเชื่อมเครือข่าย เซิร์ฟเวอร์ของคุณจะดึงโพสต์และสื่อจากเซิร์ฟเวอร์อื่นต่อไปแม้ตอนคุณหลับ
| อินสแตนซ์ | แพ็กเกจ |
|---|---|
| ผู้ใช้คนเดียว ติดตามไม่มาก | Small-IP — 2 vCPU, 4 GB, $16/เดือน |
| ชุมชนเล็ก เชื่อมเครือข่ายคึกคัก | Medium-IP — 4 vCPU, 6 GB, $20/เดือน |
4 GB ใช้ได้แต่ตึง คิวของ Sidekiq จะล้นเมื่อโพสต์ดังที่คุณติดตามได้คำตอบเป็นพัน 6 GB ให้พื้นที่หายใจ ข้อจำกัดอีกอย่างคือดิสก์ — ดูส่วนสื่อด้านล่าง
คุณต้องมีโดเมนและ IP เฉพาะ ด้วย: เซิร์ฟเวอร์อื่นส่งมาที่เซิร์ฟเวอร์ของคุณบนพอร์ต 443
ติดตั้งด้วย Docker
คลังทางการมี docker-compose.yml มาให้ บนเซิร์ฟเวอร์ Ubuntu 24.04 ใหม่ที่ติดตั้ง Docker แล้ว:
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
งานตั้งค่าจะถามโดเมน การตั้งค่าฐานข้อมูลและ Redis (ค่าเริ่มต้นตรงกับไฟล์ compose) การตั้งค่าอีเมล และบัญชีแอดมินแรก แล้วเขียนทุกอย่างลง .env.production อ่านบันทึกการออกรุ่นของแท็กที่คุณเลือก — ขั้นตอนเปลี่ยนบ้างระหว่างรุ่นใหญ่
Mastodon มีเทมเพลต nginx อยู่ที่ dist/nginx.conf คัดลอกไปที่ /etc/nginx/sites-available/ เปลี่ยนโดเมน แล้วขอใบรับรองด้วย certbot คู่มือreverse proxy และโดเมน ของเราครอบคลุมทั้งสองเรื่อง
อีเมล: ใช้ relay
Mastodon ส่งอีเมลยืนยันและรีเซ็ตรหัสผ่าน พอร์ต 25 และ 465 ปิดอยู่บนเซิร์ฟเวอร์ของเรา ให้ชี้ Mastodon ไปที่ผู้ให้บริการอีเมลธุรกรรมภายนอกผ่านพอร์ต 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
พูดตรงๆ ยังไงคุณก็อยากได้ relay อยู่ดี อีเมลจาก IP เซิร์ฟเวอร์ใหม่เอี่ยมมักตกไปอยู่ในสแปม relay มีชื่อเสียงที่คุณยังไม่มี
สื่อ: ตัวกินดิสก์
ทุกรูปและวิดีโอจากบัญชีที่เซิร์ฟเวอร์ของคุณเห็นจะถูกแคชไว้ในเครื่อง บนอินสแตนซ์ที่คึกคักนั่นคือหลายกิกะไบต์ต่อสัปดาห์ ล้างสื่อจากภายนอกที่เก่าตามรอบเวลา:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
ใส่ไว้ใน cron job รายวัน ถ้าอินสแตนซ์โตขึ้น ให้ย้ายสื่อไปที่เก็บอ็อบเจกต์ที่รองรับ S3 ด้วยการตั้งค่า S3_* ใน .env.production — แล้วดิสก์ของ VPS จะเก็บแค่ฐานข้อมูล
การดูแล
- อัปเดต: ดึงแท็กใหม่
docker compose pullรัน migration ตามบันทึกการออกรุ่น แล้วรีสตาร์ต อย่าข้ามรุ่นใหญ่ - สำรองข้อมูล: dump PostgreSQL และเก็บ
.env.productionให้ดี — ถ้าไม่มีความลับในไฟล์นั้น การกู้คืนจะไม่สำเร็จ คู่มือ restic ของเราครอบคลุมสำเนานอกเซิร์ฟเวอร์ และ Managed Backups เพิ่มจุดกู้คืนรายวันของทั้งเซิร์ฟเวอร์ - โดเมนเปลี่ยนไม่ได้ มันฝังอยู่ในที่อยู่ของทุกบัญชีทั่ว fediverse เลือกก่อนสร้างบัญชีแรก
อยากได้อะไรที่เบากว่านี้สำหรับแชตทีม? เซิร์ฟเวอร์ Matrix อาจเหมาะกว่า
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ