From 4fab16411c4945ed70733597d4ec6af0ae085a21 Mon Sep 17 00:00:00 2001 From: SiberiaBreadFactory Date: Wed, 30 Dec 2020 10:50:55 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B0=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D1=8F=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D1=83=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 187 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index de3307a..432d965 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,188 @@ -# MisskeyInstallation +# Установка своего инстанса Misskey +## 1.1 Требования к аппаратному обеспечению +Точных рекомендаций в документации нет, однако судя по тестовой виртуальной машине на одного пользователя должно хватить 1 ГБ ОЗУ и 1 ядра CPU + +## 1.2 Требуемое программное обеспечение + +1. [Debian Linux](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, так как запускать свой инстанс из под 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; + } +} +``` + +Всё, заходим в браузере на свой инстанс и создаём административную учётную запись \ No newline at end of file