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.
SiberiaBreadFactory 23b6ef10f5 Поправил один заголовок 10 months ago
LICENSE Initial commit 10 months ago
README.md Поправил один заголовок 10 months ago

README.md

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

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

Точных рекомендаций в документации нет, однако судя по тестовой виртуальной машине на одного пользователя должно хватить 1 ГБ ОЗУ и 1 ядра CPU

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

  1. Debian Linux
  2. NodeJS (12.x, 14.x)
  3. PostgreSQL (>=10.0)
  4. Redis
  5. Yarn

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

Для начала необходимо создать пользователя для Misskey, так как запускать свой инстанс из под Root - плохая практика

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

После необходимо установить всё нужное для работы инстанса программное обеспечение:

// 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 с паролем yourpass
psql=# CREATE USER misskey WITH ENCRYPTED PASSWORD 'yourpass';

// Выдаем ему все разрешения на использование базы данных 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: пишем пароль пользователя базы данных (в данном руководстве yourpass)

Собираем 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://example.tld/

Выключаем 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 и добавляем в автозагрузку
# systemctl enable --now misskey

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

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

# nano /etc/nginx/sites-enabled/default

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

server {
    listen 80;
    listen [::]:80
    server_name example.tld;

    # Перенаправление с 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/example.tld/chain.pem;
    ssl_certificate           /etc/letsencrypt/live/example.tld/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.tld/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;
    }
}

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