Samodzielne hostowanie Mastodona przy ograniczonym budżecie może wydawać się ryzykowne, ale z VPS za 5 €, kilkoma optymalizacjami i uporządkowaną metodą, staje się całkowicie możliwe posiadanie stabilnej zdecentralizowanej sieci społecznościowej. Ten artykuł omawia każdy etap, od wymagań wstępnych po bezpieczne wdrożenie produkcyjne, przez Docker, konfigurację SSL i codzienną konserwację.
Somaire
W skrócie
🔑 Na **VPS za 5 €** preferujemy **Ubuntu 22.04 LTS**, Docker i reverse proxy. To połączenie zapewnia **prostotę wdrożenia** i **kontrolowany koszt**.
⚙️ **Instalacja** odbywa się przez Docker Compose: pobranie repozytorium Mastodon, edycja pliku **.env**, a następnie uruchomienie usług. W 15 minut twój kontener będzie miał **PostgreSQL**, **Redis** i usługę webową.
🔒 Aby zapewnić **minimalne bezpieczeństwo**, używamy Let’s Encrypt (Certbot) za **reverse proxy Nginx**. Certyfikaty są odnawiane automatycznie, a ruch HTTP przekierowywany na HTTPS.
💾 **Zaprogramowane kopie zapasowe** w formie zrzutów PostgreSQL i archiwów wolumenów Dockera chronią twoje dane. Skrypt cron może wysyłać kopie zapasowe do zdalnego magazynu.
1. Wybór i przygotowanie VPS
1.1 Oferty za 5 €: kryteria wyboru
Dostawcy tacy jak Scaleway, OVHcloud czy Hetzner oferują podstawowe VPS-y za 5 € miesięcznie, zazwyczaj z 1 vCPU, 2 GB RAM i 20 GB pamięci SSD. Chociaż zasoby te są ograniczone, Mastodon pozostaje funkcjonalny, jeśli ograniczymy obciążenie (liczbę użytkowników, częstotliwość zadań w tle). Przed rozpoczęciem sprawdź:
- Typ pamięci (SSD vs HDD): SSD znacznie poprawia podstawowe operacje I/O bazy danych.
- Przepustowość i politykę burst.
- Lokalizację serwera pod kątem opóźnień względem docelowych użytkowników.
1.2 Przygotowanie Ubuntu 22.04 LTS
Stabilna i aktualna dystrybucja gwarantuje aktualizacje bezpieczeństwa. Po utworzeniu instancji:
- Zaloguj się przez SSH:
ssh root@votre-ip. - Zaktualizuj system:
apt update && apt upgrade -y. - Utwórz użytkownika nie-root:
adduser mastoadmin && usermod -aG sudo mastoadmin. - Zainstaluj podstawowe zależności:
apt install curl git ufw -y. - Włącz zaporę sieciową:
ufw allow OpenSSH && ufw enable.
2. Instalacja Mastodona z Dockerem
2.1 Instalacja Docker i Docker Compose
Docker upraszcza wdrożenie, izolując usługi w kontenerach. Wykonaj:
curl -fsSL https://get.docker.com | sh
usermod -aG docker mastoadmin
apt install docker-compose -y
Wyloguj się i zaloguj ponownie, aby użytkownik został dodany do grupy Docker.
2.2 Sklonuj repozytorium i skonfiguruj środowisko
Zaloguj się jako mastoadmin i wdroż Mastodon:
git clone https://github.com/mastodon/mastodon.git ~/mastodon
cd ~/mastodon
cp .env.production.sample .env.production
Otwórz .env.production i dostosuj:
- LOCAL_DOMAIN = twoja-domena.tld
- DB_USER, DB_PASS, DB_NAME
- REDIS_URL i STREAMING_CLUSTER
2.3 Uruchamianie usług
Zbuduj i uruchom wszystkie kontenery:
docker-compose build
docker-compose up -d
Po chwili powinieneś zobaczyć:
| Kontener | Port | Opis |
|---|---|---|
| web | 3000 | Interfejs Rails |
| streaming | 4000 | WebSocket |
| sidekiq | — | Zadania w tle |
| postgres | 5432 | Baza danych |
| redis | 6379 | Cache & kolejki zadań |
3. Zaawansowana konfiguracja i optymalizacja
3.1 Konfiguracja SSL z Let’s Encrypt
Bezpieczeństwo TLS jest niepodlegające negocjacjom. Zainstaluj Certbot i reverse proxy Nginx:
apt install nginx certbot python3-certbot-nginx -y
Utwórz blok serwera w /etc/nginx/sites-available/mastodon:
server { listen 80; server_name votre-domaine.tld; location / { proxy_pass http://127.0.0.1:3000; include proxy_params; } }
Aktywuj witrynę i wygeneruj certyfikat:
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/
systemctl reload nginx
certbot --nginx -d votre-domaine.tld --agree-tos --no-eff-email --redirect
3.2 Optymalizacja wydajności
Na małym VPS każda zasób się liczy:
- Ogranicz pamięć RAM Dockera: w
/etc/docker/daemon.jsondodaj"default-memory": "1G". - Skonfiguruj sidekiq z mniejszą liczbą wątków (np.
threads: 5). - Włącz tryb produkcyjny assetów Rails, aby zmniejszyć obciążenie CPU.
3.3 Kopie zapasowe i konserwacja
Przykład skryptu backupu (codzienny cron):
#!/bin/bash
TIMESTAMP=$(date +%F)
docker exec mastodon_postgres pg_dumpall -U postgres > /var/backups/db_$TIMESTAMP.sql
tar czf /var/backups/masto_data_$TIMESTAMP.tar.gz ~/mastodon/public/system
Wyślij te pliki do zdalnego magazynu (rsync, S3, Nextcloud), aby uniknąć utraty danych.
FAQ
- Czy potrzebny jest mocniejszy VPS, jeśli społeczność rośnie?
Tak, przejdź na 4 GB RAM i 2 vCPU, gdy zauważysz znaczący wzrost obciążenia.
- Jak zaktualizować Mastodona?
W folderze
~/mastodonwykonajgit pull, następniedocker-compose buildidocker-compose up -d. Nie zapomnij o migracji bazy danych, jeśli to konieczne. - Czy mogę spersonalizować interfejs?
Edytuj pliki CSS/JS w
app/javascripti przebuduj obraz Dockera. Uważaj na konflikty podczas oficjalnych aktualizacji. - Jak radzić sobie ze szczytami ruchu?
Włącz skalowanie poziome kontenerów web i streaming, rozkładając obciążenie za pomocą load balancera.