Главная/Разработка/SonarQube
Установка SonarQube на свой сервер
Установка SonarQube на свой сервер упирается не в compose-файл, а в настройки ядра Linux: без параметра vm.max_map_count не ниже 524288 контейнер падает при старте. SonarQube проверяет исходный код на ошибки, уязвимости и «запахи кода» и показывает отчёт на порту 9000. Бесплатная сборка называется Community Build, образ sonarqube:community, и отдельная база PostgreSQL ей нужна уже для рабочей установки.
Ответ за 30 секунд
Перед запуском задайте в системе vm.max_map_count не ниже 524288, возьмите образ sonarqube:community и подключите внешнюю PostgreSQL. Для старта разумно 2 ядра и 4 ГБ. После первого входа admin/admin смените пароль: SonarQube сам требует это, но порт 9000 лучше сразу не публиковать.
Выберите конфигурацию с запасом по памяти: SonarQube держит поисковый движок внутри.
Какие параметры ядра нужны SonarQube перед запуском9000порт веб-интерфейса SonarQube
524288минимум vm.max_map_count
adminлогин и пароль первого входа
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
Три ответа, и калькулятор подберёт готовую конфигурацию
03 · 1 мин
Установка SonarQube через Docker Compose с PostgreSQL#
- Поставьте Docker с плагином Compose и задайте параметры ядра из таблицы выше.
- Создайте compose-файл с SonarQube и PostgreSQL. Пароль базы замените на свой.
- Запустите
docker compose up -dи подождите минуту-две: первый запуск разворачивает схему базы. - Откройте
http://IP-сервера:9000, войдите как admin с паролем admin и сразу задайте новый. - Создайте проект и токен в разделе 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.
Запустите свой сервер за пару минут
Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.
- NVMe-диски и гарантированная доля процессора
- Root-доступ и любой софт, от Docker до игровых серверов
- Маркетплейс: 91 приложение в один клик
- Бесплатный перенос проекта силами специалистов