Перейти к содержанию

Mastodon

В этой статье


Информация

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

Mastodon. Основные возможности

  • Mastodon позволяет подписываться и общаться с пользователями из любых подключенных серверов;
  • Для поиска интересного контента в Mastodon есть ленты публичных постов. Локальная лента отображает посты с вашего сервера, а объединенная — все известные вашему серверу публичные посты подписчиков пользователей с вашего сервера;
  • Взаимодействовать с постами можно прямо в ленте или в расширенном представлении поста: ответить, поделиться, добавить в избранное, закладки или воспользоваться дополнительным меню;
  • Mastodon отправляет уведомления о разных событиях взаимодействия с вашим профилем и постами. Их можно фильтровать по типам;
  • Чтобы подписаться на пользователя, достаточно нажать кнопку Подписаться в его профиле. Можно включить уведомления о новых постах подписок;
  • Поиск в Mastodon позволяет найти пользователей, хештеги и загрузить пост по ссылке. При установленном полнотекстовом поиске можно искать в собственных постах и избранном;
  • Личные сообщения в Mastodon — это посты с видимостью "только подписчики". Отображаются в отдельной колонке диалогов;
  • Можно создавать списки подписок и просматривать ленту постов только из этих списков.

Особенности сборки

ID Совместимые ОС VPS BM VGPU GPU Мин. ЦПУ (Ядер) Мин. ОЗУ (Гб) Мин. HDD/SDD (Гб) Доступно
59 Ubuntu 22.04 + + + + 2 2 - Да
  • Установленное ПО

    ПО Лицензия
    Mastodon AGPLv3
    Nginx Custom
    Postgres Postgres SQL
    Certbot Apache 2
    Redis BSD-3-Clause
  • Возможна установка на ОС:

    • последние версии Ubuntu.
  • Минимальные системные требования для установки Mastodon:
  • Процессор: 2 ядра.
  • ОЗУ: 2 Гб.
  • Дисковое пространство: 30 Гб HDD.
  • Рекомендуемые системные требования:
  • Процессор: 4 ядра, 64-бит.
  • ОЗУ: 8 Гб.
  • Дисковое пространство: 80 Гб SSD.

Веб-интерфейс будет доступен по ссылке: https://mastodon{Server_ID_from_Invapi}.hostkey.in

Примечание

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

Начало работы после развертывания Mastodon

После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и APIInvapi.

Данные для авторизации, которые можно найти или во вкладке Информация >> Тэги панели управления сервером или в присланном e-mail:

  • Ссылка для доступа к панели управления Mastodon с веб-интерфейсом: в теге webpanel;
  • Логин и Пароль для подключения к серверу: приходят в письме на вашу электронную почту при готовности сервера к работе после развертывания ПО;
  • Логин и Пароль для авторизации в веб-интерфейсе Mastodon задаются вручную на этапе создания учётной записи через консоль администратора.

Пример использования

  1. Подключитесь к серверу по SSH:

    ssh root@<server_ip>
    
  2. Выполните вход в контейнер с веб-приложением Mastodon. Найдите и подключитесь к контейнеру mastodon_web_1:

    docker exec -it mastodon_web_1 bash
    
  3. Для создания нового пользователя, используйте команду tootctl accounts create. В качестве параметров указывайте имя пользователя, email и флаг --confirmed для подтверждения аккаунта.

    RAILS_ENV=production bin/tootctl accounts create new_username --email [email protected] --confirmed
    

    Замените new_username на желаемое имя пользователя, а [email protected] на реальный email пользователя.

    После выполнения этой команды пользователь будет создан. Обязательно сохраните пароль, который будет выведен на экран:

Предоставление прав администратора и одобрение пользователя

