Установка и запуск Akkoma на Raspberry Pi
Akkoma — это современный сервер Fediverse, совместимый с ActivityPub и основанный на кодовой базе Pleroma. На Raspberry Pi вы можете развернуть Akkoma в Docker: подготовьте Pi как веб‑сервер, установите Docker и Docker Compose, затем клонируйте репозиторий Akkoma, соберите контейнеры и настройте обратный прокси (Apache) с TLS. В статье приведён пошаговый план, контрольные списки, рекомендации по безопасности, восстановлению и тестам приёмки.
Что вы получите из этого руководства
- Пошаговая инструкция по установке Akkoma на Raspberry Pi.
- Команды и примеры конфигурации Apache и Docker Compose.
- Контрольные списки для администратора и оператора.
- Рекомендации по безопасной настройке, бэкапу и восстановлению.
- Сценарии тестирования и критерии приёмки, мермейд‑дерево принятия решений.
Введение: что такое Akkoma и зачем его ставить
Akkoma — сервер Fediverse, использующий протокол ActivityPub. Он унаследовал стабильность от Pleroma и ряд удобств от MissKey: расширяемые наборы иконок, поддержка разных диалектов Markdown, возможность менять фронтенд, редактирование и цитирование записей, гибкая настройка лимитов. Akkoma активно развивается и подходит для домашних и небольших публичных инстансов, в том числе на Raspberry Pi.
Краткое определение: Fediverse — распределённая сеть серверов для социальных сетей, которые общаются между собой через стандарты вроде ActivityPub.
Что нужно заранее (минимальные требования)
- Raspberry Pi 4 (рекомендуется ≥4GB RAM) или более мощная модель.
- Карта microSD 16 ГБ и больше (лучше NVMe/SSD через адаптер для длительного хранения и производительности).
- Питание, стабильный интернет и статический или динамический внешний адрес с пробросом портов/динамическим DNS.
- Установленная операционная система: Raspberry Pi OS (Lite) или Debian‑производная (обновлённая).
- Базовые навыки работы в терминале и SSH.
Программные требования: Docker и Docker Compose (или плагин docker compose), Apache (или другой обратный прокси), Certbot для TLS, PostgreSQL будет запущен в контейнере Akkoma.
Важно: Akkoma использует порт 4000 внутри контейнера — прокси или firewall должен корректно перенаправлять трафик.
Подготовка Raspberry Pi (быстрое руководство)
- Обновите систему:
sudo apt update && sudo apt upgrade -y- Установите базовые утилиты:
sudo apt install -y curl git sudo nano ufw- Установите Docker (рекомендуемый быстрый способ):
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker- Установите Docker Compose (проверяйте актуальную версию; альтернативно можно использовать пакет из репозиториев):
sudo apt install -y docker-composeПримечание: на некоторых системах потребуется установка плагина docker compose (docker-compose-plugin). Проверяйте docker compose version.
- Включите базовую защиту: откройте только нужные порты (80, 443). Пример UFW:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableВажно: не открывайте порт 4000 наружу, если используете обратный прокси.
Клонирование Akkoma и начальные шаги
Переключитесь в домашнюю директорию и клонируйте репозиторий Akkoma (ветка stable):
git clone https://akkoma.dev/AkkomaGang/akkoma.git -b stable && cd akkomaУстановите переменные окружения для Docker Compose:
cp docker-resources/env.example .env
echo "DOCKER_USER=$(id -u):$(id -g)" >> .envОбъяснение: .env содержит переменные, которые Docker Compose использует при сборке контейнеров; DOCKER_USER фиксирует UID:GID, чтобы файлы в контейнерах совпадали с вашим пользователем на хосте.
Сборка контейнера занимает несколько минут:
./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). Компиляция может занять заметное время — на слабых Pi это может быть 10–20 минут.
При генерации инстанса вас попросят ввести:
- Домен без http:// или https://
- Имя инстанса (короткая фраза)
- Email администратора
- Настройки индексирования для поисковых систем (да/нет)
- Сохранение конфигурации в базу (выберите yes, чтобы пользоваться web‑админкой)
- Хост базы данных — в большинстве случаев установите
db - Имя базы и пользователя:
akkoma - Пароль базы:
akkoma(рекомендуется изменить на более сильный) - Использование RUM индексов (y — ускоряет поиск)
- Порт приложения (по умолчанию 4000)
- IP‑адрес для прослушивания —
0.0.0.0
Файл сгенерируется как config/generated_config.exs. Скопируйте его в config/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Установка фронтендов и создание админа
Установите фронтенды (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Подтвердите введённые данные и сохраните ссылку для сброса пароля — она пригодится, когда инстанс будет поднят и доступен по HTTP/HTTPS.
Настройка обратного прокси Apache и TLS
Создайте файл конфигурации Apache:
cd /etc/apache2/sites-available
sudo nano akkoma.confПример содержимого (ProxyPassReverse исправлен на корректный URL):
ServerName your-domain-name.tld
ProxyPass / http://127.0.0.1:4000/
ProxyPassReverse / http://127.0.0.1:4000/
ProxyPreserveHost On
Сохраните и включите сайт:
sudo a2ensite akkoma.conf
sudo service apache2 restartЗапустите Certbot для получения TLS‑сертификата (следуйте подсказкам):
sudo certbotПосле успешного получения сертификата перезапустите Apache:
sudo service apache2 restartНаконец, поднимите Akkoma в фоне:
cd ~/akkoma
docker-compose up -dПодождите несколько минут, затем откройте ссылку сброса пароля, сохранённую ранее, и задайте надёжный пароль.
Настройка фронтенда и базовые параметры инстанса
Откройте админку по адресу https://your-domain-name.tld/pleroma/admin.
В разделе Settings > Frontend вы можете:
- Выбрать фронтенд для пользователей (pleroma‑fe по умолчанию).
- Загружать наборы иконок и изображения фона.
- Включить/отключить поддерживаемые диалекты Markdown.
- Настроить стиль отображения диалогов (tree/list).
Пример конфигурации, использованной в демонстрации:
- Включён зелёный цвет для строк с префиксом
>. - Отображение бесед — дерево.
- Загружены логотип и предупреждение для NSFW.
В разделе Settings > Instance задайте имя сайта, описание, лимиты (длина поста, размер файла, аватаров). По умолчанию вы можете оставить 4000 порт и разумные лимиты; при необходимости увеличьте их. Помните: очень большие лимиты могут ударить по диску и памяти.
Ограничения и рекомендации по лимитам
Рекомендации:
- Лимит длины поста для локальных пользователей: разумно поставить 10–50k символов; домашняя инстанс может выставить выше, но это повлияет на хранение и индексирование.
- Лимит для внешних (federated) пользователей: гораздо меньший, чтобы избежать злоупотреблений.
- Ограничивайте размер загрузок (например, до 50–200 МБ), если на Pi нет SSD.
Жизненный цикл инстанса: бэкапы, апгрейды и обслуживание
Бэкапы базы данных (пример):
docker-compose exec db pg_dump -U akkoma akkoma > ~/akkoma-backups/akkoma_$(date +%F).sqlРезервные копии конфигурации и медиа:
rsync -a --delete ~/akkoma/volumes/ /path/to/backup/storage/akkoma_volumes/Обновление Akkoma (вкратце):
git pullв папке репозитория.- Пересборка контейнеров:
./docker-resources/build.shиdocker-compose up -d --build. - Прогон миграций:
./docker-resources/manage.sh mix ecto.migrate.
Перед обновлением всегда делайте бэкап базы и томов.
Диагностика и устранение неполадок (частые проблемы)
- Проблема: сайт не отвечает на порту 80/443
- Проверьте статус Apache:
sudo systemctl status apache2. - Убедитесь, что Certbot получил сертификат и VirtualHost включён.
- Проверьте статус Apache:
- Проблема: контейнеры Akkoma падают
- Просмотрите логи:
docker-compose logs -f. - Проверьте свободное место на /var/lib/docker и на диске.
- Просмотрите логи:
- Проблема: миграции не проходят
- Убедитесь, что контейнер db доступен и переменные окружения для доступа к базе корректны.
- Проверить прослушиваемые порты на хосте:
sudo lsof -i -P -n | grep LISTENБезопасность и жёсткая настройка (рекомендации)
- Используйте TLS (Certbot / Let’s Encrypt).
- Ограничьте SSH доступ (ключи, не root, смените порт по необходимости).
- Настройте fail2ban для защиты от перебора паролей.
- Не публикуйте порт 4000 наружу — используйте обратный прокси.
- Регулярно обновляйте систему и Docker‑образы.
- Настройте ротацию логов и мониторинг свободного места.
Правовые и приватные аспекты
- Если вы планируете обрабатывать персональные данные жителей ЕС, ознакомьтесь с принципами GDPR: минимизация данных, доступ и удаление по запросу, протоколирование согласий.
- Храните политики модерации и конфиденциальности в доступном месте на сайте.
Контрольные списки
Администратор (быстрая проверка перед запуском):
- Docker установлен и работает
- Docker Compose указан или доступен как плагин
- Apache настроен и сайт доступен локально
- Certbot получил сертификат
- [ ] Конфигурация
config/prod.secret.exsсоздана - Бэкап базы создан
- Админский аккаунт создан и подтверждён
Оператор (ежедневные задачи):
- Проверить логи контейнеров на ошибки
- Проверить свободное место на дисках
- Убедиться, что автоматические обновления прошли успешно
- Проверить очереди задач (если есть задержки в доставки)
Критерии приёмки
Чтобы считать инстанс готовым к публичному использованию, выполните эти проверки:
- Домен доступен по HTTPS и сертификат валиден.
- Админка доступна и работает:
/pleroma/admin. - Пользователь может зарегистрироваться (если регистрация включена) или админ создаёт учётную запись.
- Отправка и получение локальных и федеративных постов работает (проверено подпиской на удалённого пользователя).
- Медиа загружаются и отображаются.
Тесты приёмки (примерные сценарии)
- Создать пост с текстом 1000 символов — пост должен появиться в публичной ленте.
- Загрузить изображение 5 МБ — файл должен сохраниться и отображаться.
- Подписаться на учётную запись в Mastodon — фоллоу должен завершиться успешно.
- Выполнить экспорт/импорт настроек (если требуется) — файл конфигурации должен соответствовать ожиданиям.
Восстановление при инциденте (runbook)
- Оцените ситуацию: какие сервисы упали, какие контейнеры не стартуют.
- Для восстановления базы используйте последний дамп:
cat akkoma_YYYY-MM-DD.sql | docker-compose exec -T db psql -U akkoma akkoma- Восстановите тома медиа из резервной копии через rsync.
- Перезапустите контейнеры:
docker-compose down && docker-compose up -d. - Проверяйте логи и следите за поведением в течение 24 часов.
Решение: стоит ли выбирать Akkoma — дерево решений
flowchart TD
A[Хочу свой Fediverse‑сервер] --> B{Имеется ли Raspberry Pi?
}
B -- Да --> C{Нужна ли лёгкая установка и Pleroma‑совместимость?}
B -- Нет --> D[Рассмотрите VPS или другой хост]
C -- Да --> E[Выбор: Akkoma
'удобный, гибкий']
C -- Нет --> F[Рассмотрите MissKey или Mastodon
'альтернативы']
E --> G[Развертывание в Docker на Pi]
G --> H[Настройка прокси и TLS]Сравнение альтернатив (кратко)
- Mastodon — ориентирован на микроблоги, большая экосистема, требует больше ресурсов.
- MissKey — богатый функционал фронтенда, больше интерактивных возможностей.
- Pleroma — лёгкая и гибкая, подходит для маломощного железа.
Akkoma сочетает в себе простоту Pleroma и дополнительные удобства от MissKey.
Небольшой глоссарий (1 линия определения)
- Fediverse — распределённая сеть совместимых социальных серверов.
- ActivityPub — протокол федерации для обмена сообщениями между инстансами.
- Docker Compose — инструмент для запуска многоконтейнерных приложений.
Часто задаваемые вопросы
Как изменить порт приложения?
Порт на котором слушает приложение указывается в конфигурации при генерации инстанса (по умолчанию 4000). При изменении порта обновите конфигурацию обратного прокси.
Можно ли использовать Nginx вместо Apache?
Да, Akkoma работает с любым корректно настроенным обратным прокси (Nginx, Caddy и т. п.). В конфиге прокси важно правильно направить запросы на локальный порт 4000.
Что делать, если контейнеры не собираются из‑за зависимостей?
Проверьте версию Docker и Docker Compose; часто помогает обновление до актуальных версий и очистка кэша сборки ( docker-compose build --no-cache ).
Заключение
Akkoma — отличный выбор для тех, кто хочет развернуть собственный Fediverse‑сервер на Raspberry Pi. Он сочетает лёгкую базу Pleroma и дополнительные функции, удобные для администратора и пользователей. Следуя этому руководству, вы получите рабочий инстанс с TLS, админкой и базовыми настройками безопасности. Регулярно делайте бэкапы, следите за обновлениями и постепенно настраивайте фронтенд под нужды вашей аудитории.
Вам остаётся только зарегистрировать учётную запись, пригласить первых пользователей и начать развивать своё сообщество во Fediverse.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone