Полная пошаговая инструкция по установке и настройке misskey руками, а не скриптиком (и им тоже).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
razzlom d8b8a0bc8c
Обновлены зависимости.
12 months ago
Nya.txt new file: Nya.txt 2 years ago
README.md Обновлены зависимости. 12 months ago

README.md

Дисклеймер

На данный момент создать свой инстанс можно при помощи маленького скрипта взяв его с фф. сайта misskey (как и обновить) версию инстанса), но мы рассмотрим с вами пошаговый гайд для:

  1. Олдов ^~^
  2. Понимание того, что тут происходит.
  3. Вытекаюий из 2. - возможность кастомизации своего инстанса.

Установка своего инстанса Misskey

0.1 У вас УЖЕ должен быть куплен домен и хост-сервер

1.1 Требования к аппаратному обеспечению

Точных рекомендаций в документации нет, однако судя по опыту пользования и администрирования инстанса shitpost.poridge.club на 5 активных пользователя желательно >=2гб ОЗУ и 1 ядра процессора.

1.2 Требуемое программное обеспечение

  1. Я рекомендую Ubuntu из-за огромного кол-ва встроенных библиотек, но можно и Debian
  2. NodeJS (16.x)
  3. PostgreSQL (12.x / 13.x предпочтительнее)
  4. Redis
  5. Yarn (Необязательно, но рекомендуется по соображениям безопасности. Если вы не хотите его устанавливать, используйте npx yarn вместо yarn.)
  6. FFmpeg

2. Установка Misskey

Для начала необходимо создать пользователя для Misskey (ради безопасности)

# adduser --disabled-password --disabled-login misskey

Далее мы всё так же продолжаем действовать под root'ом. Нам необходимо установить всё нужное для работы инстанса программное обеспечение:

// Redis, PostgreSQL, sudo и остальное программное обеспечение
# apt install redis postgresql sudo git nginx

// NodeJS
# curl -sL https://deb.nodesource.com/setup_12.x | bash -
# apt-get install -y nodejs

// Yarn
# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
# echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
# apt update && apt install yarn

Тут будет расхождение от официальной документации. В документации Misskey устанавливается в директорию /home/misskey/misskey, в данном же руководстве Misskey устанавливается в /opt/misskey, так что создаём директорию /opt/misskey и меняем у неё владельца на пользователя misskey:

// Создаём директорию
# mkdir -pv /opt/misskey

// Меняем владельца
# chown misskey:misskey -R /opt/misskey

Создаём базу данных под Misskey:

# sudo -Hu postgres psql

// Создаём базу данных
psql=# CREATE DATABASE misskey;

// Создаём пользователя misskey с паролем
psql=# CREATE USER misskey WITH ENCRYPTED PASSWORD 'ВАШ_ПАРОЛЬ';

// Выдаем ему все разрешения на использование базы данных Misskey
psql=# GRANT ALL PRIVILIGES ON DATABASE misskey TO misskey;
psql=#\q

После заходим под пользователя misskey и скачиваем исходный код Misskey:

// Заходим под пользователем Misskey
# su - misskey

// Скачиваем Misskey
misskey@domain$ cd /opt
misskey@domain$ git clone -b master git://github.com/syuilo/misskey.git

// Устанавливаем зависимости
misskey@domain$ cd misskey
misskey@domain$ yarn

Копируем файл .config/example .config/default.yml (Подразумевается что вы всё ещё в директории /opt/misskey) и редактируем его:

misskey@domain$ cp .config/example.yml .config/default.yml
misskey@domain$ nano .config/default.yml

В данном конфигурационном файле нас интересуют следующие параметры:

url: поменять example.tld на своё доменное имя

port: в данной руководстве Misskey работает через Reverse Proxy, так что порт ставим 3000

db:
  user: пишем пользователя базы данных (в данном руководстве misskey)
  pass: пишем пароль пользователя базы данных (в данном руководстве ВАШ_ПАРОЛЬ)

Собираем Misskey:

misskey@domain$ NODE_ENV=production yarn build

Обычно там много ошибок появляется, но этого не стоит боятся, это норма.

misskey@domain$ yarn run init

Запускаем Misskey:

misskey@domain$ NODE_ENV=production npm start

Если всё хорошо, Misskey выдаст строку о том, что он прослушивает 3000 порт:

Now listening on port 3000 on https://ВАШ_ДОМЕН/

Выключаем Misskey сочетанием клавиш CTRL+X и создаем Systemd сервис для того, что бы Misskey автоматически запускался при каждом включении хост-машины:

// Создаем и открываем для редактирования файл /etc/systemd/system/misskey.service
# nano /etc/systemd/system/misskey.service

Вставляем в файл /etc/systemd/system/misskey.service следующий код:

[Unit]
Description=Misskey daemon

[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

Включаем инстанс Misskey в Systemd:

// Перечитываем все сервисы Systemd что бы он увидел только что созданный юнит
# systemctl daemon-reload

// Включаем Misskey и добавляем в автозагрузку, а при помощи --now тут же запускаем.
# systemctl enable --now misskey

// Проверяем работу Misskey
# systemctl status misskey

Заключительный этап - настройка Revers Proxy. Открываем файл /etc/nginx/sites-available/misskey:

# nano /etc/nginx/sites-available/misskey

И вставляем следующий код:

server {
    listen 80;
    listen [::]:80
    server_name ВАШ_ДОМЕН;

    # Перенаправление с http на https
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    # Подключение сертификатов Let's Encrypt
    ssl_trusted_certificate   /etc/letsencrypt/live/ВАШ_ДОМЕН/chain.pem;
    ssl_certificate           /etc/letsencrypt/live/ВАШ_ДОМЕН/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/ВАШ_ДОМЕН/privkey.pem;

    # Подключение сжатия
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/activity+json application/atom+xml;

    # Размер загружаемых файлов
    client_max_body_size 16m;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Активируем наш сайт, проверим корректность конфигов nginx и перезагрузим nginx:

ln -s /etc/nginx/sites-available/misskey /etc/nginx/sites-enabled/misskey
nginx -t
systemctl restart nginx

Всё, заходим в браузере на свой инстанс и создаём административную учётную запись.

3. Остаточные настройки

3.1 Настройка автообновления SSL

  1. Остановите nginx sudo systemctl stop nginx
  2. Позвольте certbot автоматически обновлять ваши сертификаты certbot renew --dry-run

3.2 Соединение с защищенными инстансами

Некоторые инстансы в fediverse "стоят" в Secure mode, и для того, чтобы с ними федерироваться, нужно провести некоторые манипуляции.

Почти в самом конце конфига есть такие строки:

# Sign to ActivityPub GET request (default: false)
#signToActivityPubGet: true

Нужно убрать # во второй строке и перезапустить Misskey.

Т.е.

# Sign to ActivityPub GET request (default: false)
signToActivityPubGet: true

А потом: systemctl restart misskey

3.3 Настройка внешнего вида

Перейдите в Панель управления - Общее и выставите дэфолтную тему.

3.3 Оптимизация дискового пространства

  1. Если вам не нужен кеш с других инстансов: Панель управления - Общее - Кешировать внешние файлы (выкл).
  2. Там же и настройка дискового пространсва для юзеров.

3.5 Работа Списков

Для того, чтобы у вас работали Списки вам необходим пользователь-прокси, который и будет подписываться на людей с вашего списка.

  1. Создайте пользователя, который будет выступать в роли бота-подписчика.
  2. Добавьте его в Панель управления - Учётная запись прокси