Files
Sheep-Service/README.md

8.6 KiB
Raw Blame History

🐑 Sheep-Service Керівництво з установки

Повне покрокове керівництво для будь-якого користувача, щоб запустити Sheep-Service на своєму сервері або локальній машині.


🔗 Зміст

  1. Початок
    1.1. Створення Telegram бота
    1.2. Генерація VAPID ключів
  2. Налаштування сервера
  3. Встановлення Docker
  4. Встановлення Docker Compose
  5. Запуск Sheep-Service
  6. Встановлення NGINX
  7. Налаштування IP адреси CloudFlare
  8. Налаштування NGINX для веб
  9. Встановлення Certbot
  10. CRONTAB Backup

1. Початок

  1. Скопіюйте всі файли проекту на сервер.
  2. Створіть файл .env у корені проекту:
DOMAIN=sheep-service.com

HTTP_PORT=4000
HTTPS_PORT=4001

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 на своє доменне ім’я.

  1. Відредагуйте файл web/config.js під ваші змінні .env.

1.1 Створення Telegram бота

  1. Відкрийте Telegram і знайдіть @BotFather.
  2. Відправте команду /newbot та слідуйте інструкціям:
    • Назва бота: SheepServiceBot
    • Username бота: sheep_service_bot (обов’язково закінчується на bot)
  3. Скопіюйте API токен та додайте його у .env:
TELEGRAM_TOKEN=окен_бота>
  1. Щоб отримати CHAT_ID:
    • Відправте боту /start.
    • Відкрийте URL у браузері:
https://api.telegram.org/bot<ТВОЙ_ТОКЕН>/getUpdates
  • Знайдіть chat.id у відповіді JSON і додайте у .env:
CHAT_ID=ут_твій_chat_id>

1.2 Генерація VAPID ключів

  1. Встановіть web-push:
npm install web-push -g
  1. Згенеруйте ключі:
web-push generate-vapid-keys
  1. Скопіюйте отримані ключі у .env:
VAPID_PUBLIC_KEY=ут_твій_public_key>
VAPID_PRIVATE_KEY=ут_твій_private_key>

2. Налаштування сервера

Оновлення системи та встановлення необхідних пакетів:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 ca-certificates lsb-release zip

💡 Порада: завжди запускайте оновлення перед встановленням нових пакетів, щоб уникнути конфліктів.


3. Встановлення Docker

sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Примітка: Після додавання користувача до групи docker потрібно перелогінитися або виконати newgrp docker.

Документація Docker


4. Встановлення Docker Compose

sudo apt install -y docker-compose
docker-compose --version

Документація Docker Compose


5. Запуск Sheep-Service

Перехід в директорію проекту

cd /home/username/webapps/sheep-service.com

Запуск сервісів через Docker Compose

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

sudo apt install nginx
sudo systemctl enable --now nginx
sudo systemctl status nginx

Редагування основного конфігураційного файлу:

sudo nano /etc/nginx/nginx.conf

Приклад налаштувань:

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

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 для веб

Створення файлу конфігурації сайту

sudo nano /etc/nginx/sites-available/sheep-service.com

Приклад конфігурації

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;
    }
}

Активація сайту

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

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:

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


10. CRONTAB Backup

Редагування cron для резервного копіювання бази даних:

crontab -e

Додати завдання:

#####################
# Щоденне збереження резервної копії бази Sheep-Service о 22:30
30 22 * * * cd /home/username/webapps/sheep-service.com && /usr/bin/python3 backup.py >> /home/username/webapps/sheep-service.com/log/backup.log 2>&1
#####################

Встановлення Python-залежностей:

sudo pip3 install python-dotenv

💡 Порада: Переконайтесь, що всі шляхи до директорій відповідають вашому користувачу та що всі сервіси працюють після перезавантаження Docker або сервера.