Skip to content

API for parsing news articles and reading them in a Telegram bot

License

Notifications You must be signed in to change notification settings

AbbadonAA/Latest_News_Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Latest News

latest_news_workflow

ОписаниС

Latest News - это API сСрвиса для парсинга новостных статСй с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π±ΠΎΡ‚ΠΎΠΌ Telegram.

API ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для взаимодСйствия со сторонними Π±ΠΎΡ‚Π°ΠΌΠΈ Telegram ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌΠΈ сСрвисами - новостными Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

Основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» API:

  • Запуск парсСров для заполнСния Π‘Π” новостными ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ;
  • ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π‘Π” ΠΎΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… новостных статСй;
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ: рСгистрация, аутСнтификация, авторизация, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅;
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π‘Π” записСй с новостными ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросах;
  • Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ html-шаблона ΡΡ‚Π°Ρ‚ΡŒΠΈ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ отобраТСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ InstantView Telegram.

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ парсинг ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… новостных рСсурсов:

  • Π Π‘Πš;
  • ИноБМИ.

НастроСны:

  • АвтоматичСскоС созданиС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • CI/CD (GitHub Actions + Docker-Compose).

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

Python FastAPI Scrapy Python-telegram-bot Postgres SQLAlchemy Docker Nginx

Полная установка для локального запуска

  1. Π‘ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:
git clone git@github.com:AbbadonAA/Latest_News_Bot.git
  1. АктивируйтС venv ΠΈ установитС зависимости:
python3 -m venv venv 
source venv/bin/activate 
pip install -r requirements.txt 
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ» .env со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ API
APP_TITLE=LATEST_NEWS_PARSER  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния
DEBUG=False  # True для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0  # хост
PORT=8080  # ΠΏΠΎΡ€Ρ‚
DOMAIN=False  # имССтся Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com  # ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ сСртификат SSL)
PARSER_FREQUENCY=5  # ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ запуска парсСров (ΠΌΠΈΠ½ΡƒΡ‚Ρ‹)
STORAGE_DAYS=30  # срок хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) uuid для Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) email ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΠΎΡ‚Π°
IP=127.0.0.1  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) адрСс вашСго сСрвСра
WEBHOOK=False # True для запуска Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Ρ‚ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π° Telegram

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
POSTGRES_DB=news_db  # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π‘Π”
POSTGRES_USER=postgres  # имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π‘Π”
POSTGRES_PASSWORD=postgres  # ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π‘Π”
DB_HOST=localhost  # хост Π‘Π” (для запуска Ρ‡Π΅Ρ€Π΅Π· docker-compose Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° имя сСрвиса с Π‘Π”)
DB_PORT=6100  # ΠΏΠΎΡ€Ρ‚ Π‘Π” (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любой, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ внСсти измСнСния Π² Ρ„Π°ΠΉΠ»Ρ‹ docker-compose)

Warning: Для локального запуска рСкомСндуСтся Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ (DOMAIN=False) ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ polling (WEBHOOK=False). Π’ случаС запуска Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ webhook трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ с установлСнным сСртификатом SSL. Π˜Π½Π°Ρ‡Π΅ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ngrok.

ИспользованиС Ngrok

Ngrok позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ общСдоступный адрСс (Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ) локального сСрвСра.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅: https://ngrok.com/

  • УстановитС Ngrok, слСдуя ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструкциям:

    https://ngrok.com/download

  • ЗапуститС Ngrok ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

    ngrok http 8080
  • Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния (.env):

    DOMAIN_NAME=https://1234-56-78-9.eu.ngrok.io  # ΠŸΡ€ΠΈΠΌΠ΅Ρ€

  1. ЗапуститС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Docker):
cd infra/
docker-compose -f docker-compose.local.yml up -d news_db
  1. Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ для создания Ρ‚Π°Π±Π»ΠΈΡ† Π² Π‘Π”:
alembic upgrade head 
  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ запуску.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ локальном запускС:

Π’ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

python run.py

БСрвис Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ доступСн ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ адрСсам:

(ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ .env: HOST=0.0.0.0, PORT=8080)

Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±ΠΎΡ‚ Telegram, Ρ‚ΠΎΠΊΠ΅Π½ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² Ρ„Π°ΠΉΠ»Π΅ .env.

Π’ Π‘Π” Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски создан ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (email, password ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ .env).

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ установки для запуска Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для прилоТСния:
mkdir LATEST_NEWS (ΠΏΡ€ΠΈΠΌΠ΅Ρ€)
  1. РазмСститС Π² созданной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ» .env со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ API
