diff --git a/README.md b/README.md index 6fffdb5..8e983a5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,199 @@ -# MisskeyInstall +# Установка своего инстанса Misskey -Полный процесс установки misskey на русском языке \ No newline at end of file +## 0.1 У вас УЖЕ должен быть куплен [домен](https://ubuntu.com) и хост-сервер + +## 1.1 Требования к аппаратному обеспечению +Точных рекомендаций в документации нет, однако судя по опыту пользования и администрирования инстанса [shitpost.poridge.club](https://shitpost.poridge.club) на 5 активных пользователя желательно >=2гб ОЗУ и 1 ядра процессора. + +## 1.2 Требуемое программное обеспечение + +1. Я рекомендую [Ubuntu](https://ubuntu.com) из-за огромного кол-ва встроенных библиотек, но можно и [Debian](https://www.debian.org/) +2. [NodeJS](https://nodejs.org/en/) (12.x, 14.x) +3. [PostgreSQL](https://www.postgresql.org/) (>=10.0) +4. [Redis](https://redis.io/) +5. [Yarn](https://classic.yarnpkg.com/en/) + +--- + +## 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-enabled/default: +``` +# nano /etc/nginx/sites-enabled/default +``` +И вставляем следующий код: +``` +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 (на всякий случай) + +``` +sysstemctl restart nginx +``` + +Всё, заходим в браузере на свой инстанс и создаём административную учётную запись