---
title: "laraport: термінальний інтерфейс для Laravel у Docker"
url: https://laravelukraine.com/blog/laraport-terminalnii-interfeis-dlia-laravel-u-docker
author: "Олексій Бабінцев"
date: 2026-11-09
---

# laraport: термінальний інтерфейс для Laravel у Docker

[laraport](https://laraport.app) - термінальний інтерфейс для Laravel-застосунків, які працюють у Docker: на вашій машині або на будь-якому сервері, куди ви заходите по SSH. Його зробив автор Laravel Ukraine, тож це не огляд стороннього продукту, а розповідь про власний інструмент і запрошення його спробувати.

Звична робота з сервером виглядає так: `ssh`, `docker ps`, пошук потрібного контейнера, `docker exec`, `tail -f storage/logs/laravel.log`, а для Tinker чи бази - ще кілька команд. Інструменти на кшталт lazydocker добре керують самим Docker, але не знають, що всередині контейнера живе Laravel. laraport знає.

![Огляд laraport: сервери, контейнер, його логи, Horizon і таблиця бази даних](https://cdn.laravelukraine.com/2519/eM1biVA2-ogliad-laraport-serveri-konteiner-iogo-logi-horizon-i-tablicia-bazi-danix.gif)

### Що він уміє

Сервер відкривається списком контейнерів, згрупованих так, як ви деплоїте: проєкти Coolify і Dokploy, стеки Swarm, проєкти Compose. Контейнери Coolify підписані назвами ресурсів, а не UUID. Над списком - стан самого сервера: навантаження, пам'ять, диски, попередження про майже повний диск.

Усередині Laravel-контейнера:

- **Логи** Laravel, Docker і nginx: пошук під час набору, фільтр за рівнем, стеження за цілим проєктом. `laravel.log` на 2 ГБ відкривається так само швидко, як маленький: рядки підвантажуються частинами.
- **Помилки** з логу, згруповані за типом: скільки разів, коли вперше й востаннє, де виникла, останній stack trace. Щось на зразок маленького Sentry з одного лог-файлу.
- **Tinker**: PHP-код зверху, результат знизу, з часом і пам'яттю. Код виконується в завантаженому застосунку на сервері через PsySH.
- **Horizon** без браузера: пропускна здатність, черги, супервізори, failed jobs з payload, retry і forget.
- **База даних** застосунку: laraport читає підключення з конфігу самого Laravel і відкриває PostgreSQL, MySQL, MariaDB або SQLite, а також Redis і MongoDB. Для TablePlus чи DBeaver є тунель на `127.0.0.1`.
- **Файли** в стилі Midnight Commander: перегляд з підсвіткою, редагування `.env` з diff перед збереженням, завантаження й вивантаження.
- **Після деплою** картка контейнера попереджає про невиконані міграції, увімкнений debug і некешований конфіг, а вкладка Laravel запускає міграції, `optimize` і перезапуск воркерів.
- **Artisan, Composer і npm** з описами та автодоповненням. З версії 0.3.3 laraport пам'ятає запущені команди для кожного контейнера: `queue:work --queue=default` чи `migrate --force` можна повторити двома клавішами.

Так виглядають помилки з логу, згруповані за типом, з останнім stack trace:

![Помилки логу, згруповані за типом, і останній stack trace однієї з них](https://cdn.laravelukraine.com/2520/FWYNEOwr-pomilki-logu-zgrupovani-za-tipom-i-ostannii-stack-trace-odnijeyi-z-nix.gif)

А так - Eloquent-запит у Tinker на сервері:

![Eloquent-запит у Tinker з результатом, часом і пам'яттю](https://cdn.laravelukraine.com/2521/HAKXZfOH-eloquent-zapit-u-tinker-z-rezultatom-casom-i-pamiattiu.gif)

### Як він працює з сервером

На сервері нічого не встановлюється: ні агента, ні відкритих портів. laraport виконує ті самі команди docker, які ви набрали б самі, через ваше SSH-з'єднання і ваші ключі. Підтримуються jump hosts (`ssh -J`), власна команда docker на кшталт `sudo -n docker` чи `podman` і автоматичне перепідключення.

Сам laraport - один бінарник на Go для macOS і Linux.

### Безпека на продакшні

Найчастіше питання про такі інструменти - чи можна пускати їх на прод. Кілька рішень зроблено саме під це:

- кожна зміна спершу показує точну команду чи SQL, і фокус стоїть на Cancel;
- продакшн позначений, а Tinker перепитує перед першим запуском;
- редагування таблиць і відновлення дампів вимкнені, доки ви їх не ввімкнете;
- сервер з `read_only: true` відмовляє в усьому, що може його змінити: дозволені лише відомі читання на зразок `route:list`;
- паролі до бази й код Tinker передаються через stdin, тож `ps` на сервері їх не покаже;
- кожна зміна записується в локальний журнал.

Наприклад, після деплою картка контейнера показує невиконані міграції, а запуск спершу показує саму команду:

![Невиконані міграції на картці контейнера і їх запуск після підтвердження](https://cdn.laravelukraine.com/2522/A3ddEQb3-nevikonani-migraciyi-na-kartci-konteinera-i-yix-zapusk-pislia-pidtverdzennia.gif)

Телеметрії немає. Раз на день laraport питає GitHub про нову версію, і це можна вимкнути.

### Як спробувати

На macOS і Linux з Homebrew:

```bash
brew install alexbabintsev/tap/laraport
laraport
```

Для Linux без Homebrew є [інструкція з установки](https://laraport.app/docs/installation/). Після запуску ви побачите локальний Docker. Якщо сервери вже є в `~/.ssh/config`, клавіша `i` імпортує їх, а `a` додає сервер вручну. Решту описано в [швидкому старті](https://laraport.app/docs/quick-start/).

Якщо страшно одразу підключати прод, почніть з `read_only: true`.

### Скільки коштує

Усе, що вміє laraport, доступне безкоштовно: для локального Docker і одного SSH-сервера, без акаунта. Ліцензія потрібна лише для більшої кількості серверів: [$39 за ранньою ціною](https://laraport.app/pricing/), разовий платіж, рік оновлень, а отримані версії працюють назавжди. Ключ перевіряється офлайн.

### Чого поки немає

- нативної збірки для Windows: у WSL2 laraport має працювати, але це ще не перевірено;
- Kubernetes: лише Docker, Compose і Swarm, зокрема Coolify і Dokploy;
- відкритого коду: laraport - закритий продукт з безкоштовним рівнем.

### Кому це знадобиться

Якщо ваш Laravel живе в Docker і ви регулярно заходите на сервер подивитися логи, перезапустити воркери чи перевірити чергу, laraport заощадить чимало команд. Якщо все працює в Forge чи Vapor без Docker, він вам не потрібен.

Проєкт молодий, тому найцінніше зараз - відгуки: де ви застрягли на першому запуску, чого бракує для вашого сетапу і що зламалося. Пишіть в [issues на GitHub](https://github.com/alexbabintsev/laraport/issues) або в коментарях.
