Как установить платформу социальной сети Pleroma на Ubuntu 20.04
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите PostgreSQL
- Шаг 3. Установите Nginx
- Шаг 4. Установите Pleroma
- Шаг 5. Настройка Pleroma
- Шаг 6. Установите SSL с помощью Lets Encrypt
- Шаг 7. Настройка Nginx
- Шаг 8. Настройка Pleroma
- Создайте пользователя с правами администратора
- Изменение настроек
- Обновление Плеромы
- Резервное копирование Pleroma
- Восстановление Плеромы
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. Если у вас есть какие-либо вопросы или отзывы, оставьте их в комментариях ниже.