Главная/Разработка/SonarQube

Установка SonarQube на свой сервер

Установка SonarQube на свой сервер упирается не в compose-файл, а в настройки ядра Linux: без параметра vm.max_map_count не ниже 524288 контейнер падает при старте. SonarQube проверяет исходный код на ошибки, уязвимости и «запахи кода» и показывает отчёт на порту 9000. Бесплатная сборка называется Community Build, образ sonarqube:community, и отдельная база PostgreSQL ей нужна уже для рабочей установки.

4 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Перед запуском задайте в системе vm.max_map_count не ниже 524288, возьмите образ sonarqube:community и подключите внешнюю PostgreSQL. Для старта разумно 2 ядра и 4 ГБ. После первого входа admin/admin смените пароль: SonarQube сам требует это, но порт 9000 лучше сразу не публиковать.

Выберите конфигурацию с запасом по памяти: SonarQube держит поисковый движок внутри.

Какие параметры ядра нужны SonarQube перед запуском

01 · 1 мин

Что проверяет SonarQube и в какой сборке он бесплатен#

SonarQube анализирует код при каждой сборке и складывает находки в отчёт: ошибки, уязвимости, дублирование, покрытие тестами. Решение «пускать ли код дальше» принимает Quality Gate, то есть набор порогов, например «ни одной новой уязвимости».

Бесплатная сборка называется Community Build (раньше Community Edition) и подходит для начала. Платные редакции добавляют часть функций, и список различий SonarSource ведёт на своём сайте, поэтому сверяйте его перед выбором, а не по старым статьям. Не путайте SonarQube с Nexus и Harbor: он не хранит артефакты, он оценивает код. Хранилища артефактов разобраны на страницах Nexus Repository и Harbor.

Инструмент · 1 мин

Какие параметры ядра нужны SonarQube перед запуском#

Внутри SonarQube работает поисковый движок Elasticsearch, поэтому системные ограничения у него жёсткие. Проверьте и задайте параметры на хосте, не в контейнере.

ПараметрЗначение
vm.max_map_countне ниже 524288
fs.file-maxне ниже 131072
Открытые файлы (ulimit -n)не меньше 131072
Потоки (ulimit -u)не меньше 8192
sudo sysctl -w vm.max_map_count=524288
sudo sysctl -w fs.file-max=131072
echo 'vm.max_map_count=524288' | sudo tee -a /etc/sysctl.d/99-sonarqube.conf

Последняя строка делает значение постоянным. Без неё после перезагрузки сервера SonarQube снова перестанет подниматься. Лимиты ulimit в Docker обычно выставляют в compose-файле, как показано ниже.

Какой сервер взять под SonarQube

Три ответа, и калькулятор подберёт готовую конфигурацию

Сколько кода проверяется
Где живёт PostgreSQL
Как долго хранить историю анализов

03 · 1 мин

Установка SonarQube через Docker Compose с PostgreSQL#

  1. Поставьте Docker с плагином Compose и задайте параметры ядра из таблицы выше.
  2. Создайте compose-файл с SonarQube и PostgreSQL. Пароль базы замените на свой.
  3. Запустите docker compose up -d и подождите минуту-две: первый запуск разворачивает схему базы.
  4. Откройте http://IP-сервера:9000, войдите как admin с паролем admin и сразу задайте новый.
  5. Создайте проект и токен в разделе My Account: через токен сканер отправляет отчёты.
services:
  sonarqube:
    image: sonarqube:community
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: ЗАМЕНИТЕ_ПАРОЛЬ
    ports:
      - '127.0.0.1:9000:9000'
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ulimits:
      nofile: { soft: 131072, hard: 131072 }
      nproc: 8192
  db:
    image: postgres:17
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: ЗАМЕНИТЕ_ПАРОЛЬ
      POSTGRES_DB: sonar
    volumes:
      - sonarqube_db:/var/lib/postgresql/data
volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_db:

