Skip to content

Commit

Permalink
Local telegram api (#6)
Browse files Browse the repository at this point in the history
* Max file size is 500mb

* Dockerfiles&compose are tested and updated

* Only local telegram api for telegram-bot is supported

* Build test added to actions

* Less deps for job-manager

* Typo fix

---------

Co-authored-by: AleX <soaska@cornspace.su>
  • Loading branch information
soaska and AleX authored Dec 1, 2024
1 parent 9e9e7e1 commit 338f843
Show file tree
Hide file tree
Showing 16 changed files with 569 additions and 3,312 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: If it builds, it probably works.

on:
push:
pull_request:
jobs:
build-telegram-bot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the telegram-bot Docker image
run: docker build ./telegram-bot -t telegram-bot:$(date +%s)
build-job-manager:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the job-manager Docker image
run: docker build ./job-manager -t job-manager:$(date +%s)
build-pocketbase:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the pocketbase Docker image with migrations
run: docker build ./pocketbase -t pocketbase:$(date +%s)
12 changes: 5 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Отдельно запускаются телеграм бот, который отвечает на запросы пользователя, работает с базой данных и
создает задачи, база данных pocketbase и обработчик задач, который может быть запущен в нескольких
экземплярах на разных устройствах для ускорения вычислений. В данном примере представлена обработка видео
с помощью ffmpeg для создания кружочков в телеграме. При этом не требудется большая мощность, поэтому
с помощью ffmpeg для создания кружочков в телеграме. При этом не требуется большая мощность, поэтому
возможость горизонтального масштабирования не играет роли. Играет роль улучшеная модель контроля задач,
отслеживания ошибок, которые сохраняются в базе данных с графическим интерфейсом. Задачи можно перезапускать,
и они не сбрасываются при перезапуске бота.
Expand All @@ -21,9 +21,7 @@ cp example.env .env
vim .env
```

Запустим pocketbase, удалим существующую коллекцию users, затем перейдем во вкладку
settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
`pocketbase/collections/PB Schema.json`
Запустим pocketbase, перейдем по её [url](http://0.0.0.0:8080/_/), создадим пользователя.
```shell
podman compose up pocketbase
```
Expand All @@ -34,9 +32,9 @@ podman compose up -d --build
```

# Запуск
Запустим pocketbase по [этой](https://pocketbase.io/docs/) инструкции.
Зайдем во вкладку settings / import collections. Далее в меню load from json выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
pocketbase/collections/PB Schema.json
Запустим pocketbase по [этой](https://pocketbase.io/docs/) инструкции. Удалим collection `users`.
Зайдем во вкладку *settings / import* collections. Далее в меню *load from json* выбираем [файл](https://github.com/soaska/faceswaper/blob/main/pocketbase/collections/PB%20Schema.json)
`pocketbase/collections/PB Schema.json`

Скопируем код
```shell
Expand Down
35 changes: 32 additions & 3 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -1,34 +1,63 @@
services:
# own telegram api server
# needed to download / upload large files
# Container link: https://github.com/aiogram/telegram-bot-api
# Info about limitations: https://core.telegram.org/bots/api#using-a-local-bot-api-server
telegram-bot-api:
image: aiogram/telegram-bot-api:latest
hostname: tgapi
environment:
- TELEGRAM_LOCAL=1
env_file:
- .env
volumes:
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
ports:
- "8081:8081"
- "8082:8082" # statistics

pocketbase:
hostname: pocketbase
build:
context: ./pocketbase
dockerfile: Dockerfile
restart: unless-stopped
ports:
- 8080:8080
volumes:
- ./pb_data:/pb/pb_data
- ./data/pocketbase:/pb/pb_data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 30s
timeout: 10s
retries: 5

telegram-bot:
job-manager:
build:
context: ./job-manager
dockerfile: Dockerfile
environment:
- DOCKER_BUILD=yas
env_file:
- .env
volumes:
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
restart: unless-stopped
depends_on:
- pocketbase
- telegram-bot-api

job-manager:
telegram-bot:
build:
context: ./telegram-bot
dockerfile: Dockerfile
environment:
- DOCKER_BUILD=yas
env_file:
- .env
volumes:
- ./data/telegram-bot-api:/var/lib/telegram-bot-api
restart: unless-stopped
depends_on:
- pocketbase
- telegram-bot-api
12 changes: 9 additions & 3 deletions example.env
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
# telegram
TELEGRAM_API = https://api.telegram.org
TELEGRAM_API = "http://tgapi:8081"
TELEGRAM_APITOKEN = 1294890:asdasfdewioru3o2ier
BOT_DEBUG = false
BOT_DEBUG = true

# for own api server
# get from https://my.telegram.org/apps
TELEGRAM_API_ID=3456789
TELEGRAM_API_HASH=ydgwgyu779cdddw9c9qwd
TELEGRAM_STAT=1

# pocketbase
POCKETBASE_URL = http://0.0.0.0:8080
POCKETBASE_URL = "http://0.0.0.0:8080"
POCKETBASE_LOGIN = admin@supermario.carts
POCKETBASE_PASSWORD = MAShsRoOm
Loading

0 comments on commit 338f843

Please # to comment.