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

Предварительные условия

  • Сервер под управлением Ubuntu 24.04 или любой другой ОС Linux.
  • Привилегии пользователя: пользователь root или не root с привилегиями sudo.

Конвенции

# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя

Установите Postgres и вспомогательное программное обеспечение

$ sudo apt -y install git build-essential postgresql postgresql-contrib cmake libmagic-dev

Установите Elixir и Erlang

$ sudo apt -y install elixir erlang-dev erlang-nox

Установите инструменты для работы с изображениями

$ sudo apt -y install imagemagick ffmpeg libimage-exiftool-perl

Установить Pleroma

Создайте пользователя для запуска программного обеспечения Pleroma:

$ sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma

Создайте каталог Плеромы.

$ sudo mkdir -p /opt/pleroma
$ sudo chown -R pleroma:pleroma /opt/pleroma

Клонируйте git-репозиторий Pleroma от имени пользователя Pleroma.

$ sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma

Перейдите в подкаталог Плеромы.

$ cd /opt/pleroma

Установите пакеты поддержки Pleroma. Ответьте «Да» на вопрос об установке Hex.

$ sudo -Hu pleroma mix deps.get

Создайте конфигурацию плеромы. Это займет несколько минут. Ответьте «Да» на вопрос об установке rebar3.

$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen

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

Какой домен будет использовать ваш экземпляр? (например, pleroma.example.com) [] введите здесь полное доменное имя Enter
Как называется ваш экземпляр? (например, The Corndog Emporium) [] имя сервера Введите Какой у вас адрес электронной почты администратора? [] адрес электронной почты Enter
Какой адрес электронной почты вы хотите использовать для отправки уведомлений по электронной почте? [] адрес электронной почты Enter
Вы хотите, чтобы поисковые системы индексировали ваш сайт? (да/нет) [Да] Enter 
Хотите ли вы сохранить конфигурацию в базе данных (позволяет управлять ею из admin-fe)? (да/нет) [нет] Да Enter
Какое имя хоста у вашей базы данных? [localhost] Введите Как называется ваша база данных? [pleroma] Enter 
Какой пользователь используется для подключения к вашей базе данных? [pleroma] Enter
Какой пароль используется для подключения к вашей базе данных? [автогенерируется] Enter
Хотели бы вы использовать индексы RUM? [нет] Enter
Какой порт будет прослушивать приложение (оставьте его, если вы используете настройку по умолчанию с nginx)? [4000] Enter
Какой IP-адрес будет слушать приложение (оставьте его, если вы используете настройку по умолчанию с nginx)? [127.0.0.1] Enter 
В каком каталоге следует помещать загрузки мультимедиа (при использовании локального загрузчика)? [загружает] Enter
Из какого каталога следует читать пользовательские общедоступные файлы (пользовательские смайлы, переопределения пакетов внешнего интерфейса, robots.txt и т.д.)? [экземпляр/статический/] Enter
Хотите удалить данные о местоположении (GPS) из загруженных изображений? Для этого требуется exiftool, он определился как установленный. (да/нет) [Да] Enter
Хотите анонимизировать имена загружаемых файлов? (да/нет) [нет] Да Enter
Хотите дедуплицировать загруженные файлы? (да/нет) [нет] Да Enter
Запись конфигурации в config/generated_config.exs. Запись сценария postgres в config/setup_db.psql. Написание /opt/pleroma/instance/static/robots.txt.

Все файлы успешно записаны! Дальнейшие действия см. в инструкциях по установке для вашей платформы.

Пожалуйста, перенесите свою конфигурацию в базу данных после выполнения миграции базы данных. Дополнительную информацию см. в разделе документации «Перенос конфигурации в/из базы данных».

Переместите файлы конфигурации в их окончательное местоположение:

$ sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}

Улучшение конфигурации безопасности

Установите для secure_cookie_flag значение true, чтобы файлы cookie отправлялись через безопасное соединение.

$ sudo sed -i 's/secure_cookie_flag: false/secure_cookie_flag: true/g' config/config.exs

Включите строгую транспортную безопасность, чтобы злоумышленник не мог понизить соединение HTTPS до HTTP.

$ sudo sed -i 's/ sts: false/ sts: true/g' config/config.exs

Обновите файл ca-certificates.crt и добавьте его в конфигурацию Плеромы:

$ sudo update-ca-certificates --fresh
$ sudo sed -i 's,path/to/file/with/PEM/cacerts,/etc/ssl/certs/ca-certificates.crt,' config/description.exs

Создайте базу данных Postgres:

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

Запустите миграцию базы данных:

$ sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate

Установите Nginx

Nginx будет выступать в качестве обратного прокси-сервера перед Pleroma, обрабатывая TLS и управление сеансами.

$ sudo apt -y install nginx

Остановите Nginx, чтобы позволить Certbot использовать порт 80

$ sudo systemctl stop nginx.service

Настройте брандмауэр (ufw), чтобы разрешить входящие TCP-соединения через порты 80 и 443

$ sudo ufw allow http
$ sudo ufw allow https

Установите Certbot и запросите сертификат TLS

$ sudo apt -y install certbot
$ sudo mkdir -p /var/lib/letsencrypt/

Certbot запросит одобрение (обязательных) условий обслуживания Let’s Encrypt и предложит подписку на (необязательный) список рассылки. Certbot настроится на автоматическое обновление сертификата TLS.

$ sudo certbot certonly --email $EMAIL -d $FQDN --standalone

Установите конфигурацию Nginx

$ sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
$ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

Добавьте доменное имя в конфигурацию Nginx

$ sudo sed -i "s,example.tld,$FQDN," /etc/nginx/sites-available/pleroma.nginx

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

$ sudo systemctl enable --now nginx.service

Установите служебный файл systemd

$ sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service

Включите Pleroma для запуска во время загрузки и запустите ее немедленно

$ sudo systemctl enable --now pleroma.service

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

$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new $USER $EMAIL --admin

Система отобразит URL-адрес для установки пароля для указанного имени пользователя.

Заключительные шаги

Установите пароль, используя предоставленную ссылку, и нажмите «Домашняя страница».

Войдите в систему с только что созданным именем пользователя и паролем и перейдите в меню «Администрирование», щелкнув значок глобуса в правом верхнем углу экрана, затем выберите «Настройки» на левой панели, затем выберите «Экземпляр». Прокрутите вниз и измените параметр «Регистрации открыты», чтобы разрешить (выбор по умолчанию) или запретить общедоступную регистрацию пользователей и публикации статуса, а также установите другие параметры по мере необходимости. Измените настройку «Федерация», чтобы разрешить (по умолчанию) или запретить подключения к другим серверам в Fediverse.

Если вам понравился этот пост о том, как установить Pleroma на Ubuntu 24.04. Вы также можете поделиться этим постом с друзьями в социальных сетях, кому эта статья может быть интересна или просто оставьте комментарий ниже. Спасибо.