Sonar: управление сервисами и портами на локальном хосте

Sonar: управление сервисами и портами на локальном хосте

Sonar — это CLI инструмент для просмотра и управления сервисами, которые слушают порты на локальном хосте. Он упрощает разработку, позволяя организовать и контролировать все активные процессы и контейнеры, работающие на твоем компьютере.

Sonar группирует порты по проектам и именам сервисов, что упрощает взаимодействие с ними. Например, с помощью команды sonar start ты можешь запустить серверы разработки и наблюдать за их состоянием в виде дерева, а также выполнять команды для их ожидания, ведения логов и остановки одним нажатием. Это делает его полезным как для разработчиков, запускающих приложения и контейнеры, так и для тех, кто хочет получить упорядоченный обзор всех работающих сервисов.

Проект написан на Go и устанавливается через Homebrew или скрипт установки. Учти, что для использования Homebrew нужно доверять стороннему репозиторию. Ограничений вроде необходимости API-ключа или лицензионных ограничений у Sonar нет, однако он может быть менее полезен в сложных облачных окружениях, где службы могут быть распределены по разным хостам.

``` ██████ ███ ██████ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ███ ██ ██ ██ ██ ██ ██ ``` Узнай, что работает на твоём компьютере.

Sonar — это инструмент, который показывает все процессы, слушающие на localhost, и группирует их по репозиториям или сервисам. Он позволяет запускать, следить за логами и останавливать все твои серверы и контейнеры Docker с помощью одной команды. Кроме того, Sonar автоматически подбирает порты для запуска, так что ты можешь запускать несколько экземпляров одного и того же приложения без конфликтов портов.

Установка

Sonar можно установить несколькими способами:

  • Homebrew (macOS / Linux):
    brew install raskrebs/sonar/sonar
    Для использования стороннего репозитория нужно сначала доверить его:
    brew trust raskrebs/sonar
  • Скрипт установки:
    curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | bash
    Этот скрипт скачивает последний бинарный файл в `~/.local/bin` и добавляет его в PATH. Можно использовать его и на Windows:
    irm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex
  • Используя Go:
    go install github.com/raskrebs/sonar@latest

Запуск и использование

Для работы с Sonar в корне репозитория нужно создать файл конфигурации `sonar.yaml`, который описывает, как запускаются твои сервисы. Вот пример структуры файла:

name: my-app
services:
  - name: db
    cmd: docker compose up db
    port: 5432
  - name: api
    cmd: uv run uvicorn app:app --port ${port}
    port: auto
    depends_on: [db]
  - name: frontend
    cmd: npm run dev -- --port ${port} --strictPort
    port: auto
    depends_on: [api]
    env:
      VITE_API_URL: ${api.url}

После этого можно запустить проект с помощью команды:

sonar start

Sonar автоматически выберет свободные порты для сервисов с параметром `port: auto`. Это позволяет запустить несколько экземпляров рабочего дерева рядом, не сталкиваясь с конфликтами портов.

Если файл `sonar.yaml` отсутствует, можно запустить команду напрямую:

sonar start -- npm run dev

Команды

Некоторые полезные команды для работы с Sonar:

  • Список запущенных процессов:
    sonar list --tree
  • Запуск сервисов:
    sonar start
  • Остановка сервисов:
    sonar down
  • Получение информации о сервисе:
    sonar info 3000

Ограничения

Sonar работает только на платформах macOS, Linux и Windows, но некоторые функции, такие как desktop-приложение, пока недоступны для Windows. Важно также помнить, что Sonar может не видеть процессы, запущенные от других пользователей. Для их отображения рекомендуется использовать `sudo`.

Кроме того, если порт управляется другой системой (например, через systemd или Docker с параметром `restart: always`), Sonar не сможет его остановить и отключить. И, конечно, необходимо убедиться, что все зависимости, указанные в `sonar.yaml`, корректны, иначе могут возникнуть ошибки при запуске.

Радар проекта: 58 из 100 — рабочий, но с оговорками

ИмпульсТемпЗрелостьСообществоСвежестьСтартПродакшенДовериеДокументацияЭкосистема58
  • Импульс 0 ≈ 1 звезда в месяц
  • Темп разработки 91 179 коммитов за 12 недель
  • Зрелость 81 проекту 8 месяцев, 35 релизов
  • Сообщество 43 9 участников, 34 форка
  • Свежесть 90 последний коммит — 17 дней назад
  • Быстрый старт 30 есть: команда установки
  • Готовность к продакшену 55 релиз v0.10.0, автосборка
  • Безопасность и доверие 40 лицензия MIT
  • Документация 97 README 43.9 тыс. знаков, 43 раздела, папка docs
  • Экосистема 54 1 подписчик на обновления, 9 тем
Как считаем

Только открытые данные GitHub на 31.10.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.

  • Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
  • Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
  • Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
  • Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
  • Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
  • Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
  • Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
  • Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
  • Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
  • Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.

Открыть на GitHub: raskrebs/sonar →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте