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

Що він уміє
Сервер відкривається списком контейнерів, згрупованих так, як ви деплоїте: проєкти 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:

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

Як він працює з сервером
На сервері нічого не встановлюється: ні агента, ні відкритих портів. 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 на сервері їх не покаже;
- кожна зміна записується в локальний журнал.
Наприклад, після деплою картка контейнера показує невиконані міграції, а запуск спершу показує саму команду:

Телеметрії немає. Раз на день laraport питає GitHub про нову версію, і це можна вимкнути.
Як спробувати
На macOS і Linux з Homebrew:
brew install alexbabintsev/tap/laraport
laraport
Для Linux без Homebrew є інструкція з установки. Після запуску ви побачите локальний Docker. Якщо сервери вже є в ~/.ssh/config, клавіша i імпортує їх, а a додає сервер вручну. Решту описано в швидкому старті.
Якщо страшно одразу підключати прод, почніть з read_only: true.
Скільки коштує
Усе, що вміє laraport, доступне безкоштовно: для локального Docker і одного SSH-сервера, без акаунта. Ліцензія потрібна лише для більшої кількості серверів: $39 за ранньою ціною, разовий платіж, рік оновлень, а отримані версії працюють назавжди. Ключ перевіряється офлайн.
Чого поки немає
- нативної збірки для Windows: у WSL2 laraport має працювати, але це ще не перевірено;
- Kubernetes: лише Docker, Compose і Swarm, зокрема Coolify і Dokploy;
- відкритого коду: laraport - закритий продукт з безкоштовним рівнем.
Кому це знадобиться
Якщо ваш Laravel живе в Docker і ви регулярно заходите на сервер подивитися логи, перезапустити воркери чи перевірити чергу, laraport заощадить чимало команд. Якщо все працює в Forge чи Vapor без Docker, він вам не потрібен.
Проєкт молодий, тому найцінніше зараз - відгуки: де ви застрягли на першому запуску, чого бракує для вашого сетапу і що зламалося. Пишіть в issues на GitHub або в коментарях.