საკუთარი სოციალური ანგარიშის ფლობა კარგი იდეაა, სანამ არ მიხვდებით, რომ ანგარიში სხვის სერვერზე ცხოვრობს, მისი წესებითა და მუშაობის დროით. საკუთარი Mastodon-ინსტანსი ამას აგვარებს: თქვენი სახელია @you@your-domain და მას თქვენს გარდა ვერავინ გათიშავს. საქმე ის არის, რომ Mastodon პატარა აპლიკაცია არ არის. ღირს იცოდეთ, რას კისრულობთ.
ვისთვისაა ეს
- ერთი მომხმარებლის ინსტანსი თქვენთვის ან თქვენი კომპანიის ოფიციალური ანგარიშისთვის.
- მეგობრების ან პროექტის გუნდის პატარა საზოგადოება — ათეულობით ადამიანი და არა ათასობით.
უფრო დიდი რამისთვის უკვე სერვისს მართავთ მოდერაციის მოვალეობებით, ბოროტად გამოყენების შეტყობინებებით და ნამდვილი ინფრასტრუქტურით. ეს სხვა საუბარია.
რა სჭირდება სინამდვილეში
Mastodon ერთდროულად რამდენიმე პროცესს უშვებს: Rails-ის ვებ-აპლიკაციას, 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-ს dist/nginx.conf-ში nginx-ის შაბლონი აქვს. დააკოპირეთ ის /etc/nginx/sites-available/-ში, შეცვალეთ დომენი და certbot-ით სერტიფიკატი აიღეთ. ჩვენი reverse proxy-ის და დომენის სახელმძღვანელოები ორივეს ფარავს.
ელფოსტა: გამოიყენეთ რელე
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
გულწრფელად, რელეს ისედაც მოინდომებდით. სრულიად ახალი სერვერის IP-იდან გაგზავნილი წერილები ხშირად სპამში ხვდება; რელეს აქვს ის რეპუტაცია, რომელიც თქვენ ჯერ არ გაქვთ.
მედია: დისკის მჭამელი
ყველა სურათი და ვიდეო იმ ანგარიშებიდან, რომლებსაც თქვენი სერვერი ხედავს, ლოკალურად ქეშირდება. აქტიურ ინსტანსზე ეს კვირაში გიგაბაიტებია. რეგულარულად გაასუფთავეთ ძველი დისტანციური მედია:
docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30
ჩასვით ისინი ყოველდღიურ cron-ამოცანაში. თუ ინსტანსი გაიზრდება, მედია .env.production-ის S3_* პარამეტრებით S3-თავსებად ობიექტურ საცავში გადაიტანეთ — მაშინ VPS-ის დისკზე მხოლოდ მონაცემთა ბაზა დარჩება.
მოვლა
- განახლებები: ჩამოტვირთეთ ახალი ტეგი,
docker compose pull, გაუშვით მიგრაციები გამოშვების შენიშვნების მიხედვით და გადატვირთეთ. მთავარ ვერსიებს ნუ გამოტოვებთ. - სარეზერვო ასლები: გააკეთეთ PostgreSQL-ის dump და უსაფრთხოდ შეინახეთ
.env.production— მისი საიდუმლოებების გარეშე აღდგენა არ იმუშავებს. ჩვენი restic-ის სახელმძღვანელო სერვერის გარეთ ასლებს ფარავს, Managed Backups კი მთელი სერვერის ყოველდღიურ აღდგენის წერტილებს ამატებს. - დომენი მუდმივია. ის ყოველი ანგარიშის მისამართშია ჩაწერილი მთელ ფედივერსში. აირჩიეთ პირველი ანგარიშის შექმნამდე.
გუნდის ჩატისთვის რამე უფრო მსუბუქი გინდათ? შესაძლოა, Matrix-სერვერი უკეთ მოერგოს.
კომენტარები
ჯერ არ არის კომენტარები. იყავით პირველი.