You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.9 KiB

🚀 Быстрый старт

За 5 минут к рабочему API

Шаг 1: Подготовка

# Убедитесь, что установлен 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: Настройка

# Создайте .env файл
cp .env.example .env

# Сгенерируйте безопасный пароль
openssl rand -base64 32

# Отредактируйте .env и вставьте сгенерированные пароли в DB_PASSWORD и ADMIN_PASSWORD
nano .env

Шаг 3: Запуск

# Запустите все сервисы
docker-compose up -d

# Дождитесь инициализации (30-60 секунд)
docker-compose logs -f postgres

# Когда увидите "database system is ready to accept connections" - нажмите Ctrl+C

Шаг 4: Проверка

# Проверьте 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

Войдите под admin и паролем из ADMIN_PASSWORD в .env.

Готово! 🎉


Первые данные

1. Создайте первый маршрут

Откройте админ-панель → Маршруты → "Добавить маршрут"

Или через API:

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:

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. Проверьте геопоиск

# Найдите остановки в радиусе 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: Прямой доступ (не безопасно для интернета)

# Узнайте IP вашего сервера
ip addr show | grep "inet "

# Доступ с других устройств в той же сети:
# http://YOUR_SERVER_IP:3000 - API
# http://YOUR_SERVER_IP:3001 - Admin

Вариант 2: Cloudflare Tunnel (рекомендуется для интернета)

# Установите 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 ключа для вашего приложения

# Войдите в 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

Генерация безопасного ключа:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Остановка и удаление

# Остановить все сервисы
docker-compose down

# Удалить все данные (ОСТОРОЖНО!)
docker-compose down -v

# Удалить образы
docker-compose down --rmi all

Частые проблемы

"Cannot connect to database":

# Проверьте, что PostgreSQL запущен
docker-compose ps
docker-compose logs postgres

# Перезапустите
docker-compose restart postgres

"Port already in use":

# Измените порты в docker-compose.yml
# Например, вместо "3000:3000" используйте "3001:3000"

"Permission denied":

# Убедитесь, что пользователь в группе docker
sudo usermod -aG docker $USER
# Перелогиньтесь

Следующие шаги

  1. Прочитайте полный README.md
  2. Добавьте свои маршруты и остановки
  3. Настройте расписания (в следующей версии)
  4. Интегрируйте API в ваше мобильное приложение
  5. Настройте безопасный доступ через Cloudflare

Удачи! 🚀