Поиск по сайту:

Как установить платформу социальной сети Pleroma на Ubuntu 20.04


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите PostgreSQL
  4. Шаг 3. Установите Nginx
  5. Шаг 4. Установите Pleroma
  6. Шаг 5. Настройка Pleroma
  7. Шаг 6. Установите SSL с помощью Lets Encrypt
  8. Шаг 7. Настройка Nginx
  9. Шаг 8. Настройка Pleroma
    1. Создайте пользователя с правами администратора
    2. Изменение настроек
    3. Обновление Плеромы
    4. Резервное копирование Pleroma
    5. Восстановление Плеромы

    Pleroma — это платформа федеративной социальной сети с открытым исходным кодом, совместимая с Mastodon и другими платформами ActivityPub. Это часть Fediverse, федеративной сети экземпляров, которые могут обмениваться данными с использованием общего протокола. Одна учетная запись в одном экземпляре может общаться со всей сетью Fediverse.

    Это руководство покажет вам, как создать свой собственный экземпляр Pleroma, установив его на сервер под управлением Ubuntu 20.04.

    Предпосылки

    • A server running Ubuntu 20.04.

    • A non-root sudo user.

    • Make sure everything is updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    • Few packages and dependencies that you need before installing Pleroma.

      $ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
      

    Шаг 1. Настройте брандмауэр

    Первым шагом является настройка брандмауэра. Ubuntu по умолчанию поставляется с ufw (простой брандмауэр).

    Проверьте, работает ли брандмауэр.

    $ sudo ufw status
    

    Вы должны получить следующий вывод.

    Status: inactive
    

    Разрешить порт SSH, чтобы брандмауэр не прерывал текущее соединение при его включении.

    $ sudo ufw allow OpenSSH
    

    Разрешить также порты HTTP и HTTPS.

    $ sudo ufw allow 80
    $ sudo ufw allow 443
    

    Включить брандмауэр

    $ sudo ufw enable
    Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    Firewall is active and enabled on system startup
    

    Еще раз проверьте состояние брандмауэра.

    $ sudo ufw status
    

    Вы должны увидеть аналогичный вывод.

    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)
    

    Шаг 2 — Установите PostgreSQL

    Добавьте официальный репозиторий PostgreSQL в список источников 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'
    

    Добавьте ключ GPG репозитория.

    $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    

    Обновите список системных пакетов.

    $ sudo apt update
    

    Шаг 3 — Установите Nginx

    Ubuntu 20.04 по умолчанию поставляется со стабильной версией Nginx 18.

    $ sudo apt install nginx
    

    Шаг 4 - Установите Плерому

    Это руководство устанавливает Pleroma из выпуска OTP. Первый шаг — создать пользователя Pleroma без возможности входа в систему. Он также создаст для него домашний каталог в /opt/pleroma.

    $ sudo adduser --system --shell  /bin/false --home /opt/pleroma pleroma
    

    Переключитесь на пользователя Pleroma. Но сначала нам нужно переключиться на пользователя root.

    $ sudo su
    $ su pleroma -s $SHELL -l
    

    Загрузите Pleroma во временное место.

    $ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip
    

    Разархивируйте архив.

    $ unzip /tmp/pleroma_amd64.zip -d /tmp/
    

    Установите Плерому.

    $ mv /tmp/release/* /opt/pleroma
    

    Удалите временные файлы.

    $ rm -rf /tmp/pleroma_amd64.zip /tmp/release
    

    Переключитесь на пользователя root.

    $ exit
    

    Создайте каталоги для загрузок и общедоступных файлов.

    $ mkdir -p /var/lib/pleroma/{uploads,static}
    

    Создайте каталог для конфигурации Pleroma.

    $ mkdir -p /etc/pleroma
    

    Измените права собственности на каталоги Pleroma на пользователя Pleroma.

    $ chown -R pleroma /var/lib/pleroma /etc/pleroma
    

    Шаг 5 - Настройте Плерому

    Вернитесь к пользователю Pleroma.

    $ su pleroma -s /bin/bash -l
    

    Выполните следующую команду, чтобы сгенерировать файл конфигурации для экземпляра Pleroma.

    $ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
    

    Вам будет задано несколько вопросов о настройке Pleroma. Если вы получили предупреждение о том, что файл конфигурации не найден, игнорируйте его.

    :~$ ./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? [] 
    What email address do you want to use for sending email notifications? [] <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.
    

    Вы можете выбрать другой набор опций в зависимости от ваших требований. Выберите надежный пароль для своей базы данных. Если вы хотите настроить свой экземпляр из Панели администрирования, выберите y на вопрос о сохранении конфигурации в базе данных.

    Переключитесь на пользователя PostgreSQL по умолчанию, который был создан при установке PostgreSQL.

    $ exit
    $ su postgres -s /bin/bash -l
    

    Создайте базу данных, используя файл SQL, предоставленный Pleroma.

    $ psql -f /tmp/setup_db.psql
    

    Вернитесь к пользователю Pleroma.

    $ exit
    $ su pleroma -s /bin/bash -l
    

    Инициализируйте базу данных, которую мы только что создали.

    $ ./bin/pleroma_ctl migrate
    

    Выход к пользователю Root.

    $ exit
    

    Шаг 6. Установите SSL с помощью Lets Encrypt

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно загрузить инструмент Certbot.

    Для установки Certbot мы будем использовать установщик пакетов Snapd. Официальный репозиторий Certbots устарел, а пакету Ubuntu Certbot больше года. Snapd всегда содержит последнюю стабильную версию Certbot, и вы должны использовать ее. К счастью, Ubuntu 20.04 поставляется с предустановленным Snapd.

    Убедитесь, что ваша версия Snapd обновлена.

    $ snap install core 
    $ snap refresh core
    

    Удалите все старые версии Certbot.

    $ apt remove certbot
    

    Установите Сертбот.

    $ snap install --classic certbot
    

    Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на каталог /usr/bin.

    $ ln -s /snap/bin/certbot /usr/bin/certbot
    

    Остановите службу Nginx.

    $ systemctl stop nginx
    

    Создайте SSL-сертификат.

    $ certbot certonly --standalone --preferred-challenges http -d example.com
    

    Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/example.com на вашем сервере.

    Создайте корневую веб-директорию для автоматического обновления Lets Encrypt.

    $ mkdir -p /var/lib/letsencrypt
    

    Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew и откройте его для редактирования.

    $ nano /etc/cron.daily/certbot-renew
    

    Вставьте следующий код.

    #!/bin/sh
    certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Измените права доступа к файлу задачи, чтобы сделать его исполняемым.

    $ chmod +x /etc/cron.daily/certbot-renew
    

    Шаг 7 — Настройте Nginx

    Pleroma поставляется с файлом конфигурации Nginx по умолчанию. Установите его, переместив в каталог /etc/nginx/sites-available.

    $ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
    

    Замените все вхождения example.tld своим доменом.

    $ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf
    

    Откройте файл конфигурации для редактирования.

    $ nano /etc/nginx/sites-available/pleroma.conf
    

    Раскомментируйте блок location ~ /\.well-known/acme-challenge. Блок server вашего файла конфигурации должен выглядеть следующим образом.

    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;
        }
    }
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Включите конфигурацию Pleroma Nginx, создав символическую ссылку.

    $ ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
    

    Включите сервер Nginx, чтобы он запускался во время загрузки.

    $ systemctl enable nginx.
    

    Запустите сервер Nginx.

    $ systemctl start nginx
    

    Установите файл сервисного модуля Pleroma systemd, предоставленный в дистрибутиве.

    $ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
    

    Включите и запустите службу Pleroma.

    $ systemctl enable pleroma
    $ systemctl start pleroma
    

    Доступ к сайту Pleroma может занять около 30 секунд. Теперь вы можете открыть https://example.com в своем веб-браузере, чтобы посетить Pleroma. Это должно выглядеть следующим образом.

    Шаг 8 — Настройте Плерому

    Создайте пользователя-администратора

    Вы можете создать пользователя-администратора через командную строку. Сначала переключитесь на пользователя Pleroma.

    $ su pleroma -s /bin/bash -l
    

    Создайте пользователя-администратора. Замените example своим именем пользователя, [email  своим адресом электронной почты и password123 надежным паролем.

    $ ./bin/pleroma_ctl user new example  --password password123 --admin
    

    Когда закончите, вернитесь к пользователю root.

    $ exit
    

    Изменение настроек

    Если вы выбрали ответ «нет» для хранения конфигурации в базе данных, это означает, что вы не можете изменять настройки из административной панели Pleroma. Чтобы изменить настройки, вам потребуется изменить файл /etc/pleroma/config.exs.

    $ nano /etc/pleroma/config.exs
    

    Когда вы закончите редактирование файла, вам также потребуется перезапустить сервис Pleroma. Возможно, вам придется подождать некоторое время, прежде чем служба будет возобновлена.

    $ systemctl restart pleroma
    

    Обновление Плеромы

    Первым шагом для обновления Pleroma является загрузка новой версии. Выполните следующую команду, чтобы загрузить новую версию Pleroma.

    $ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"
    

    Остановить экземпляр Pleroma.

    $ systemctl stop pleroma
    

    Следующим шагом будет миграция базы данных.

    $ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
    

    Запустите экземпляр Pleroma.

    $ systemctl start pleroma
    

    Резервное копирование Плеромы

    Остановите службу Плеромы.

    $ systemctl stop pleroma
    

    Перейдите в каталог Pleromas.

    $ cd /opt/pleroma
    

    Выполните следующую команду, чтобы создать резервную копию базы данных.

    $ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>
    

    Скопируйте файлы pleroma.pgdump, config/prod.secret.exs, config/setup_db.sql и загрузки в папку для резервного копирования.

    Снова запустите службу Pleroma.

    $ systemctl start pleroma
    

    Восстановление Плеромы

    Чтобы восстановить Pleroma, вам необходимо переустановить Pleroma и убедиться, что служба Pleroma не работает.

    Затем скопируйте резервные копии файлов обратно в исходное место.

    Удалите существующую базу данных и пользователя, используя следующую команду.

    $ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'
    

    Восстановите схему базы данных и роль Pleroma Postgres с помощью резервной копии файла setup_db.sql.

    $ sudo -Hu postgres psql -f config/setup_db.psql
    

    Затем восстановите данные экземпляров Pleroma.

    $ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>
    

    Перенесите базу данных, если остались какие-либо миграции, которые необходимо выполнить, если вы переходите на более новую версию.

    $ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
    

    Перезапустите службу Pleroma.

    $ systemctl restart pleroma
    

    Создайте статистику, чтобы Postgres мог правильно планировать запросы.

    $ sudo -Hu postgres vacuumdb --all --analyze-in-stages
    

    Заключение

    На этом мы завершаем наше руководство по установке платформы социальной сети Pleroma на сервер под управлением Ubuntu 20.04. Если у вас есть какие-либо вопросы или отзывы, оставьте их в комментариях ниже.