|
8 | 8 |
|
9 | 9 | Бот, позволяющий составлять список дел на день, следить за их выполнением. |
10 | 10 |
|
| 11 | +## Инструкция по развёртыванию ToDo bot |
11 | 12 |
|
12 | | -## Переменные окружения |
| 13 | +> :note: Если вы планируете развёртывать несколько ботов на сервере, используйте |
| 14 | +> продвинутый вариант инструкции: |
| 15 | +> [detailed-deploy.md](https://github.com/ExpressApp/todo-bot/blob/feature/easy-deploy/detailed-deploy.md). |
13 | 16 |
|
14 | | -* `BOT_CREDENTIALS`: Учётные данные бота. Состоят из блоков |
15 | | - `cts_host@secret_key@bot_id`, разделённых запятыми (один бот может быть |
16 | | - зарегистрирован на нескольких CTS. `cts_host` -- адрес админки, `secret_key` и |
17 | | - `bot_id` можно получить после регистрации бота, кликнув на его имя. Инструкция по |
18 | | - регистрации бота находится в [Руководстве |
19 | | - администратора](https://express.ms/admin_guide.pdf) `->` Эксплуатация корпоративного |
20 | | - сервера `->` Управление контактами `->` Чат-боты. |
21 | | -* `DB_CONNECTION`: DSN для БД PostgreSQL, например: |
22 | | - `postgres://postgres_user:postgres_password@postgres:port/db_name` |
23 | | -* `REDIS_DSN`: DSN для хранилища Redis, например: `redis://redis:6379/0` |
24 | | -* `DEBUG` [`false`]: Включает вывод сообщений уровня `DEBUG` (по-умолчанию выводятся |
25 | | - сообщения с уровня `INFO`). |
26 | | -* `SQL_DEBUG` [`false`]: Включает вывод запросов к БД PostgreSQL. |
27 | 17 |
|
28 | 18 |
|
29 | | -## Деплой |
| 19 | +1. Воспользуйтесь инструкцией [Руководство |
| 20 | + администратора](https://express.ms/admin_guide.pdf) `-> Эксплуатация корпоративного |
| 21 | + сервера -> Управление контактами -> Чат-боты`, чтобы создать бота в админке |
| 22 | + eXpress. |
| 23 | + Получите `secret_key` и `bot_id` кликнув на имя созданного бота. |
| 24 | + Получите `cts_host` в строке браузера, когда вы в админке. |
| 25 | + |
30 | 26 |
|
31 | | -**Примечание**: Чтобы легко добавлять новых ботов на сервер, хранилища находятся в |
32 | | -отдельной docker-сети и используются несколькими ботами сразу (каждый обращается к своей |
33 | | -БД, но к единственному экземпляру PosgreSQL/Redis). При необходимости хранилища и бота |
34 | | -легко объединить в один docker-compose файл. |
35 | | - |
36 | | - |
37 | | -### Настройка хранилищ, используемых ботом |
38 | | - |
39 | | -1. Создайте директорию для PosgreSQL+Redis. |
40 | | - |
41 | | -```shell |
42 | | -mkdir -p /opt/express/bots/storages |
43 | | -``` |
44 | | - |
45 | | -2. В директории `/opt/express/bots/storages` создайте файл `docker-compose.yml` со |
46 | | - следующим содержимым: |
47 | | - |
48 | | -```yaml |
49 | | -version: "3.8" |
50 | | - |
51 | | -services: |
52 | | - postgres: |
53 | | - image: postgres:13.2-alpine |
54 | | - env_file: .env |
55 | | - ports: |
56 | | - - "5432:5432" |
57 | | - restart: always |
58 | | - networks: |
59 | | - - express_bots_storages |
60 | | - volumes: |
61 | | - - /opt/express/bots/storages/postgresdata:/var/lib/postgresql/12/main |
62 | | - logging: |
63 | | - driver: "json-file" |
64 | | - options: |
65 | | - max-size: "10m" |
66 | | - max-file: "10" |
67 | | - |
68 | | - redis: |
69 | | - image: redis:6.2-alpine |
70 | | - env_file: .env |
71 | | - ports: |
72 | | - - "6379:6379" |
73 | | - restart: always |
74 | | - networks: |
75 | | - - express_bots_storages |
76 | | - volumes: |
77 | | - - /opt/express/bots/storages/redisdata:/var/lib/postgresql/data |
78 | | - logging: |
79 | | - driver: "json-file" |
80 | | - options: |
81 | | - max-size: "10m" |
82 | | - max-file: "10" |
83 | | - |
84 | | -networks: |
85 | | - express_bots_storages: |
86 | | - name: express_bots_storages |
87 | | -``` |
88 | | -
|
89 | | -3. Заполните файл `.env` необходимыми данными (для генерации паролей используйте команду |
90 | | - `openssl rand -hex 16`): |
| 27 | +2. Скачайте репозиторий на сервер: |
91 | 28 |
|
92 | 29 | ```bash |
93 | | -POSTGRES_USER="postgres" # Общий пользователь PostgreSQL, у бота будет свой собственный |
94 | | -POSTGRES_PASSWORD="<GENERATE>" |
| 30 | +git clone https://github.com/ExpressApp/todo-bot.git /opt/express/bots/todo-bot |
| 31 | +cd /opt/express/bots/todo-bot |
95 | 32 | ``` |
96 | 33 |
|
97 | | -4. Запустите контейнеры командой `docker-compose up -d`. |
98 | | -5. Убедитесь, что в логах хранилищ нет ошибок. |
99 | | - |
100 | | -```bash |
101 | | -docker-compose logs |
102 | | -``` |
| 34 | +3. Отредактируйте `docker-compose.yml` подставив вместо `cts_host`, `secret_key` и `bot_id` реальные значения. |
103 | 35 |
|
104 | 36 |
|
105 | | -### Настройка бота |
106 | | - |
107 | | -1. Создайте БД и пользователя для бота (для генерации паролей используйте команду |
108 | | - `openssl rand -hex 16`): |
109 | | - |
110 | | -```shell |
111 | | -docker exec -it storages_postgres_1 psql --user postgres |
112 | | -``` |
113 | | - |
114 | | -```sql |
115 | | -CREATE USER todo_bot_user PASSWORD "<GENERATE>"; |
116 | | -CREATE DATABASE todo_bot_db; |
117 | | -GRANT ALL PRIVILEGES ON DATABASE todo_bot_db TO todo_bot_user; |
118 | | -``` |
119 | | - |
120 | | -2. Создайте бота в админке eXpress. Хост CTS (в строке браузера, когда вы в админке) и |
121 | | - "Secret key" пригодятся для заполнения переменной окружения `BOT_CREDENTIALS`. |
122 | | - |
123 | | -3. Создайте директорию для бота. |
124 | | - |
125 | | -```shell |
126 | | -mkdir -p /opt/express/bots/todo-bot |
127 | | -``` |
128 | | - |
129 | | -4. В директории `/opt/express/bots/todo-bot` создайте файл |
130 | | - `docker-compose.yml` со следующим содержимым: |
131 | | - |
132 | | -```yaml |
133 | | -version: "3.8" |
134 | | -
|
135 | | -services: |
136 | | - todo-bot: |
137 | | - image: registry.example.com/bots/todo-bot:master |
138 | | - container_name: todo-bot |
139 | | - env_file: .env |
140 | | - ports: |
141 | | - - "8000:8000" # Отредактируйте порт хоста (первый), если он уже занят |
142 | | - restart: always |
143 | | - depends_on: |
144 | | - - postgres |
145 | | - - redis |
146 | | - logging: |
147 | | - driver: "json-file" |
148 | | - options: |
149 | | - max-size: "10m" |
150 | | - max-file: "10" |
151 | | -
|
152 | | -networks: |
153 | | - default: |
154 | | - external: |
155 | | - name: express_bots_storages |
156 | | -``` |
157 | | - |
158 | | -5. Заполните `.env` необходимыми данными: |
159 | | - |
160 | | -```bash |
161 | | -BOT_CREDENTIALS="example.cts.domain@d87f0dce2280d04b41f08e3adb1ae81c@5ce31515-32ae-435a-b6f4-748d2ced921d" |
162 | | -# etc. |
163 | | -``` |
164 | | - |
165 | | -Описание переменных и примеры можно посмотреть в [соответствующем |
166 | | -разделе](#переменные-окружения). |
167 | | - |
168 | | -6. Запустите бота командой: |
| 37 | +4. Запустите контейнеры командой: |
169 | 38 |
|
170 | 39 | ```bash |
171 | 40 | docker-compose up -d |
172 | 41 | ``` |
173 | 42 |
|
174 | | -7. Найдите бота через поиск корпоративных контактов (иконка человечка слева-сверху в |
175 | | - мессенджере), напишите ему что-нибудь для проверки (обычно у бота есть команда |
176 | | - `/help`). |
177 | | - |
178 | | -8. Убедитесь, что в логах бота нет ошибок. |
| 43 | +5. Убедитесь, что в логах нет ошибок. |
179 | 44 |
|
180 | 45 | ```bash |
181 | 46 | docker-compose logs |
182 | 47 | ``` |
| 48 | + |
| 49 | +6. Найдите бота через поиск корпоративных контактов (иконка человечка слева-сверху в |
| 50 | + мессенджере), напишите ему что-нибудь для проверки. |
0 commit comments