После создания пользователя, нужно найти его в базе данных для изменения прав и статуса.

  1. Запустите консоль Rails:

    RAILS_ENV=production bin/rails console
    
  2. Найдите пользователя по email или имени:

    user = User.find_by(email: '[email protected]')  # или: User.find_by(username: 'new_username')
    
  3. Обновите его статус:

    user.update(approved: true)
    

    Это действие уберёт надпись Your application is pending review by our staff... в административной панели.

  4. Назначьте ему административную роль:

    user.update(role: UserRole.find_by(name: 'Admin'))
    
  5. Проверьте:

    user.reload
    
    user.role           # => "Admin"
    
    user.approved       # => true
    
  6. Выйдите из консоли:

    exit
    

Настройка почтового сервера

Если требуется настроить или изменить почтовый сервер, выполните:

  1. Откройте файл конфигурации:

    nano /opt/mastodon/.env.production
    
  2. Настройте SMTP-параметры (например, для MailHog):

    # Sending mail
    # ------------
    SMTP_SERVER=mailhog
    SMTP_PORT=1025
    SMTP_LOGIN=
    SMTP_PASSWORD=
    SMTP_FROM_ADDRESS=notifications@ваш_домен
    SMTP_AUTH_METHOD=none
    SMTP_OPENSSL_VERIFY_MODE=none
    SMTP_ENABLE_STARTTLS=false
    
  3. Перезапуск контейнеров Mastodon

    Для применения новых настроек перезапустите контейнеры Mastodon:

    cd /opt/mastodon
    
    docker-compose restart
    
  4. Проверка работы почты

    • Для MailHog: откройте веб-интерфейс http://ваш_сервер:8025
    • Проверьте логи:
      docker-compose -f /opt/mastodon/docker-compose.yml logs sidekiq | grep -i mail
      
    • Протестируйте: зарегистрируйте нового пользователя и проверьте получение письма

Примечания

Проверка Docker-контейнеров: Если вы не уверены, какие контейнеры работают, выполните:

 docker ps
Убедитесь, что контейнеры Mastodon (mastodon_web_1, mastodon_db_1, и т. д.) запущены.

Информация

Подробней о настройках конфигурации можно узнать в документации разработчиков.

Информация

Подробней работе с setup.sh можно узнать в документации разработчиков.

Изменение доменного имени сервера Mastodon

Информация

В данном руководстве используется домен skaz.online в качестве примера. Изначально Mastodon настроен с доменом вида mastodon<ID_сервера>.hostkey.in. Замените skaz.online на ваш реальный домен во всех примерах конфигураций.

Ключевые файлы и директории

