Установка Diaspora (децентрализованный соцсервис) на Debian Buster 10

Diaspora — это проект с открытым кодом для хранения социальных связей в децентрализованной сети узлов (pods). Главные принципы — децентрализация, свобода и приватность. В этой инструкции показаны проверенные шаги для установки Diaspora на Debian Buster 10 с использованием PostgreSQL, Redis, Nginx и LetsEncrypt.
В этой статье вы найдёте не только команды, но и проверки, рекомендации по безопасности, шаблоны systemd и nginx, чеклисты ролей и раздел для типичных ошибок и их исправлений.
Что нужно заранее
- Сервер с Debian Buster 10 (физический или VPS) с минимум 2 ГБ ОЗУ. Для production рекомендуется ≥4 ГБ или больше при высокой нагрузке.
- Доменное имя, указывающее на сервер (например, pod.example.com).
- Доступ root или пользователь с sudo.
- Понимание основных команд Linux и редактирования файлов (vim/nano).
Варианты: вместо Debian Buster можно использовать аналогичные версии Debian/Ubuntu, но тогда проверяйте названия пакетов и репозитории.
Что мы сделаем
- Установим системные зависимости (PostgreSQL, Redis, Nginx и инструменты сборки).
- Создадим PostgreSQL-пользователя и базу для Diaspora.
- Создадим системного пользователя для запуска приложения.
- Установим RVM и Ruby 2.6 (рекомендуемо для указанной версии Diaspora в инструкции).
- Склонируем репозиторий Diaspora и настроим конфигурационные файлы.
- Установим гемы, выполним миграции и соберём ассеты.
- Настроим systemd-сервисы для unicorn и sidekiq.
- Настроим Nginx как обратный прокси и подключим LetsEncrypt SSL.
- Протестируем работу и рассмотрим распространённые проблемы.
План проверки перед началом
- DNS A-запись вашего домена указывает на IP сервера.
- Порт 80 и 443 открыты в фаерволе для получения сертификата и HTTPS.
- Убедитесь, что на сервере нет уже запущенного процесса на портах, которые вы планируете использовать.
Important: Если сервер используется для других сервисов, резервная копия конфигураций Nginx, systemd и PostgreSQL обязательна.
Шаг 1 — Установка зависимостей
Сначала установим необходимые пакеты: сборочные инструменты, библиотеки для Ruby-гемов, PostgreSQL, Redis и Nginx.
Выполните:
sudo apt-get install build-essential cmake gnupg2 libssl-dev libcurl4-openssl-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server nodejs postgresqlПосле установки запустите службы Redis и PostgreSQL и сделайте их автозагрузкой:
systemctl start redis-server
systemctl enable redis-server
systemctl start postgresql
systemctl enable postgresqlПроверьте статус:
systemctl status redis-server
systemctl status postgresql
Примечание: пакет nodejs необходим для сборки JS-ассетов; при необходимости установите более свежую версию через официальный репозиторий NodeSource.
Шаг 2 — Создание PostgreSQL-пользователя для Diaspora
Зайдите в psql под пользователем postgres:
sudo -i -u postgres psqlСмените пароль для пользователя postgres (рекомендуется):
\password postgresСоздайте пользователя diaspora с правом создавать базы данных (CREATEDB). Замените yourpassword на надёжный пароль:
CREATE USER diaspora WITH CREATEDB PASSWORD 'yourpassword';Затем выйдите:
EXIT
Важно: храните пароль безопасно; для production рекомендуется использовать менеджер секретов.
Шаг 3 — Создание системного пользователя
Создаём системного пользователя diaspora и даём ему sudo-доступ (опционально — если вы хотите управлять сервисом без root):
adduser --disabled-login diaspora
passwd diaspora
usermod -a -G sudo diasporaПояснение: –disabled-login предотвращает прямой вход по паролю при создании; затем вы устанавливаете пароль отдельно.

