2026-06-03 06:20:24 +05:00
2026-03-20 15:47:17 +05:00
2026-06-02 22:18:38 +05:00
2026-06-02 22:18:38 +05:00
2026-06-02 20:35:48 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-06-02 20:35:48 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-06-02 20:35:48 +05:00
2026-06-02 20:35:48 +05:00
2026-03-20 15:47:17 +05:00
2026-03-20 15:47:17 +05:00
2026-06-02 22:18:38 +05:00
2026-03-20 15:47:17 +05:00

AirService

Система управления заявками на техническое обслуживание (Service Desk).

Стек: Laravel 10, Livewire, Tailwind CSS, SQLite, Vite


Локальная разработка

Требования: PHP >= 8.2, Composer, Node.js >= 18

git clone <repo-url>
cd AirService

composer install
npm install

cp .env.example .env
# Поменять APP_ENV=local, APP_DEBUG=true, APP_URL=http://localhost:8000
php artisan key:generate

touch database/sqlite/database.sqlite
php artisan migrate --seed

Запустить в двух терминалах:

# Терминал 1
php artisan serve

# Терминал 2
npm run dev

Приложение: http://127.0.0.1:8000

Тестовые аккаунты (пароль у всех: password):

Email Роль
admin@service.local Администратор
manager@service.local Менеджер
tech1@service.local Техник
client1@service.local Клиент

Деплой на сервер (Docker)

Требования: Docker, Docker Compose на сервере 10.20.0.20.

1. Скопировать проект на сервер

ssh -i /root/.ssh/docker_vm_ed25519 crimson@10.20.0.20
sudo mkdir -p /opt/docker-apps/airservice

С локальной машины:

rsync -avz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
  ./ crimson@10.20.0.20:/opt/docker-apps/airservice/

2. Создать .env на сервере

cd /opt/docker-apps/airservice
cp .env.example .env
nano .env

Обязательно заполнить:

APP_KEY=        # сгенерировать ниже
APP_URL=https://your-domain.ru

Сгенерировать ключ:

docker compose run --rm app php artisan key:generate --show
# Скопировать результат в APP_KEY= в .env

3. Собрать и запустить

docker compose up -d --build

4. Наполнить базу начальными данными (один раз)

docker compose exec app php artisan db:seed

После этого доступны тестовые аккаунты из таблицы выше.

5. Проверить

docker compose ps
docker compose logs app --tail=50
curl -I http://10.20.0.20:18201

Пересборка после обновления кода

rsync -avz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
  ./ crimson@10.20.0.20:/opt/docker-apps/airservice/

docker compose up -d --build

Миграции накатываются автоматически при старте контейнера. База данных (SQLite файл) хранится в Docker volume airservice_sqlite_data и не теряется при пересборке.

Если нужно сбросить базу и накатить заново

docker compose down
docker volume rm airservice_sqlite_data
docker compose up -d --build
docker compose exec app php artisan db:seed

Открыть домен через Caddy (edge-proxy)

ssh -i /root/.ssh/edge_vm_ed25519 crimson@192.168.0.80
sudo nano /etc/caddy/Caddyfile

Добавить блок:

http://www.your-domain.ru, https://www.your-domain.ru {
    redir https://your-domain.ru{uri} 308
}

your-domain.ru {
    encode zstd gzip

    reverse_proxy 10.20.0.20:18201 {
        header_up Host {host}
        header_up X-Real-IP {remote_host}
    }
}
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Структура Docker-сервисов

Сервис Описание
airservice_app PHP-FPM (Laravel)
airservice_nginx nginx, порт 18201
airservice_queue Queue worker
S
Description
No description provided
Readme 229 KiB
Languages
PHP 74.5%
Blade 22.8%
JavaScript 1.7%
Dockerfile 0.4%
CSS 0.3%
Other 0.3%