MisskeyInstallation/README.md
2020-12-30 10:54:01 +05:00

188 lines
No EOL
7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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