MisskeyInstallation/README.md

188 lines
7 KiB
Markdown
Raw Permalink Normal View History

# Установка своего инстанса Misskey
2020-12-30 09:15:33 +05:00
## 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
2022-05-23 13:19:06 +05:00
misskey@domain$ git clone -b master https://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;
}
}
```
Всё, заходим в браузере на свой инстанс и создаём административную учётную запись