Файл/Директория Что меняется
/opt/mastodon/.env.production Переменные окружения, домены
/data/nginx/user_conf.d/*.conf Конфигурация nginx для нового домена
/etc/letsencrypt/live/ Сертификаты SSL (при использовании certbot)
Docker Compose файлы Домен в docker-compose.yml или переменных
Конфигурация SMTP Обновление адресов, связанных с доменом

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

  1. Зарегистрировать собственный домен, например, mastodon.mydomain.com.

  2. Настроить записи DNS для этого домена:

    • Указать А-запись, которая будет указывать на IP-адрес сервера Mastodon;
    • Настроить запись MX, указывающую на почтовый сервер.

    Информация

    Управление DNS

  3. Добавить PTR-запись в настройках IP-адреса в Invapi;

    Информация

    Подробнее о настройке PTR-записи в Invapi можно узнать здесь.

  4. Обновление переменных окружения Mastodon

    Отредактируйте файл /opt/mastodon/.env.production, заменив текущее значение (например, mastodon<ID_сервера>.hostkey.in) на ваш новый домен:

    # Было:
    # LOCAL_DOMAIN=mastodon<ID_сервера>.hostkey.in
    
    # Стало:
    LOCAL_DOMAIN=skaz.online
    WEB_DOMAIN=skaz.online
    
  5. Настройка Nginx с поддержкой HTTPS

    5.1 Создание конфигурации Nginx

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

    Создайте файл конфигурации /data/nginx/user_conf.d/skaz.online.conf со следующим содержимым:

    server {
        listen 80;
        server_name skaz.online;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name skaz.online;
    
        # SSL сертификаты
        ssl_certificate         /etc/letsencrypt/live/skaz.online/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/skaz.online/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/skaz.online/chain.pem;
        ssl_dhparam /etc/letsencrypt/dhparams/dhparam.pem;
    
        # Основное приложение Mastodon (порт 3000)
        location / {
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:3000;
            real_ip_header X-Forwarded-For;
            # Поддержка WebSockets
            proxy_http_version 1.1;
            proxy_set_header X-Scheme $scheme;
            proxy_buffering off;
        }
    
        # Streaming API Mastodon (порт 4000)
        location ^~ /api/v1/streaming {
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:4000;
            real_ip_header X-Forwarded-For;
            # Поддержка WebSockets
            proxy_http_version 1.1;
            proxy_set_header X-Scheme $scheme;
            proxy_buffering off;
        }
    }
    

    5.2 Получение SSL-сертификата

    Проверьте наличие сертификата:

    docker exec -it mastodon-nginx-1 ls /etc/letsencrypt/live/
    

    Если сертификат отсутствует, получите его:

    docker compose stop nginx
    
    docker compose run --rm nginx certbot certonly --standalone -d skaz.online
    
    docker compose start nginx
    
  6. Очистка конфликтующих конфигураций

    Важно! Обязательно удалите старые конфигурации nginx, так как наличие нескольких .conf файлов может привести к конфликтам:

    Удалите старый конфиг (например, для mastodon<ID_сервера>.hostkey.in)

    rm /data/nginx/user_conf.d/mastodon<ID_сервера>*.conf
    

    Или переименуйте для сохранения резервной копии

    mv /data/nginx/user_conf.d/mastodon<ID_сервера>.hostkey.in.conf /data/nginx/user_conf.d/mastodon<ID_сервера>.hostkey.in.conf.backup
    

    Причины конфликтов:

    • Дублирующие директивы listen 443 ssl вызывают ошибку duplicate listen options
    • Старые конфигурации могут содержать другие proxy_pass адреса или порты
    • Nginx может неправильно обрабатывать запросы при наличии нескольких server блоков
  7. Перезапуск служб

    В каталоге с docker-compose.yml выполните:

    docker compose down
    
    docker compose up -d
    
  8. Проверка работоспособности

    Тестирование из командной строки

    curl -Ik https://skaz.online
    

    Ожидаемый ответ: HTTP/1.1 200 OK

    Проверка в браузере

    Откройте домен в браузере — должна загрузиться главная страница Mastodon.

Первоначальные настройки в панели администратора

Чтобы попасть в панель администратора, необходимо перейти по ссылке из тега webpanel, нажать на кнопку Войти и ввести учетные данные, заданные ранее.

Управление правилами сервера

Правила в Mastodon устанавливаются администраторами и модераторами каждого отдельного сервера в этой децентрализованной социальной сети. Для управления правилами следует перейти в раздел Администрирование >> Правила сервера.

Основные принципы указания правил:

  • Правила должны быть разумными и следовать общепринятым нормам приличия. Избыточные или несправедливые ограничения оттолкнут пользователей;
  • Четко прописать какие именно виды контента запрещены, например жестокость, насилие, незаконная деятельность и т.д. Уточнить допустимый уровень NSFW контента;
  • Указать порядок предупреждений, блокировок или ограничений для нарушителей правил. Определить дисциплинарные меры и сроки;
  • Правила должны быть легкодоступны для всех пользователей на сервере. Их нужно публично демонстрировать и доводить до сведения во время регистрации;
  • Периодически пересматривать и обновлять правила по мере роста сервера. Вовлекать сообщество в процесс модерации и улучшения правил.

Примечание

Подробная информация по основным настройкам Mastodon содержится в документации разработчиков.

Заказ Mastodon с помощью API

Для установки данного ПО с использованием API следуйте этой инструкции.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×