You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Мы используем Docker для поднятия Базы данных (PostgreSQL), Кэша (Redis) и самого Бэкенда (API + Bot).
78
+
### 2. Первый запуск
84
79
85
80
```bash
86
-
docker compose up -d --build
81
+
make local-init
82
+
make local-up
87
83
```
88
-
> **Внимание:** В локальном режиме бэкенд будет доступен Траефиком по хосту `api.santagym.local` (если прописать его в `/etc/hosts` локальной машины), либо можно маппить порты `8000:8000` напрямую для тестов.
89
84
90
-
### 3. Накатываем миграции Базы Данных
91
-
Чтобы в БД появились таблицы, необходимо применить миграции Alembic:
85
+
Локальный стенд поднимает:
86
+
-`db`
87
+
-`redis`
88
+
-`backend`
89
+
-`frontend`
92
90
93
-
```bash
94
-
docker compose exec backend alembic upgrade head
95
-
```
91
+
`bot` в обычный local workflow не входит.
92
+
93
+
### 3. Адреса сервисов
94
+
95
+
- API: `http://localhost:8000`
96
+
- Frontend: `http://localhost:5173`
97
+
98
+
### 4. Миграции
96
99
97
-
*(Если вы модифицировали модели и нужно создать новую миграцию):*
В отдельном окне терминала перейдите в папку `frontend`:
104
+
### 5. Логи и остановка
105
105
106
106
```bash
107
-
cd frontend
108
-
npm install
109
-
npm run dev
107
+
make local-logs
108
+
make local-down
110
109
```
111
-
Фронтенд запустится на `http://localhost:5173`.
112
-
> **Для справки:** При тестировании фронта локально (в браузере, а не внутри Telegram), инициализация будет проходить через заглушку (bypass auth), создавая "тестового пользователя", чтобы вы могли разрабатывать UI без подключения дебаггера смартфона.
110
+
111
+
### 6. Local Auth
112
+
113
+
Локальная разработка использует controlled fallback auth через `test_mode`, если в `.env.local` включен `ALLOW_TEST_AUTH=true`.
114
+
115
+
Это подходит для:
116
+
- UI разработки
117
+
- локальной проверки API
118
+
- быстрой отладки в браузере
119
+
120
+
Это не заменяет реальную проверку Telegram WebApp авторизации.
Серверный режим использует отдельный compose override с `Traefik`, `bot` и production-oriented frontend runtime.
117
129
118
-
Проект спроектирован так, чтобы его можно было безболезненно развернуть на VPS (Ubuntu/Debian) без лишних конфликтов портов благодаря использованию сетки Traefik.
130
+
### 1. Подготовка env
119
131
120
-
### 1. Настройка домена
121
-
Направьте A-запись вашего домена (например, `gymbot.example.com` и `api.gymbot.example.com`) на IP вашего сервера.
### 3. Изменение Traefik-конфигурации (docker-compose)
133
-
В prod-окружении необходимо:
134
-
1. Заменить `--api.insecure=true` на SSL/Let's Encrypt Entrypoints в настройках `traefik`.
135
-
2. Добавить метки (labels) для `frontend` контейнера (напишите prod-dockerfile, который собирает статику и отдает через `nginx`). Либо отдавать статику через CDN.
This project has CI/CD configured using GitHub Actions. Upon pushing to the `main` branch, the code is copied via SCP and started using docker-compose on the target server.
181
+
This project has CI/CD configured using GitHub Actions. The pipeline validates frontend, backend and compose configuration. Deployment uses the server compose topology.
167
182
168
183
### Setup Server Secrets
169
184
Navigate to **Settings > Secrets and variables > Actions** in your GitHub repository and add:
@@ -172,13 +187,13 @@ Navigate to **Settings > Secrets and variables > Actions** in your GitHub reposi
172
187
-`SSH_KEY`: The private Ed25519 or RSA SSH key to access the VPS
173
188
174
189
### Initial Server Setup
175
-
Make sure the folder exists and create a `.env` file containing the protected API tokens:
190
+
Make sure the folder exists and create a `.env.server` file containing the protected runtime secrets:
176
191
```bash
177
192
# Connect to your server
178
193
ssh root@YOUR_SERVER_IP
179
194
mkdir -p /opt/santagym
180
195
cd /opt/santagym
181
-
nano .env
196
+
nano .env.server
182
197
```
183
198
184
-
Fill the `.env` with your variables (`BOT_TOKEN`, `POSTGRES_USER`, etc).
199
+
Fill `.env.server` with your variables (`BOT_TOKEN`, `POSTGRES_USER`, `WEBAPP_BASE_URL`, etc).
0 commit comments