Redash на Ubuntu 24.04: пошаговая установка
Когда в команде несколько источников данных — рабочая PostgreSQL, ClickHouse для логов, MySQL от старого проекта — а аналитику всё равно приходится собирать вручную через psql и Excel, самое время поставить инструмент, который умеет визуализировать SQL-запросы и делиться результатом одной ссылкой. Redash закрывает именно эту нишу: пишете запрос, получаете график, кладёте его на общий дашборд. Разберём пошаговую установку Redash на Ubuntu 24.04 через Docker Compose — единственный способ, который официально поддерживает сам проект.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Redash и зачем он вам
Redash — open-source платформа для визуализации запросов к базам данных. Идея простая: вы пишете SQL (или используете запросник для источников без SQL, вроде Google Analytics), Redash превращает результат в таблицу, график или счётчик, а несколько таких визуализаций собираются в дашборд, который можно расшарить публичной ссылкой или отправить по расписанию в Slack и на почту. Из коробки поддерживаются PostgreSQL, MySQL, ClickHouse, MongoDB, Elasticsearch, BigQuery и ещё несколько десятков источников.
От Metabase, о котором мы писали в статье про установку Metabase на Ubuntu 24.04, Redash отличается фокусом на SQL: Metabase старается спрятать язык запросов за конструктором для нетехнических пользователей, Redash изначально сделан для аналитиков и разработчиков, которые сами пишут запросы и хотят быстро превратить их в наглядную картинку с шарингом. Если команда состоит из людей, которые SQL не боятся, а хотят просто не пересобирать один и тот же дашборд руками каждую неделю — это к Redash.
Официально проект поддерживает установку только через Docker и Docker Compose — старый setup.sh для голого Ubuntu из ранних версий Redash сейчас не поддерживается и на актуальных релизах ломается на зависимостях Python. Ubuntu 24.04 LTS в этой связке нужна только как хост-система для Docker: длинный цикл поддержки и предсказуемое поведение systemd делают её удобной базой, вся логика Redash при этом живёт в контейнерах. Под тестовый запуск хватит 1 ядра и 2 ГБ RAM, но реальная работа нескольких аналитиков с тяжёлыми запросами к ClickHouse или большим таблицам PostgreSQL требует минимум 2 ядра и 4 ГБ RAM — контейнеров пять штук, и Redis с воркером тоже едят память. MAATRIX разворачивает VPS на Ubuntu 24.04 в нужной локации с оплатой картой российского банка, СБП, криптовалютой или токеном MAAT, без иностранной карты.
Требования и подготовка сервера
Перед установкой обновите систему и убедитесь, что порты 80/443 свободны — они понадобятся под Nginx перед Redash:
apt update && apt upgrade -y
apt install -y curl git ca-certificates
Redash в Docker Compose поднимает пять сервисов: postgres (хранит и метаданные Redash, и, при желании, служит источником для аналитики), redis (очередь задач для Celery), server (веб-интерфейс и API), scheduler вместе с worker (выполняют запросы асинхронно, в том числе по расписанию) и nginx (обычно поставляется вместе, но мы заменим его на системный Nginx с SSL, чтобы не разбираться с двумя прокси-слоями сразу). Проверьте актуальное свободное место на диске — под пять образов и тома PostgreSQL с историей запросов закладывайте от 10 ГБ сверх системы:
df -h /
free -h
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверШаг 1: Docker и Docker Compose
Если Docker ещё не стоит, разверните его с нуля — подробный разбор есть в статье установка Docker на Ubuntu 24.04. Кратко, официальный способ через репозиторий Docker:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker compose version
Последняя команда должна вывести версию Compose v2 — она идёт как плагин docker compose (без дефиса), именно её используют актуальные инструкции Redash. Если вывод пуст, значит стоит только устаревший docker-compose v1 отдельным пакетом — его лучше удалить и поставить плагин заново через официальный скрипт, иначе часть команд ниже не сработает.
Создайте отдельный каталог под конфигурацию и данные:
mkdir -p /opt/redash && cd /opt/redash
Шаг 2: конфигурация окружения и docker-compose.yml
Redash требует два секретных значения в переменных окружения — SECRET_KEY для шифрования данных подключений к источникам и REDASH_COOKIE_SECRET для подписи сессионных cookie. Сгенерируйте их случайными строками и не используйте примеры из документации в продакшене:
cat > .env <<'EOF'
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
POSTGRES_PASSWORD=сложный-пароль-postgres
REDASH_DATABASE_URL=postgresql://postgres:сложный-пароль-postgres@postgres/postgres
REDASH_COOKIE_SECRET=$(openssl rand -hex 32)
REDASH_SECRET_KEY=$(openssl rand -hex 32)
EOF
Обратите внимание: heredoc с 'EOF' в кавычках не подставит $(openssl rand -hex 32) автоматически — если хотите сразу получить готовые значения, уберите кавычки у EOF или сгенерируйте строки заранее и вставьте вручную. Пароль PostgreSQL из POSTGRES_PASSWORD должен совпадать со значением в REDASH_DATABASE_URL — это частая причина, по которой контейнер server падает при первом запуске.
Дальше — сам docker-compose.yml. Возьмите за основу актуальную структуру с сайта проекта и адаптируйте под пять сервисов без встроенного Nginx:
services:
server:
image: redash/redash:latest
command: server
depends_on:
- postgres
- redis
ports:
- "127.0.0.1:5000:5000"
environment:
REDASH_WEB_WORKERS: 4
env_file: .env
restart: unless-stopped
scheduler:
image: redash/redash:latest
command: scheduler
depends_on:
- server
env_file: .env
restart: unless-stopped
worker:
image: redash/redash:latest
command: worker
depends_on:
- server
env_file: .env
restart: unless-stopped
redis:
image: redis:7-alpine
restart: unless-stopped
postgres:
image: postgres:15-alpine
env_file: .env
volumes:
- redash_postgres:/var/lib/postgresql/data
restart: unless-stopped
volumes:
redash_postgres:
Порт сервера server прокинут только на 127.0.0.1:5000 — наружу он не смотрит принципиально, доступ будет исключительно через Nginx с SSL, который настроим ниже. scheduler и worker не публикуют портов вообще: это фоновые процессы, которые общаются с server и postgres через внутреннюю docker-сеть.
Шаг 3: инициализация базы, запуск и первый вход
Прежде чем поднимать все сервисы, нужно создать схему базы данных Redash — она не создаётся автоматически при первом старте, в отличие от некоторых аналогов:
docker compose run --rm server create_db
Команда поднимет временный контейнер, выполнит миграции в PostgreSQL и завершится — сама база postgres при этом должна быть уже доступна, Compose поднимет её как зависимость автоматически. После успешного завершения запустите весь стек:
docker compose up -d
docker compose ps
docker compose logs -f server
В логе дождитесь строки о запуске gunicorn на порту 5000 — обычно это занимает 15-30 секунд. Проверьте локально, что сервер отвечает:
curl -I http://127.0.0.1:5000/ping
Ответ 200 OK подтверждает, что сервер жив и готов принимать запросы через прокси. При первом открытии интерфейса Redash попросит создать учётную запись администратора — это происходит один раз и сразу через веб, отдельной команды не нужно.
Шаг 4: Nginx, SSL и подключение источника данных
Открывать порт 5000 наружу небезопасно — поставьте перед Redash системный Nginx, конфигурацию reverse proxy на Ubuntu 24.04 мы разбирали в статье Nginx как reverse proxy:
server {
listen 80;
server_name bi.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
}
}
Таймаут увеличен до 300 секунд намеренно: тяжёлые запросы к ClickHouse или агрегации по большим таблицам могут выполняться дольше стандартной минуты, и без правки браузер получит обрыв соединения раньше, чем Redash вернёт результат. Выпустите сертификат и закройте прямой доступ к контейнеру через firewall — базовую настройку UFW разбирали в статье про фаервол UFW на Ubuntu 24.04:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d bi.example.com
ufw allow 'Nginx Full'
ufw allow OpenSSH
ufw enable
Порт 5000 отдельно закрывать в UFW не обязательно — он и так проброшен только на 127.0.0.1 на уровне Docker Compose и снаружи сервера недоступен физически.
После входа в интерфейс подключите первый источник данных: раздел Settings → Data Sources → New Data Source, выберите тип (PostgreSQL, ClickHouse, MySQL и так далее) и укажите параметры подключения. Если источник — внешняя база, а не контейнер postgres из этого же compose-файла, убедитесь, что она принимает подключения с IP сервера, а не только с localhost. Дальше создайте запрос в разделе Queries, добавьте к нему визуализацию (график, счётчик, таблицу) и соберите несколько таких визуализаций на дашборде через Dashboards → New Dashboard. Готовый дашборд можно расшарить публичной ссылкой (Share → Publish) или настроить рассылку по расписанию на почту — это отдельная настройка в каждом запросе через вкладку Schedule.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Почему docker compose run server create_db падает с ошибкой подключения к базе?
Обычно потому что пароль в POSTGRES_PASSWORD не совпадает со значением в REDASH_DATABASE_URL внутри .env, либо контейнер postgres ещё не успел полностью подняться при первом запуске — повторите команду через несколько секунд.
Можно ли использовать внешнюю управляемую PostgreSQL вместо контейнера?
Да, просто укажите её адрес в REDASH_DATABASE_URL и уберите сервис postgres из compose-файла — но учтите, что это будет служебная база самого Redash, а не источник для аналитических запросов, их лучше не смешивать.
Нужен ли отдельно контейнер nginx из официального compose-файла?
Нет, если вы ставите системный Nginx с SSL на хосте — так проще управлять сертификатами через certbot и не городить два прокси-слоя подряд.
Сколько памяти реально нужно на несколько активных пользователей?
Для теста хватит 2 ГБ, но пять контейнеров плюс параллельные тяжёлые запросы к аналитическим базам быстро упираются в лимит — на реальную команду закладывайте от 4 ГБ RAM и следите за docker stats, особенно за контейнером worker.
Как обновить Redash до новой версии?
Смените тег образа redash/redash в compose-файле на нужную версию, выполните docker compose pull, затем docker compose run --rm server manage db upgrade для миграций и docker compose up -d для перезапуска — пропуск шага с миграцией часто приводит к ошибкам схемы после обновления.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →