🐳 Π Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Docker - prog-time/tg-support-bot GitHub Wiki

УстановитС зависимости

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° вашСй систСмС установлСны:

  • Docker
  • Docker Compose

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

docker -v
docker-compose -v

Настройки Π΄ΠΎΠΌΠ΅Π½Π°

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΎΡ‚Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½, Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ VPS (ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр) ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ DNS для Π΄ΠΎΠΌΠ΅Π½Π°, ΡƒΠΊΠ°Π·Π°Π² Π² "A" записи адрСс Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ

git clone https://github.com/prog-time/tg-support-bot.git

НастройтС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» .env Π½Π° основС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

cp .env.example .env

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

APP_URL=https://your-domain.com
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_GROUP_ID=-1001234567890
TELEGRAM_SECRET_KEY=your_custom_key

Для получСния Telegram Group ID ΠΈ Bot Token см. ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Telegram-Π±ΠΎΡ‚Π°.

Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ запуститС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹

docker-compose up -d --build

Π‘ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ сСрвисы:

  • nginx β€” Π²Π΅Π±-сСрвСр
  • app β€” Laravel-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  • postgres β€” Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…
  • pgadmin β€” Π°Π΄ΠΌΠΈΠ½ΠΊΠ° для PostgreSQL
  • grafana ΠΈ loki β€” для Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

УстановитС зависимости ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Laravel:

docker-compose exec app bash

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

composer install
php artisan migrate

Настройка SSL Π½Π° сСрвСрС (Nginx + Let's Encrypt)

УстановитС nginx ΠΈ certbot

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx

НастройтС прокси-ΠΊΠΎΠ½Ρ„ΠΈΠ³ для Nginx

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» /etc/nginx/sites-available/{Π΄ΠΎΠΌΠ΅Π½}:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass         http://127.0.0.1:8080;
        proxy_http_version 1.1;
        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;
    }
}

АктивируйтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ:

sudo ln -s /etc/nginx/sites-available/support-bot /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

ВыпуститС SSL-сСртификат

sudo certbot --nginx -d your-domain.com

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² .env Laravel ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ внСшний URL

APP_URL=https://your-domain.com

Установка Π²Π΅Π±Ρ…ΡƒΠΊΠ° (Telegram)

curl https://your-domain.com/api/telegram/set_webhook

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ адрСса