Совет: можно использовать отдельный пользователя без sudo и управлять запуском через systemd (рекомендуется для безопасности).
Шаг 4 — Установка RVM и Ruby
Переключитесь на пользователя diaspora:
su - diasporaИмпортируйте GPG-ключи для RVM:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBУстановите RVM (stable):
curl -sSL https://get.rvm.io | bash -s stableЗагрузите скрипт RVM в текущую сессию:
source /home/diaspora/.rvm/scripts/rvmУстановите Ruby 2.6 (в инструкции использована 2.6 — проверяйте совместимость с версией Diaspora в репозитории):
rvm install 2.6
ruby -v
Проверьте, что ruby указывает на версию, установленную через RVM. Если вы используете rbenv — можно адаптировать шаги под него.
Шаг 5 — Скачивание и настройка Diaspora
Склонируйте репозиторий и перейдите в папку проекта:
git clone -b master https://github.com/diaspora/diaspora.git
cd diasporaСкопируйте примеры конфигураций:
cp config/database.yml.example config/database.yml
cp config/diaspora.yml.example config/diaspora.ymlОтредактируйте config/database.yml и вставьте данные PostgreSQL (логин diaspora и пароль):
postgresql: &postgresql
adapter: postgresql
host: "localhost"
port: 5432
username: "diaspora"
password: "yourpassword"
encoding: unicodeСохраните и закройте файл.
Отредактируйте config/diaspora.yml и укажите ваш домен и SSL-настройки (пример):
configuration:
...
environment:
url: "https://pod.hakase-labs.to/"
certificate_authorities: '/etc/ssl/certs/ca-certificates.crt'
require_ssl: true
server:
rails_environment: 'production'
...Замените url и пути сертификатов на ваши значения. Если вы планируете тестирование без HTTPS, временно можно отключить require_ssl, но для production HTTPS обязателен.
Установите bundler и зависимости:
gem install bundler
script/configure_bundler
bin/bundle install --full-indexВыполните миграции и создайте базу (в production):
RAILS_ENV=production bundle exec rake db:create db:migrateСоберите ассеты Rails:
RAILS_ENV=production bin/rake assets:precompile
Примечание: во время bin/bundle install могут потребоваться дополнительные системные библиотеки — внимательно читайте ошибки и устанавливайте недостающие пакеты.
Шаг 6 — Настройка Diaspora как systemd-сервис
Создайте таргет и сервисы в /etc/systemd/system. Для этого вам потребуются права root.
Создайте diaspora.target:
cd /etc/systemd/system/
vim diaspora.targetВставьте:
[Unit]
Description=Diaspora social network
Wants=postgresql.service
Wants=redis-server.service
After=redis-server.service
After=postgresql.service
[Install]
WantedBy=multi-user.targetДалее создайте diaspora-web.service:
vim diaspora-web.serviceВставьте:
[Unit]
Description=Diaspora social network (unicorn)
PartOf=diaspora.target
StopWhenUnneeded=true
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec unicorn -c config/unicorn.rb -E production"
Restart=always
[Install]
WantedBy=diaspora.targetИ сервис для sidekiq:
vim diaspora-sidekiq.serviceВставьте:
[Unit]
Description=Diaspora social network (sidekiq)
PartOf=diaspora.target
StopWhenUnneeded=true
[Service]
User=diaspora
Environment=RAILS_ENV=production
WorkingDirectory=/home/diaspora/diaspora
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
Restart=always
[Install]
WantedBy=diaspora.targetПерезагрузите демона systemd и включите сервисы в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl enable diaspora.target diaspora-sidekiq.service diaspora-web.serviceЗапустите таргет:
systemctl start diaspora.targetПроверка статуса:
systemctl status diaspora-web
systemctl status diaspora-sidekiq
Совет: если unicorn падает, смотрите логи приложения (log/production.log) и системный журнал (journalctl -u diaspora-web).
Шаг 7 — Получение SSL (LetsEncrypt)
Установка certbot:
sudo apt install certbotПолучение сертификата в режиме standalone (порт 80 должен быть свободен):
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email youremail@example.com -d pod.hakase-labs.toСертификаты окажутся в /etc/letsencrypt/live/pod.hakase-labs.to/
Important: Для автоматического обновления certbot добавьте cron или systemd таймер. Если Nginx уже слушает 80, используйте –webroot или временно остановите nginx.
Шаг 8 — Настройка Nginx как обратного прокси для Diaspora
Установите Nginx (если не установлен):
sudo apt install nginxСоздайте конфигурацию в /etc/nginx/sites-available/diaspora и отредактируйте домен и пути к сертификатам:
cd /etc/nginx/sites-available/
vim diasporaВставьте (замените pod.hakase-labs.to на ваш домен):
upstream diaspora_server {
server unix:/home/diaspora/diaspora/tmp/diaspora.sock;
}
server {
listen 80;
listen [::]:80;
server_name pod.hakase-labs.to;
return 301 https://pod.hakase-labs.to$request_uri;
access_log /dev/null;
error_log /dev/null;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name pod.hakase-labs.to;
access_log /var/log/nginx/dspr-access.log;
error_log /var/log/nginx/dspr-error.log;
ssl_certificate /etc/letsencrypt/live/pod.hakase-labs.to/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pod.hakase-labs.to/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve X25519:P-521:P-384:P-256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
root /home/diaspora/diaspora/public;
client_max_body_size 5M;
client_body_buffer_size 256K;
try_files $uri @diaspora;
location /assets/ {
expires max;
add_header Cache-Control public;
}
location @diaspora {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://diaspora_server;
}
}Активируйте конфигурацию и проверьте nginx:
ln -s /etc/nginx/sites-available/diaspora /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
systemctl enable nginx
Совет по безопасности: минимизируйте логи с личными данными и настройте ротацию логов (logrotate).
Шаг 9 — Тестирование и первый запуск
Откройте браузер и перейдите по адресу вашего домена с HTTPS:
Вы должны увидеть стартовую страницу Diaspora. Создайте первую учётную запись (email, username, password) и выполните базовую настройку профиля.




