Установка Akkoma на Raspberry Pi — пошаговое руководство
Akkoma — полнофункциональный сервер Fediverse, совместимый с ActivityPub, который легко разворачивать на Raspberry Pi с Docker Compose. В этой инструкции — подготовка Raspberry Pi, клонирование репозитория, сборка контейнера, генерация конфигурации, открытие порта через Apache и получение TLS-сертификатов, настройка фронтенда и рекомендации по безопасности и резервному копированию.

Краткое определение: Fediverse — это федерация независимых социальных серверов, объединённых протоколом ActivityPub; Akkoma — одна из реализаций сервера на базе Pleroma с дополнительными функциями.
Важно: перед началом убедитесь, что ваш Raspberry Pi обновлён, у вас есть доступ по SSH и вы понимаете базовые операции с Docker и системой Linux.
Что такое Akkoma?
Akkoma — сервер Fediverse, основанный на кодовой базе Pleroma и заимствующий удобные функции из MissKey. Он использует протокол ActivityPub для федерации с другими инстансами. Akkoma активно развивается и регулярно получает обновления.
Кратко о преимуществах Akkoma:
- Поддержка нескольких фронтендов и кастомных икон-паков.
- Разные варианты Markdown и расширенные форматы постов.
- Возможность редактирования и цитирования постов, гибкие лимиты символов.
- Подходит для небольших и средних инстансов, включая Raspberry Pi.
Определение термина: ActivityPub — открытый протокол федерации для социальных сетей; коротко — «как серверы договариваются, что друг другу показывать».
Требования и предварительная подготовка
Перед установкой подготовьте следующее:
- Raspberry Pi 3/4 с актуальной ОС (Raspberry Pi OS / Debian). Рекомендуется Pi 4 для лучшей производительности.
- Доступ SSH и базовые права sudo.
- Стабильное подключение к интернету и статический IP или настроенный динамический DNS.
- Docker и Docker Compose (мы установим Docker Compose вручную, как в оригинальной инструкции).
- Доменное имя, указывающее на ваш Raspberry Pi (например, example.tld).
- Понимание основ работы с PostgreSQL и обратным прокси (Apache/Nginx).
Совет: выделите отдельный пользовательский каталог для проекта, например /home/pi/akkoma, и работайте оттуда.
Шаг 1. Подготовка Raspberry Pi как веб-сервера
Если вы ещё не настроили Pi как веб-сервер, выполните предварительные шаги:
- Обновите систему:
sudo apt update && sudo apt upgrade -y- Установите базовые пакеты:
sudo apt install -y git curl nano build-essential apt-transport-https ca-certificates gnupg lsb-release- Установите Docker (официальный скрипт) и docker-compose-plugin или последнюю версию Docker Compose по инструкции проекта Docker.
Примечание: если на Pi уже работает MariaDB, PHP или другой веб-стек — убедитесь, что порты не конфликтуют.
Шаг 2. Клонирование репозитория Akkoma и начальная конфигурация
Подключитесь к Raspberry Pi по SSH и выполните:
git clone https://akkoma.dev/AkkomaGang/akkoma.git -b stable && cd akkomaСоздайте файл окружения для Docker Compose на основе примера и добавьте UID/GID текущего пользователя:
cp docker-resources/env.example .env
echo "DOCKER_USER=$(id -u):$(id -g)" >> .envЭта команда уменьшает вероятность проблем с правами на смонтированные тома у Docker.
Важно: файл .env может содержать секреты. Храните его с осторожностью.
Шаг 3. Сборка контейнера и компиляция приложения
Сборка образов может занять несколько минут. Запустите скрипт сборки:
./docker-resources/build.shДалее создайте каталог для данных PostgreSQL и запустите последовательность команд управления проектом:
mkdir pgdata
./docker-resources/manage.sh mix deps.get
./docker-resources/manage.sh mix compile
./docker-resources/manage.sh mix pleroma.instance genВо время генерации конфигурации вам предложат установить Hex и rebar3 — ответьте Y. Компиляция может занять примерно 12 минут на Raspberry Pi 4.
Когда мастер спросит домен — вводите его без префикса http:// или https:// (например, example.tld). Укажите имя инстанса и почту администратора.
Важно: при вопросе про индексирование поисковыми системами решите заранее: хотите ли вы, чтобы ваш инстанс попадал в результаты поиска.
Шаг 4. Параметры базы данных и индексы
При генерации конфигурации укажите hostname базы данных как db, имя базы и пользователя — akkoma, пароль — akkoma (по умолчанию). Для поисковых операций рекомендуется включить RUM-индексы для PostgreSQL — соглашайтесь на использование RUM.
Порт по умолчанию для Akkoma — 4000. Оставьте его, если не пересекается с другими сервисами.
Проверить занятые порты можно командой:
sudo lsof -i -P -n | grep LISTENПосле генерации копируйте сгенерированный файл конфигурации в prod.secret.exs:
cp config/generated_config.exs config/prod.secret.exsИнициализируйте базу данных из контейнера:
docker-compose run --rm akkoma psql -h db -U akkoma -f config/setup_db.psqlЕсли команда вернула успешное завершение — остановите контейнер (замените container_id на ваш ID):
docker stop container_id_you_noted_earlierЗапустите миграции и перекомпиляцию:
./docker-resources/manage.sh mix ecto.migrateСовет: если процесс длится долго, следите за логами в другом окне терминала.
Шаг 5. Установка фронтендов и создание администратора
По умолчанию достаточно фронтенда Pleroma и административного интерфейса. Установите их командами:
./docker-resources/manage.sh mix pleroma.frontend install pleroma-fe --ref stable
./docker-resources/manage.sh mix pleroma.frontend install admin-fe --ref stableСоздайте администратора:
./docker-resources/manage.sh mix pleroma.user new your-desired-username youremail@domain.tld --adminПодтвердите введённые данные. Ссылка для сброса пароля будет сгенерирована. Пока инстанс не запущен и не доступен извне, сохраните ссылку в надёжном месте.
Шаг 6. Настройка обратного прокси и TLS
Чтобы открыть Akkoma в интернете, настройте Apache (или Nginx). Пример для Apache:
cd /etc/apache2/sites-available
sudo nano akkoma.confВставьте конфигурацию (редактируйте ServerName на ваш домен):
ServerName your-domain-name.tld
ProxyPass / http://127.0.0.1:4000/
ProxyPassReverse / http:/127.0.0.1:4000/
ProxyPreserveHost On
Сохраните файл (Ctrl+O, Enter, Ctrl+X). Затем активируйте сайт и перезапустите Apache:
sudo a2ensite akkoma.conf
sudo service apache2 restartПолучите TLS-сертификат через certbot:
sudo certbotВыберите ваш домен и подтвердите. После получения сертификата перезапустите Apache ещё раз:
sudo service apache2 restartЗатем поднимите контейнеры в фоновом режиме:
cd ~/akkoma
docker-compose up -dПодождите несколько минут и перейдите по ссылке сброса пароля для завершения создания администратора.
Важно: убедитесь, что порты 80 и 443 на маршрутизаторе проброшены (если вы находитеcь за NAT).
Шаг 7. Настройка интерфейса и политики инстанса
Откройте админку по адресу https://your-domain-name.tld/pleroma/admin и выполните базовые шаги:
- Настройте Фронтенд: выберите предпочитаемый фронтенд, иконки, тему, обработку Markdown.
- Настройте Instance: имя сайта, описание, правила регистрации (открытая регистрация / приглашения), пределы для постов и файлов.
- Политики федерации: решите, с какими инстансами федерировать.
На демонстрационном инстансе авторы включили зелёное выделение цитат (строки, начинающиеся с “>”), древовидное отображение бесед, кастомный логотип и предупреждение NSFW.
Совет: осторожно выбирайте лимиты для постов и загрузок, чтобы не перегружать диск или базу данных. Например, устанавливая слишком большой лимит символов, вы увеличиваете требования к хранилищу и индексу.
Советы по безопасности и эксплуатации
- Используйте сильные пароли и двухфакторную аутентификацию, если доступна.
- Регулярно обновляйте Akkoma и контейнеры (git pull → ./docker-resources/build.sh → docker-compose up -d).
- Делайте резервные копии папки pgdata, конфигурационных файлов и config/prod.secret.exs.
- Ограничьте доступ к админке по IP, если это возможно.
- Следите за логами контейнеров: docker-compose logs -f
План резервного копирования и аварийного восстановления
Шаги для базового бэкапа:
- Остановите сервисы или гарантируйте консистентность данных (при возможности):
docker-compose stop- Создайте архив данных PostgreSQL и конфигураций:
sudo tar czvf akkoma-backup-$(date +%F).tar.gz pgdata config prod.secret.exs .env- Перенесите бэкап на удалённое хранилище (scp, rsync, S3 и т.п.).
Восстановление:
- Распакуйте бэкап в рабочую директорию.
- Убедитесь, что права на файлы корректны (UID/GID).
- Перезапустите контейнеры: docker-compose up -d
Критерии приёмки: инстанс успешно запускается, фронтенд доступен по HTTPS, админ может войти и видит корректные настройки.
Отладка распространённых ошибок
- Проблема: фронтенд не отвечает. Проверьте docker-compose ps и логи:
docker-compose logs pleromaПроблема: ошибка подключения к базе. Проверьте host/db credentials в config/prod.secret.exs и что контейнер db запущен.
Проблема: сертификаты не применяются. Проверьте конфигурацию Apache и файлы в /etc/letsencrypt.
Проблема: порт 4000 занят. Используйте sudo lsof -i -P -n | grep LISTEN, остановите конфликтующий сервис или назначьте другой порт и обновите ProxyPass.
Производительность на Raspberry Pi и оптимизации
Рекомендации для Pi:
- Используйте SSD по USB3 (для Pi 4) вместо SD-карты для повышения долговечности и производительности.
- Держите swap минимальным; лучше увеличить RAM или использовать zram.
- Настройте лог-ротацию для Docker и PostgreSQL.
- Если инстанс растёт, рассмотрите перенос базы на отдельный сервер.
Когда Akkoma может оказаться не лучшим выбором
Контрпримеры и ограничения:
- Если вам нужен исключительно простой, минималистичный микроблог без сложных фронтендов, возможно, лучше подойдёт vanilla Pleroma.
- Если вы ожидаете очень высокую нагрузку (десятки тысяч пользователей), Raspberry Pi и один контейнер могут не справиться — потребуется более мощная инфраструктура.
- Если важна тесная интеграция с экосистемой MissKey, убедитесь, что нужные фичи поддерживаются в Akkoma.
Альтернативы и сравнение
Краткая матрица выбора (качественная):
- Akkoma: гибкость, Pleroma-совместимость, дополнительные функции. Хорош для инстансов среднего размера и экспериментальных проектов.
- Pleroma: лёгкая и быстрая кодовая база, проверенная временем.
- Mastodon: наиболее известный и дружелюбный интерфейс, но выше требования к ресурсам.
- MissKey: орие́нтирован на rich-media и расширенные UI-фичи.
Решение выбирают по критериям: ресурсы хостинга, желаемая функциональность, степень кастомизации, требования к федерации.
Роль‑специфические чек-листы
Администратор (первичное развертывание):
- Настроить домен и DNS A/AAAA запись.
- Установить Docker и Docker Compose.
- Клонировать репозиторий и создать .env.
- Скомпилировать и мигрировать базу.
- Настроить обратный прокси и получить TLS.
- Создать администратора и проверить доступ к админке.
- Настроить политики регистрации и федерации.
Модератор (после запуска):
- Проверить правила и политику контента.
- Настроить предупреждения NSFW и автоматические фильтры.
- Ознакомиться с инструментами банов и блокировок.
- Тестировать процесс жалоб и уведомлений.
Пользователь (прибытие на инстанс):
- Создать учётную запись и установить пароль.
- Настроить профиль и аватар.
- Ознакомиться с правилами сообщества.
Разработчик/поддержка:
- Подписаться на логи и мониторинг.
- Настроить CI для обновлений контейнеров.
- Тестировать обновления на staging-инстансе до продакшна.
Decision tree для выбора инстанса (Mermaid)
flowchart TD
A[Нужен Fediverse инстанс] --> B{Требуется ли мощный интерфейс?}
B -- Да --> C{Есть ли ресурсы сервера?}
B -- Нет --> D[Pleroma / Akkoma]
C -- Да --> E[Mastodon / MissKey]
C -- Нет --> D
E --> F[Рассмотреть выделенный VPS]
D --> G[Можно развернуть на Raspberry Pi]
G --> H[Выбор: Akkoma если хотите Pleroma+фичи]Мини‑методология: как тестировать и вывести инстанс в продакшн
- Разворачивайте в тестовой сети с отдельным доменом (staging.example.tld).
- Пройдите все шаги установки и заполните минимум данных.
- Тестируйте федерацию с несколькими публичными аккаунтами.
- Нагрузочное тестирование: симулируйте публикацию постов и загрузку файлов.
- Проверьте сценарии восстановления из бэкапа.
- Мигрируйте конфигурации и пакеты на продакшн, уведомив пользователей.
Миграционные заметки и совместимость
- Версии Akkoma и Pleroma могут иметь несовместимые миграции; перед обновлением прочитайте CHANGELOG.
- Всегда делайте резервную копию базы перед миграцией.
- Если миграция не удалась, восстановите из бэкапа и протестируйте на staging.
Краткий глоссарий (одна строка каждый)
- Fediverse — федерация независимых социальных серверов на ActivityPub.
- ActivityPub — протокол федерации для обмена сообщениями между серверами.
- Frontend — пользовательский интерфейс, который отображает ленту и профили.
- Pleroma — лёгкая платформа для Fediverse, на которой основан Akkoma.
- RUM-индекс — расширение PostgreSQL для ускоренного полнотекстового поиска.
Социальный прeвью и объявление
OG title suggestion: Разверните Akkoma на Raspberry Pi
OG description suggestion: Пошаговая инструкция по установке Akkoma на Raspberry Pi, настройке Apache, TLS и фронтенда.
Короткое объявление (для рассылки, 100–200 слов):
Разворачиваем собственный сервер Fediverse на Raspberry Pi с Akkoma. В инструкции — подготовка системы, клонирование репозитория, сборка контейнеров, генерация конфигурации, настройка обратного прокси и получение TLS. Пошаговое руководство включает рекомендации по безопасности, резервному копированию и оптимизациям для Pi. Подойдёт тем, кто хочет контролировать свой онлайн‑пространство и экспериментировать с фронтендами.
Заключение
Akkoma — удобный выбор для самохостинга Fediverse на Raspberry Pi. Он сочетает гибкие возможности Pleroma и дополнительные функции, которые помогают кастомизировать инстанс под ваши потребности. При разумной конфигурации и регулярном обслуживании инстанс будет надежно работать и радовать пользователей.
Важное: тестируйте обновления на копии инстанса, делайте регулярные бэкапы и контролируйте использование диска и памяти.
Сводка действий (быстрый чек-лист):
- Подготовить Raspberry Pi и установить Docker/Docker Compose.
- Клонировать akkoma репозиторий и создать .env.
- Построить контейнеры, сгенерировать конфиг и подготовить БД.
- Установить фронтенды и создать администратора.
- Настроить обратный прокси, получить TLS и поднять docker-compose.
- Настроить политики, бэкапы и мониторинг.
Конец руководства.
Похожие материалы
Рамка в Google Docs: как добавить быстро
Скрыть и показать обновления Windows
Google Reader Readable — убрать визуальный шум
Два скрытых входящих Facebook — как найти
Вернуть панель Outlook снизу