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.

202 lines
7.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Установка своего инстанса Misskey
## 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-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
```
Всё, заходим в браузере на свой инстанс и создаём административную учётную запись