Pleroma je open-source federovaná platforma sociálních sítí, kompatibilní s Mastodon a dalšími platformami ActivityPub. Je součástí Fediverse, federované sítě instancí, které mohou komunikovat pomocí společného protokolu. Jeden jediný účet v jedné instanci může komunikovat s celou sítí Fediverse.
Tato příručka vám ukáže, jak vytvořit vlastní instanci Pleroma její instalací na server založený na Ubuntu 20.04.
Předpoklady
-
Server se systémem Ubuntu 20.04.
-
Uživatel sudo bez oprávnění root.
-
Ujistěte se, že je vše aktualizováno.
$ sudo apt update $ sudo apt upgrade
-
Několik balíčků a závislostí, které potřebujete před instalací Pleroma.
$ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
Krok 1 – Konfigurace brány firewall
Prvním krokem je konfigurace firewallu. Ubuntu je standardně dodáváno s ufw (Uncomplicated Firewall).
Zkontrolujte, zda je spuštěna brána firewall.
$ sudo ufw status
Měli byste získat následující výstup.
Status: inactive
Povolte port SSH, aby firewall při jeho povolení nepřerušil aktuální připojení.
$ sudo ufw allow OpenSSH
Povolit také porty HTTP a HTTPS.
$ sudo ufw allow 80
$ sudo ufw allow 443
Povolte bránu firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Znovu zkontrolujte stav brány firewall.
$ sudo ufw status
Měli byste vidět podobný výstup.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Krok 2 – Instalace PostgreSQL
Přidejte oficiální úložiště PostgreSQL do seznamu zdrojů Ubuntu.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Přidejte klíč GPG úložiště.
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Aktualizujte seznam systémových balíčků.
$ sudo apt update
Krok 3 – Instalace Nginx
Ubuntu 20.04 se standardně dodává se stabilní verzí Nginx 18.
$ sudo apt install nginx
Krok 4 – Instalace Pleroma
Tato příručka nainstaluje Pleroma z vydání OTP. Prvním krokem je vytvoření uživatele Pleroma bez možnosti přihlášení. Také pro něj vytvoří domovský adresář /opt/pleroma
.
$ sudo adduser --system --shell /bin/false --home /opt/pleroma pleroma
Přepněte na uživatele Pleroma. Nejprve se však musíme přepnout na uživatele root.
$ sudo su
$ su pleroma -s $SHELL -l
Stáhněte si Pleroma do dočasného umístění.
$ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip
Rozbalte archiv.
$ unzip /tmp/pleroma_amd64.zip -d /tmp/
Nainstalujte Pleroma.
$ mv /tmp/release/* /opt/pleroma
Smažte dočasné soubory.
$ rm -rf /tmp/pleroma_amd64.zip /tmp/release
Přepněte na uživatele root.
$ exit
Vytvořte adresáře pro nahrávání a veřejné soubory.
$ mkdir -p /var/lib/pleroma/{uploads,static}
Vytvořte adresář pro konfiguraci Pleroma.
$ mkdir -p /etc/pleroma
Změňte vlastnictví adresářů Pleroma na uživatele Pleroma.
$ chown -R pleroma /var/lib/pleroma /etc/pleroma
Krok 5 – Konfigurace Pleroma
Přepněte zpět na uživatele Pleroma.
$ su pleroma -s /bin/bash -l
Spuštěním následujícího příkazu vygenerujte konfigurační soubor pro instanci Pleroma.
$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
Budete dotázáni na několik otázek ohledně nastavení Pleroma. Pokud se zobrazí varování, že konfigurační soubor nebyl nalezen, ignorujte ho.
[email protected]:~$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
!!! /etc/pleroma/config.exs not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file
What domain will your instance use? (e.g pleroma.soykaf.com) [] example.com
What is the name of your instance? (e.g. The Corndog Emporium) [nspeaks.com] Howtoforge Pleroma
What is your admin email address? [] [email protected]
What email address do you want to use for sending email notifications? [[email protected]] <Press Enter>
Do you want search engines to index your site? (y/n) [y] y
Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] n
What is the hostname of your database? [localhost] localhost
What is the name of your database? [pleroma] pleroma
What is the user used to connect to your database? [pleroma] pleroma
What is the password used to connect to your database? [autogenerated] yourpassword
Would you like to use RUM indices? [n] n
What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] <Press Enter>
What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] <Press Enter>
What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] <Press Enter>
What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] <Press Enter>
Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as not installed, please install it if you answer yes. (y/n) [n] n
Do you want to anonymize the filenames of uploads? (y/n) [n] n
Do you want to deduplicate uploaded files? (y/n) [n] y
Writing config to /etc/pleroma/config.exs.
Writing the postgres script to /tmp/setup_db.psql.
Writing /var/lib/pleroma/static/robots.txt.
All files successfully written! Refer to the installation instructions for your platform for next steps.
V závislosti na vašich požadavcích si můžete vybrat jinou sadu možností. Zvolte silné heslo pro vaši databázi. Pokud chcete konfigurovat svou instanci z Administračního panelu, vyberte y
na otázku o uložení konfigurace do databáze.
Přepněte na výchozího uživatele PostgreSQL, který byl vytvořen při instalaci PostgreSQL.
$ exit
$ su postgres -s /bin/bash -l
Vytvořte databázi pomocí souboru SQL poskytnutého společností Pleroma.
$ psql -f /tmp/setup_db.psql
Přepněte zpět na uživatele Pleroma.
$ exit
$ su pleroma -s /bin/bash -l
Inicializujte databázi, kterou jsme právě vytvořili.
$ ./bin/pleroma_ctl migrate
Přejděte na uživatele root.
$ exit
Krok 6 – Instalace SSL pomocí Let's Encrypt
Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme si stáhnout nástroj Certbot.
K instalaci Certbotu použijeme instalační program balíčku Snapd. Oficiální úložiště Certbotu bylo zastaralé a balíček Certbot Ubuntu je více než rok starý. Snapd vždy obsahuje nejnovější stabilní verzi Certbota a měli byste ji používat. Naštěstí je Ubuntu 20.04 dodáván s předinstalovaným Snapdem.
Ujistěte se, že vaše verze Snapd je aktuální.
$ snap install core
$ snap refresh core
Odstraňte všechny staré verze Certbotu.
$ apt remove certbot
Nainstalujte Certbot.
$ snap install --classic certbot
Pomocí následujícího příkazu zajistěte, aby bylo možné spustit příkaz Certbot vytvořením symbolického odkazu na /usr/bin
adresář.
$ ln -s /snap/bin/certbot /usr/bin/certbot
Zastavte službu Nginx.
$ systemctl stop nginx
Vygenerujte certifikát SSL.
$ certbot certonly --standalone --preferred-challenges http -d example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/example.com
adresář na vašem serveru.
Vytvořte webový kořenový adresář výzvy pro automatické obnovení Let's Encrypt.
$ mkdir -p /var/lib/letsencrypt
Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew
a otevřete jej pro úpravy.
$ nano /etc/cron.daily/certbot-renew
Vložte následující kód.
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Změňte oprávnění k souboru úlohy, aby byl spustitelný.
$ chmod +x /etc/cron.daily/certbot-renew
Krok 7 – Konfigurace Nginx
Pleroma se dodává s výchozím konfiguračním souborem Nginx. Nainstalujte jej přesunutím do /etc/nginx/sites-available
adresář.
$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
Nahraďte všechny výskyty example.tld
s vaší doménou.
$ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf
Otevřete konfigurační soubor pro úpravy.
$ nano /etc/nginx/sites-available/pleroma.conf
Odkomentujte location ~ /\.well-known/acme-challenge
blok. server
blok vašeho konfiguračního souboru by měl vypadat následovně.
server {
server_name example.com;
listen 80;
listen [::]:80;
location ~ /\.well-known/acme-challenge {
root /var/lib/letsencrypt/;
}
location / {
return 301 https://$server_name$request_uri;
}
}
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Povolte konfiguraci Pleroma Nginx vytvořením symbolického odkazu.
$ ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
Povolte serveru Nginx, aby jej spustil při spouštění.
$ systemctl enable nginx.
Spusťte server Nginx.
$ systemctl start nginx
Nainstalujte soubor servisní jednotky Pleroma systemd poskytnutý v distribuci.
$ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
Povolte a spusťte službu Pleroma.
$ systemctl enable pleroma
$ systemctl start pleroma
Zpřístupnění webu Pleroma může trvat přibližně 30 sekund. Nyní můžete otevřít https://example.com
ve vašem webovém prohlížeči navštívit Pleroma. Mělo by to vypadat následovně.
Krok 8 – Konfigurace Pleroma
Vytvořit uživatele s oprávněním správce
Administrativního uživatele můžete vytvořit pomocí příkazového řádku. Nejprve přepněte na uživatele Pleroma.
$ su pleroma -s /bin/bash -l
Vytvořte administrátora. Nahraďte example
s vaším uživatelským jménem, [email protected]
s vaší e-mailovou adresou a password123
se silným heslem.
$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin
Po dokončení se přepněte zpět na uživatele root.
$ exit
Změna nastavení
Pokud jste jako odpověď pro uložení konfigurace do databáze vybrali ne , to znamená, že nemůžete změnit nastavení z panelu Administrace Pleroma. Chcete-li změnit nastavení, budete muset upravit /etc/pleroma/config.exs
soubor.
$ nano /etc/pleroma/config.exs
Po dokončení úprav souboru budete také muset restartovat službu Pleroma. Možná budete muset nějakou dobu počkat, než bude služba obnovena.
$ systemctl restart pleroma
Aktualizace Pleroma
Pro aktualizaci Pleroma je prvním krokem stažení nové verze. Spusťte následující příkaz a stáhněte si nové vydání Pleroma.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"
Zastavte instanci Pleroma.
$ systemctl stop pleroma
Dalším krokem je migrace databáze.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Spusťte instanci Pleroma.
$ systemctl start pleroma
Zálohování Pleroma
Zastavte službu Pleroma.
$ systemctl stop pleroma
Přepněte se do adresáře Pleroma.
$ cd /opt/pleroma
Spusťte následující příkaz pro zálohování databáze.
$ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>
Zkopírujte soubory pleroma.pgdump
, config/prod.secret.exs
, config/setup_db.sql
a uploads
složky do cílového umístění zálohy.
Znovu spusťte službu Pleroma.
$ systemctl start pleroma
Obnovení Pleroma
Chcete-li obnovit Pleroma, musíte znovu nainstalovat Pleroma a ujistit se, že služba Pleroma nefunguje.
Poté zkopírujte zálohované soubory zpět do jejich původního umístění.
Zrušte existující databázi a uživatele pomocí následujícího příkazu.
$ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'
Obnovte schéma databáze a roli Pleroma Postgres pomocí zálohovaného souboru setup_db.sql
soubor.
$ sudo -Hu postgres psql -f config/setup_db.psql
Dále obnovte data instance Pleroma.
$ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>
Proveďte migraci databáze, pokud zbývá provést nějaké migrace pro případ, že přecházíte na novější verzi.
$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
Restartujte službu Pleroma.
$ systemctl restart pleroma
Vygenerujte statistiky, aby mohl Postgres správně naplánovat dotazy.
$ sudo -Hu postgres vacuumdb --all --analyze-in-stages
Závěr
Tímto končí náš návod k instalaci platformy Pleroma Social Network Platform na server využívající Ubuntu 20.04. Pokud máte nějaké dotazy nebo zpětnou vazbu, napište je do komentářů níže.