APP_TITLE=LATEST_NEWS_PARSER  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния
DEBUG=False  # True для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0  # хост
PORT=8080  # ΠΏΠΎΡ€Ρ‚
DOMAIN=False  # имССтся Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com  # ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ сСртификат SSL)
PARSER_FREQUENCY=5  # ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ запуска парсСров (ΠΌΠΈΠ½ΡƒΡ‚Ρ‹)
STORAGE_DAYS=30  # срок хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) uuid для Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) email ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΠΎΡ‚Π°
IP=127.0.0.1  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) адрСс вашСго сСрвСра
WEBHOOK=False # True для запуска Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Ρ‚ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π° Telegram

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
POSTGRES_DB=news_db  # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π‘Π”
POSTGRES_USER=postgres  # имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π‘Π”
POSTGRES_PASSWORD=postgres  # ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π‘Π”
DB_HOST=news_db  # хост Π‘Π”
DB_PORT=6100  # ΠΏΠΎΡ€Ρ‚ Π‘Π” (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любой, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ внСсти измСнСния Π² Ρ„Π°ΠΉΠ»Ρ‹ docker-compose)
  1. Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ прилоТСния создайтС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /infra:
mkdir infra
  1. РазмСститС Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /infra Ρ„Π°ΠΉΠ» docker-compose.local.yml
  2. Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /infra запуститС docker-compose:
docker-compose -f docker-compose.local.yml up -d
  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² Π΄Π²ΡƒΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…:
  • latest_news_bot
  • latest_news_db

Установка Π½Π° сСрвСрС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сСртификата SSL

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½Π° сСрвСрС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для прилоТСния:
mkdir latest-news (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) 
  1. РазмСститС Π² созданной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ» .env со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ API
APP_TITLE=LATEST_NEWS_PARSER  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния
DEBUG=False  # True для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0  # хост
PORT=8080  # ΠΏΠΎΡ€Ρ‚
DOMAIN=True  # имССтся Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€)
PARSER_FREQUENCY=5  # ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ запуска парсСров (ΠΌΠΈΠ½ΡƒΡ‚Ρ‹)
STORAGE_DAYS=30  # срок хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) uuid для Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) email ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΠΎΡ‚Π°
IP=127.0.0.1  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) адрСс вашСго сСрвСра
WEBHOOK=True # Запуск Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Ρ‚ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π° Telegram
INSTANT_VIEW=True # Активация Ρ€Π΅ΠΆΠΈΠΌΠ° чтСния статСй Ρ‡Π΅Ρ€Π΅Π· Instant View
RHASH=f4642197829222  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) rhash вашСго шаблона Instant View

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
POSTGRES_DB=news_db  # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π‘Π”
POSTGRES_USER=postgres  # имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π‘Π”
POSTGRES_PASSWORD=postgres  # ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π‘Π”
DB_HOST=news_db  # хост Π‘Π”
DB_PORT=6100  # ΠΏΠΎΡ€Ρ‚ Π‘Π” (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любой, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ внСсти измСнСния Π² Ρ„Π°ΠΉΠ»Ρ‹ docker-compose)

Warning: Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Instant View ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с мобильной вСрсиСй Telegram. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ просмотра статСй Π² Telegram Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ дСсктопноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ошибки. Π­Ρ‚ΠΎ связано с самой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Instant View. Для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния Π½Π° всСх устройствах, вСроятно, слСдуСт ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Instant View, Π½Π΅ добавляя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ строки Π² Ρ„Π°ΠΉΠ» .env. - Π’ этом случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ссылку ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

  1. Π’ случаС запуска отобраТСния статСй Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Instant View - создайтС свой шаблон IV ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ rhash Π² Ρ„Π°ΠΉΠ»Π΅ .env:
RHASH=f4642197829222  # (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) rhash вашСго шаблона IV
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /infra:
mkdir infra
  1. РазмСститС Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /infra Ρ„Π°ΠΉΠ» docker-compose.prod.yml
  2. Π£Ρ‚ΠΎΡ‡Π½ΠΈΡ‚Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ docker-compose.prod.yml ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния:
VIRTUAL_HOST=example.com (ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½)
LETSENCRYPT_HOST=example.com (ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½)
LETSENCRYPT_EMAIL=your_email@example.com (ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π’Π°Ρˆ email)
  1. РазмСститС Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /infra (Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ) Ρ„Π°ΠΉΠ» docker-compose.nginx.yml
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΡΠ΅Ρ‚ΡŒ Docker:
docker network create nginx-proxy
  1. ЗапуститС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹:
docker-compose -f docker-compose.nginx.yml up -d
docker-compose -f docker-compose.prod.yml up -d
  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…:
  • latest_news_bot

  • latest_news_db

  • nginx-proxy

  • letsencrypt

    ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ сСртификат SSL ΠΈ настроСно автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ сСртификатов.

ЛицСнзия

  • MIT License

Автор

Pushkarev Anton

pushkarevantona@gmail.com