|
|
# 🚀 Быстрый старт
|
|
|
|
|
|
## За 5 минут к рабочему API
|
|
|
|
|
|
### Шаг 1: Подготовка
|
|
|
```bash
|
|
|
# Убедитесь, что установлен Docker
|
|
|
docker --version
|
|
|
docker-compose --version
|
|
|
|
|
|
# Если нет - установите:
|
|
|
# Ubuntu/Debian:
|
|
|
sudo apt update
|
|
|
sudo apt install docker.io docker-compose
|
|
|
|
|
|
# Добавьте пользователя в группу docker
|
|
|
sudo usermod -aG docker $USER
|
|
|
# Перелогиньтесь после этого
|
|
|
```
|
|
|
|
|
|
### Шаг 2: Настройка
|
|
|
```bash
|
|
|
# Создайте .env файл
|
|
|
cp .env.example .env
|
|
|
|
|
|
# Сгенерируйте безопасный пароль
|
|
|
openssl rand -base64 32
|
|
|
|
|
|
# Отредактируйте .env и вставьте сгенерированный пароль в DB_PASSWORD
|
|
|
nano .env
|
|
|
```
|
|
|
|
|
|
### Шаг 3: Запуск
|
|
|
```bash
|
|
|
# Запустите все сервисы
|
|
|
docker-compose up -d
|
|
|
|
|
|
# Дождитесь инициализации (30-60 секунд)
|
|
|
docker-compose logs -f postgres
|
|
|
|
|
|
# Когда увидите "database system is ready to accept connections" - нажмите Ctrl+C
|
|
|
```
|
|
|
|
|
|
### Шаг 4: Проверка
|
|
|
```bash
|
|
|
# Проверьте API
|
|
|
curl http://localhost:3000/health
|
|
|
|
|
|
# Ожидаемый ответ:
|
|
|
# {"status":"healthy","timestamp":"2025-11-19T...","version":"1.0.0"}
|
|
|
|
|
|
# Проверьте базу данных
|
|
|
curl -H "X-API-Key: dev_key_12345678" http://localhost:3000/api/v1/sync/status
|
|
|
```
|
|
|
|
|
|
### Шаг 5: Откройте админ-панель
|
|
|
Откройте в браузере: http://localhost:3001
|
|
|
|
|
|
**Готово! 🎉**
|
|
|
|
|
|
---
|
|
|
|
|
|
## Первые данные
|
|
|
|
|
|
### 1. Создайте первый маршрут
|
|
|
Откройте админ-панель → Маршруты → "Добавить маршрут"
|
|
|
|
|
|
Или через API:
|
|
|
```bash
|
|
|
curl -X POST http://localhost:3000/api/v1/routes \
|
|
|
-H "X-API-Key: dev_key_12345678" \
|
|
|
-H "Content-Type: application/json" \
|
|
|
-d '{
|
|
|
"route_number": "1",
|
|
|
"name": "Центр - Вокзал",
|
|
|
"type": "bus",
|
|
|
"color": "#FF6B6B"
|
|
|
}'
|
|
|
```
|
|
|
|
|
|
### 2. Добавьте остановки
|
|
|
Откройте админ-панель → Остановки → Кликните на карту
|
|
|
|
|
|
Или через API:
|
|
|
```bash
|
|
|
curl -X POST http://localhost:3000/api/v1/stops \
|
|
|
-H "X-API-Key: dev_key_12345678" \
|
|
|
-H "Content-Type: application/json" \
|
|
|
-d '{
|
|
|
"name": "Площадь Свободы",
|
|
|
"latitude": 55.4869,
|
|
|
"longitude": 28.7856,
|
|
|
"address": "Центр города"
|
|
|
}'
|
|
|
```
|
|
|
|
|
|
### 3. Проверьте геопоиск
|
|
|
```bash
|
|
|
# Найдите остановки в радиусе 500м от центра Полоцка
|
|
|
curl -H "X-API-Key: dev_key_12345678" \
|
|
|
"http://localhost:3000/api/v1/stops/nearby?lat=55.4869&lon=28.7856&radius=500"
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## Доступ из локальной сети
|
|
|
|
|
|
### Вариант 1: Прямой доступ (не безопасно для интернета)
|
|
|
```bash
|
|
|
# Узнайте IP вашего сервера
|
|
|
ip addr show | grep "inet "
|
|
|
|
|
|
# Доступ с других устройств в той же сети:
|
|
|
# http://YOUR_SERVER_IP:3000 - API
|
|
|
# http://YOUR_SERVER_IP:3001 - Admin
|
|
|
```
|
|
|
|
|
|
### Вариант 2: Cloudflare Tunnel (рекомендуется для интернета)
|
|
|
```bash
|
|
|
# Установите cloudflared
|
|
|
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
|
|
|
sudo mv cloudflared /usr/local/bin/
|
|
|
sudo chmod +x /usr/local/bin/cloudflared
|
|
|
|
|
|
# Авторизуйтесь
|
|
|
cloudflared tunnel login
|
|
|
|
|
|
# Создайте туннель
|
|
|
cloudflared tunnel create polotsk-transit
|
|
|
|
|
|
# Создайте конфиг
|
|
|
cat > ~/.cloudflared/config.yml << EOF
|
|
|
tunnel: YOUR_TUNNEL_ID
|
|
|
credentials-file: /home/$USER/.cloudflared/YOUR_TUNNEL_ID.json
|
|
|
|
|
|
ingress:
|
|
|
- hostname: api.yourdomain.com
|
|
|
service: http://localhost:3000
|
|
|
- hostname: admin.yourdomain.com
|
|
|
service: http://localhost:3001
|
|
|
- service: http_status:404
|
|
|
EOF
|
|
|
|
|
|
# Запустите туннель
|
|
|
cloudflared tunnel run polotsk-transit
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## Создание API ключа для вашего приложения
|
|
|
|
|
|
```bash
|
|
|
# Войдите в PostgreSQL
|
|
|
docker exec -it polotsk-transit-db psql -U transit_admin -d polotsk_transit
|
|
|
|
|
|
# Создайте новый API ключ
|
|
|
INSERT INTO api_keys (key, app_name, rate_limit, is_active)
|
|
|
VALUES ('YOUR_GENERATED_KEY_HERE', 'My iOS App', 10000, true);
|
|
|
|
|
|
# Проверьте
|
|
|
SELECT * FROM api_keys;
|
|
|
|
|
|
# Выйдите
|
|
|
\q
|
|
|
```
|
|
|
|
|
|
Генерация безопасного ключа:
|
|
|
```bash
|
|
|
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## Остановка и удаление
|
|
|
|
|
|
```bash
|
|
|
# Остановить все сервисы
|
|
|
docker-compose down
|
|
|
|
|
|
# Удалить все данные (ОСТОРОЖНО!)
|
|
|
docker-compose down -v
|
|
|
|
|
|
# Удалить образы
|
|
|
docker-compose down --rmi all
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## Частые проблемы
|
|
|
|
|
|
**"Cannot connect to database":**
|
|
|
```bash
|
|
|
# Проверьте, что PostgreSQL запущен
|
|
|
docker-compose ps
|
|
|
docker-compose logs postgres
|
|
|
|
|
|
# Перезапустите
|
|
|
docker-compose restart postgres
|
|
|
```
|
|
|
|
|
|
**"Port already in use":**
|
|
|
```bash
|
|
|
# Измените порты в docker-compose.yml
|
|
|
# Например, вместо "3000:3000" используйте "3001:3000"
|
|
|
```
|
|
|
|
|
|
**"Permission denied":**
|
|
|
```bash
|
|
|
# Убедитесь, что пользователь в группе docker
|
|
|
sudo usermod -aG docker $USER
|
|
|
# Перелогиньтесь
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## Следующие шаги
|
|
|
|
|
|
1. Прочитайте полный README.md
|
|
|
2. Добавьте свои маршруты и остановки
|
|
|
3. Настройте расписания (в следующей версии)
|
|
|
4. Интегрируйте API в ваше мобильное приложение
|
|
|
5. Настройте безопасный доступ через Cloudflare
|
|
|
|
|
|
**Удачи! 🚀**
|