|
|
@ -1,3 +1,199 @@
|
|
|
|
# MisskeyInstall
|
|
|
|
# Установка своего инстанса Misskey
|
|
|
|
|
|
|
|
|
|
|
|
Полный процесс установки 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-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
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Всё, заходим в браузере на свой инстанс и создаём административную учётную запись
|
|
|
|