Встроенная база H2 у SonarQube есть только для знакомства, данные из неё в PostgreSQL не переносятся. Поэтому для рабочего сервера сразу берите PostgreSQL: свой контейнер или отдельный сервер.

Если контейнер SonarQube завершается с кодом 137, системе не хватило памяти и она остановила процесс. Посмотрите docker compose logs sonarqube, затем освободите память или возьмите конфигурацию побольше. Ошибка про bootstrap checks в журнале, наоборот, говорит о параметрах ядра из таблицы выше.

04 · 1 мин

Как подключить SonarQube к GitLab CI и Jenkins#

SonarQube сам код не забирает. Сканер запускается в вашем пайплайне, анализирует рабочую копию и отправляет отчёт на сервер. Нужны три значения: адрес сервера, токен и ключ проекта.

sonar-scanner \
  -Dsonar.projectKey=my-app \
  -Dsonar.sources=. \
  -Dsonar.host.url=https://sonar.example.com \
  -Dsonar.token=$SONAR_TOKEN

Токен храните в секретных переменных CI, не в репозитории. В GitLab Runner сканер запускают отдельным заданием из образа sonarsource/sonar-scanner-cli, в Jenkins есть плагин SonarQube Scanner, который подставляет адрес и токен сам.

Адрес в настройках сборок должен быть тем, по которому сервер видно с раннера. Если порт 9000 закрыт, поставьте перед SonarQube Nginx или Caddy с HTTPS и обращайтесь по домену.

05 · 1 мин

Копии и обновление SonarQube без потери истории#

История анализов хранится в PostgreSQL, остальное в томах data и extensions. Делайте дамп базы командой pg_dump и копируйте каталог extensions, если ставили плагины. Куда выносить архивы: сервер для бэкапов.

Смена версии образа

Перед обновлением прочитайте инструкцию по переходу на выбранную версию на сайте SonarSource: при новой версии SonarQube просит открыть страницу миграции базы, которая выполняется один раз, и откатиться назад уже нельзя. Сначала дамп базы, потом смена тега.

06 · 1 мин

Вопросы об установке SonarQube#

Почему SonarQube не запускается и пишет про vm.max_map_count?

Встроенный поисковый движок требует vm.max_map_count не ниже 524288, а в системе значение меньше. Задайте его командой sysctl на хосте и добавьте в sysctl.d, чтобы оно пережило перезагрузку.

Какой логин и пароль у SonarQube после установки?

Логин admin и пароль admin. При первом входе SonarQube потребует сменить пароль, сделайте это до публикации сервера в интернет.

Нужна ли SonarQube отдельная база PostgreSQL?

Для рабочего сервера да: встроенная база только для знакомства, и перенести из неё данные нельзя. PostgreSQL ставят контейнером рядом или берут у провайдера как управляемую.

Чем SonarQube Community Build отличается от Community Edition?

Это одна бесплатная сборка: SonarSource переименовала Community Edition в Community Build. Образ на Docker Hub называется sonarqube:community.

Почему этому можно верить

Как мы проверяли

Требования из документацииРесурсы, порты и команды сверены с официальной документацией, дата проверки указана.
Всё можно повторитьКоманды и расчёты описаны так, что их повторит любой читатель.
Независимый справочникНе связан с разработчиками приложений и провайдерами и пишет о минусах тоже.

Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Облачные базы данных Таймвеб Клауд, timeweb.cloud/services/dbaas, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация SonarQube Server: установка из образа Docker, docs.sonarsource.com/sonarqube-server/server-installation/from-docker-image/installation-overview, проверено 15 октября 2026.

SBРедакция SelfBase · обновлено 16 октября 2026

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

  • NVMe-диски и гарантированная доля процессора
  • Root-доступ и любой софт, от Docker до игровых серверов
  • Маркетплейс: 91 приложение в один клик
  • Бесплатный перенос проекта силами специалистов
Настройка ядра