Полный процесс установки misskey на русском языке
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nihonium b9f0d256a5 modified: README.md 3 years ago
README.md modified: README.md 3 years ago

README.md

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

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

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

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

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

  1. Я рекомендую Ubuntu из-за огромного кол-ва встроенных библиотек, но можно и Debian
  2. NodeJS (12.x, 14.x)
  3. PostgreSQL (>=10.0)
  4. Redis
  5. Yarn

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

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