Files
Sheep-Service/README.md

306 lines
8.9 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.
# 🐑 Sheep-Service Керівництво з установки
> Повне покрокове керівництво для будь-якого користувача, щоб запустити Sheep-Service на своєму сервері або локальній машині.
---
## 🔗 Зміст
1. [Початок](#1-початок)
1.1. [Створення Telegram бота](#11-створення-telegram-бота)
1.2. [Генерація VAPID ключів](#12-генерація-vapid-ключів)
2. [Налаштування сервера](#2-налаштування-сервера)
3. [Встановлення Docker](#3-встановлення-docker)
4. [Встановлення Docker Compose](#4-встановлення-docker-compose)
5. [Запуск Sheep-Service](#5-запуск-sheep-service)
6. [Встановлення NGINX](#6-встановлення-nginx)
7. [Налаштування IP адреси CloudFlare](#7-настройка-ip-адреси-cloudflare)
8. [Налаштування NGINX для веб](#8-настройка-nginx-для-веб)
9. [Встановлення Certbot](#9-встановлення-certbot)
---
## 1. Початок
1. Скопіюйте всі файли проекту на сервер.
2. Створіть файл `.env` у корені проекту:
```bash
DOMAIN=sheep-service.com
HTTP_PORT=4000
HTTPS_PORT=4001
ADMIN_USER=ут_твій_нікнейм>
ADMIN_TOKEN=ут_твій_токен>
DB_PATH=/home/username/webapps/sheep-service.com/
CARDS_PATH=/home/username/webapps/sheep-service.com/cards
MAP_PATH=/home/username/webapps/sheep-service.com/map
TELEGRAM_TOKEN=окен_бота>
CHAT_ID=ут_твій_chat_id>
VAPID_PUBLIC_KEY=ут_твій_public_key>
VAPID_PRIVATE_KEY=ут_твій_private_key>
```
> **Примітка:** Замініть `username` на ім’я користувача сервера, а `sheep-service.com` на своє доменне ім’я.
3. Відредагуйте файл `web/config.js` під ваші змінні `.env`.
## 1.1 Створення Telegram бота
1. Відкрийте Telegram і знайдіть **[@BotFather](https://t.me/BotFather)**.
2. Відправте команду `/newbot` та слідуйте інструкціям:
- Назва бота: `SheepServiceBot`
- Username бота: `sheep_service_bot` (обов’язково закінчується на `bot`)
3. Скопіюйте **API токен** та додайте його у `.env`:
```bash
TELEGRAM_TOKEN=окен_бота>
```
4. Щоб отримати `CHAT_ID`:
- Відправте боту `/start`.
- Відкрийте URL у браузері:
```
https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates
```
- Знайдіть `chat.id` у відповіді JSON і додайте у `.env`:
```bash
CHAT_ID=ут_твій_chat_id>
```
## 1.2 Генерація VAPID ключів
1. Встановіть `web-push`:
```bash
npm install web-push -g
```
2. Згенеруйте ключі:
```bash
web-push generate-vapid-keys
```
3. Скопіюйте отримані ключі у `.env`:
```bash
VAPID_PUBLIC_KEY=ут_твій_public_key>
VAPID_PRIVATE_KEY=ут_твій_private_key>
```
## 2. Налаштування сервера
Оновлення системи та встановлення необхідних пакетів:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 ca-certificates lsb-release zip
```
💡 **Порада:** завжди запускайте оновлення перед встановленням нових пакетів, щоб уникнути конфліктів.
---
## 3. Встановлення Docker
```bash
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
```
> **Примітка:** Після додавання користувача до групи `docker` потрібно перелогінитися або виконати `newgrp docker`.
✅ [Документація Docker](https://docs.docker.com/engine/install/ubuntu/)
---
## 4. Встановлення Docker Compose
```bash
sudo apt install -y docker-compose
docker-compose --version
```
✅ [Документація Docker Compose](https://docs.docker.com/compose/install/)
---
## 5. Запуск Sheep-Service
### Перехід в директорію проекту
```bash
cd /home/username/webapps/sheep-service.com
```
### Запуск сервісів через Docker Compose
```bash
docker-compose pull
docker-compose -p sheep-service up --build -d
docker-compose -p sheep-service up --build -d --scale api=5 --scale ws=5 --scale web=2
```
---
## 6. Встановлення NGINX
```bash
sudo apt install nginx
sudo systemctl enable --now nginx
sudo systemctl status nginx
```
Редагування основного конфігураційного файлу:
```bash
sudo nano /etc/nginx/nginx.conf
```
Приклад налаштувань:
```nginx
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=all:5m inactive=10m max_size=2g;
limit_req_zone $binary_remote_addr zone=one:5m rate=30r/s;
client_max_body_size 20M;
```
---
## 7. Налаштування IP адреси CloudFlare
```nginx
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
real_ip_header X-Forwarded-For;
```
💡 **Порада:** Це дозволяє серверу отримувати реальні IP користувачів, якщо ви використовуєте CloudFlare.
---
## 8. Налаштування NGINX для веб
### Створення файлу конфігурації сайту
```bash
sudo nano /etc/nginx/sites-available/sheep-service.com
```
### Приклад конфігурації
```nginx
server {
listen 80;
listen [::]:80;
server_name sheep-service.com www.sheep-service.com;
location / {
proxy_pass http://127.0.0.1:4000$request_uri;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
### Приклад конфігурації для балонсування серверів
```nginx
upstream backend {
server 5.58.145.96 max_fails=3 fail_timeout=10s;
server 95.47.167.120 max_fails=3 fail_timeout=10s;
}
server {
listen 80;
listen [::]:80;
server_name sheep-service.com www.sheep-service.com;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5s;
proxy_read_timeout 30s;
proxy_send_timeout 30s;
}
}
```
### Активація сайту
```bash
sudo ln -s /etc/nginx/sites-available/sheep-service.com /etc/nginx/sites-enabled/sheep-service.com
sudo nginx -t
sudo systemctl reload nginx
```
---
## 9. Встановлення Certbot
```bash
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d sheep-service.com
```
Автоматичне оновлення сертифікатів через cron:
```bash
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx
```
✅ [Документація Certbot](https://certbot.eff.org/)
---
💡 **Порада:** Переконайтесь, що всі шляхи до директорій відповідають вашому користувачу та що всі сервіси працюють після перезавантаження Docker або сервера.