Если всё отображается корректно — поздравляем, установка завершена.
Проверки после установки
- Страницы загружаются по HTTPS и сертификат валиден.
- Sidekiq и Unicorn работают и имеют статус active.
- Миграции выполнены без ошибок, в базе присутствуют таблицы Diaspora.
- Логи приложения (log/production.log) не содержат фатальных ошибок.
Команды проверки:
systemctl status diaspora-web diaspora-sidekiq nginx redis-server postgresql
tail -n 200 /home/diaspora/diaspora/log/production.logТипичные проблемы и отладка
Unicorn не запускается — проверьте права на папку tmp и путь unix-сокета /home/diaspora/diaspora/tmp/diaspora.sock. Проверьте owner: должен быть пользователь diaspora.
Sidekiq падает — часто связано с отсутствующими гемами или проблемами с Redis. Проверьте соединение с Redis и gem-бандл:
redis-cli ping
/home/diaspora/.rvm/rubies/ruby-2.6.*/bin/bundle exec sidekiqОшибки при bin/bundle install — установите недостающие dev-пакеты (libxml2-dev, libxslt-dev, libpq-dev и т. п.).
LetsEncrypt не может получить сертификат — убедитесь, что порт 80 доступен и nginx не занимает его во время standalone-режима; используйте –webroot как альтернативу.
Ошибки при precompile assets — проверьте наличие nodejs и yarn, если нужно, установите yarn и повторите сборку.
Если не получается найти причину — смотрите системный журнал: journalctl -u diaspora-web -e и production.log.
Безопасность и рекомендации по харднингу
- Запускайте приложение под непривилегированным пользователем (diaspora).
- Ограничьте доступ к SSH (ключи, отключение паролей, fail2ban).
- Разделите роли: база данных может находиться на отдельном сервере.
- Регулярно обновляйте систему и зависимости; тестируйте обновления в staging среде.
- Настройте автоматическое резервное копирование базы (pg_dump) и каталога public/uploads, если он используется.
- Настройте строгие заголовки безопасности в Nginx (HSTS, Content-Security-Policy при необходимости).
Пример добавления HSTS в Nginx (в server 443 блок):
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;Важно: сначала убедитесь, что поддомен и весь трафик корректно работают по HTTPS перед включением preload.
Резервное копирование и восстановление (микро-процедура)
Бэкап базы:
sudo -i -u postgres pg_dump -Fc -f /var/backups/diaspora-$(date +%F).dump diasporaБэкап загруженных файлов (если используются):
ts
tar -czf /var/backups/diaspora-uploads-$(date +%F).tar.gz /home/diaspora/diaspora/public/uploadsВосстановление базы:
sudo -i -u postgres pg_restore -d diaspora /var/backups/diaspora-YYYY-MM-DD.dumpРегулярно тестируйте восстановление в изолированном окружении.
Миграция и совместимость
- При переходе между версиями Ruby или Rails сначала протестируйте в staging-среде.
- Для миграции между серверами копируйте дамп базы и артефакты public/uploads.
- Если используете сторонние интеграции (OAuth, push уведомления), проверьте их настройки после миграции.
Чек-листы по ролям
Администратор:
- Проверить DNS и доступность домена.
- Обеспечить наличие бэкапов и доступ к логам.
- Настроить обновления системы и certbot renew.
Разработчик/оператор:
- Тестировать сборку гемов и ассетов.
- Настроить CI для автоматической проверки сборки и миграций.
Пользователь (первичный):
- Создать аккаунт и проверить отправку/получение постов.
- Проверить загрузку изображений и отображение профиля.
Критерии приёмки
- Сайт доступен по HTTPS и корректно отвечает на запросы.
- Unicorn и Sidekiq работают без аварий в течение тестовой нагрузки.
- Миграции выполнены и в базе есть ожидаемые таблицы и записи.
- Резервное копирование выполняется и проверено восстановление.
Быстрые советы и альтернативные подходы
- Вместо RVM можно использовать rbenv или system-wide Ruby-пакеты — важно обеспечить совместимость версии Ruby (2.6 в инструкции).
- Для HTTPS в случаях, когда сервер занят на 80 порту, используйте certbot –webroot или DNS-валидацию.
- Если планируется высокая нагрузка, задумайтесь об использовании балансировщика и выделении отдельного сервера для PostgreSQL.
Факт-бокс
- Минимум ОЗУ для простого узла: 2 ГБ. Рекомендуется 4 ГБ для production с несколькими пользователями.
- Обязательные сервисы: PostgreSQL, Redis, Nginx, systemd.
- SSL: LetsEncrypt предоставляет бесплатные сертификаты с автоматическим продлением.
Короткий runbook при падении (минимальный)
- Проверить статус сервисов:
systemctl status diaspora-web diaspora-sidekiq nginx redis-server postgresql- Просмотреть логи приложения:
journalctl -u diaspora-web -n 200
tail -n 200 /home/diaspora/diaspora/log/production.logЕсли проблема в Redis или PostgreSQL — перезапустить соответствующий сервис.
При проблемах с сертификатом — проверить certbot renew –dry-run и системные часы сервера.
Краткое резюме
Установка Diaspora на Debian Buster 10 возможна при соблюдении последовательности: зависимости → база данных → системный пользователь → Ruby/RVM → сборка приложения → systemd → Nginx → SSL. Документ покрывает типичные ошибки, рекомендации по безопасности, резервному копированию и роли участников. После установки проведите нагрузочное тестирование и настройте мониторинг.
Глоссарий (по одной строке)
- pod — отдельный сервер/узел, на котором размещён экземпляр Diaspora.
- unicorn — приложение-сервер для запуска Ruby on Rails.
- sidekiq — фоновый обработчик задач (job queue).
- RVM — Ruby Version Manager, менеджер версий Ruby.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента