Инструменты

Руководство по развертыванию Redash на сервере с использованием Docker

Redash – это популярная платформа для визуализации данных и создания интерактивных отчетов. Однако, установка и настройка Redash на собственном сервере может быть сложной задачей. В этой статье мы расскажем вам о простом и эффективном способе развертывания Redash с использованием Docker. Docker позволяет упаковывать приложения и их зависимости в контейнеры, что делает процесс установки и управления Redash намного проще.

Шаг 1. Аренда облачного сервера

Первым шагом в развертывании Redash с использованием Docker является получение облачного сервера. Облачные провайдеры, такие как, Yandex Cloud , VK Cloud, или Timeweb Cloud, предоставляют возможность арендовать виртуальные серверы в облаке. 

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

После создания сервера в облаке, получите доступ к нему посредством SSH или других предоставленных средств удаленного доступа.

Я собираюсь установить Redash на сервере, предоставляемом провайдером Timeweb Cloud, который является самым бюджетным вариантом. Также при выборе сервера необходимо предустоновить Docker выбрав последний версию Ubuntu.

Далее подключаемся к серверу через командную строку для удобства дальнейшей работы. На macOS это выглядит следующим образом: заходим в терминал и прописываем учетные данные для доступа к серверу. 

Bash
zurab@MacBook-Air ~ % ssh root@157.90.154.201
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@157.90.154.201's password: 
# далее вводим пароль

После входа, мы создаем папку и входим в неё:

Bash
mkdir redash
Bash
cd redash

Не забудьте установить A-запись вашего домена, указывающую на IP-адрес вашего сервера. Это позволит вашему доменному имени разрешаться в соответствующий IP-адрес, обеспечивая корректную работу вашего контейнера Docker и связанных с ним сервисов.


Шаг 2. Устанавливаем базу данных PostgreSQL

Первым шагом перед установкой Redash в Docker будет установка базы данных PostgreSQL. PostgreSQL – это мощная и надежная реляционная база данных, которая является рекомендуемым выбором для Redash.

Bash
docker pull postgres

Далее создаем учетные данные для входа.

Bash
docker run --name my-postgres -p 5432:5432 -e POSTGRES_PASSWORD=yoursecretpassword -d postgres

Команда docker run используется для создания и запуска нового контейнера на основе указанного образа Docker. Давайте прокомментируем каждую часть этой команды:

  • --name my-postgres: Этот флаг задает имя контейнера как “my-postgres”. Имя контейнера используется для идентификации контейнера внутри Docker.
  • -p 5432:5432: Этот флаг устанавливает проброс портов между хостом и контейнером. В данном случае, порт 5432 внутри контейнера (стандартный порт PostgreSQL) пробрасывается на порт 5432 хостовой системы. Это позволяет внешним приложениям подключаться к PostgreSQL внутри контейнера через порт 5432 на хосте.
  • -e POSTGRES_PASSWORD=yoursecretpassword: Этот флаг устанавливает переменную окружения внутри контейнера. В данном случае, переменная окружения POSTGRES_PASSWORD устанавливается со значением “yoursecretpassword”. Это позволяет задать пароль для доступа к PostgreSQL.
  • -d postgres: Эта часть команды указывает на использование образа Docker с именем “postgres”. Образ “postgres” представляет собой официальный образ PostgreSQL, который будет использоваться для создания контейнера.

Таким образом, данная команда создает и запускает контейнер с именем “my-postgres” на основе образа PostgreSQL. Контейнер будет доступен на порту 5432 хостовой системы, а для доступа к PostgreSQL внутри контейнера будет использоваться пароль “yoursecretpassword”. Запоминаем данные от PostgreSQL для следующего шага.

Шаг 3. Создаем файл redash.env

Файл redash.env является файлом окружения, который содержит переменные конфигурации для приложения Redash. Обычно он используется для настройки параметров подключения к базе данных, настройки аутентификации и других параметров приложения.

Чтобы создать файл redash.env, вы можете использовать текстовый редактор или командную оболочку на вашей системе.

Bash
touch redash.env
Bash
nano redash.env

Вот пример содержимого redash.env:

YAML
REDASH_HOST=http://localhost/redash
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
REDASH_COOKIE_SECRET=redash-selfhosted
REDASH_SECRET_KEY=redash-selfhosted
REDASH_DATABASE_URL=postgresql://postgres:yoursecretpassword@157.90.154.201/postgres

В значении REDASH_DATABASE_URL – вводим учетные данные от PostgreSQL

Шаг 4. Создаем файл docker-compose.yml

Для развертывания Redash с использованием Docker необходимо создать файл docker-compose.yml, который определит контейнеры и их конфигурацию.

Bash
touch docker-compose.yml
Bash
nano docker-compose.yml
YAML
# This configuration file is for the **development** setup.
# For a production example please refer to getredash/setup repository on GitHub.
version: "2.2"
x-redash-service: &redash-service
  image:
    redash/redash:preview
  env_file:
    "redash.env"
services:
  server:
    <<: *redash-service
    command: server
    depends_on:
      - redis
    ports:
      - "5000:5000"
      - "5678:5678"
    environment:
      REDASH_WEB_WORKERS: 4
  scheduler:
    <<: *redash-service
    command: scheduler
    environment:
      QUEUES: "celery"
      WORKERS_COUNT: 1
  scheduled_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "scheduled_queries"
      WORKERS_COUNT: 1
  adhoc_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "queries,schemas"
      WORKERS_COUNT: 2
  redis:
    image: redis:latest
    restart: unless-stopped
  nginx:
    image: nginx:latest
    ports:
      - "5001:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always

Убедитесь, что файлы docker-compose.yml и redash.env находятся в одном и том же каталоге.

Шаг 5. Запуск контейнеров и настройка Redash

Теперь, когда файлы docker-compose.yml и redash.env находятся в одном каталоге, мы можем запустить контейнеры и настроить Redash.

Запускаем базу данных…

Bash
docker-compose run --rm server create_db

Запускаем контейнеры в фоновом режиме…

Bash
docker-compose up -d

Ожидаем запуск всех контейнеров и убеждаемся, что у нас все ок!
Переходим на IP-адрес сервера с портом 5000
В моем случае это будет выглядеть следующим образом:

http://157.90.154.201:5000

Я надеюсь что данная статья помогла вам в развертывании Redash на сервере с использованием Docker и Timeweb Cloud. Далее мы рассмотрим процесс настройки проксирования URL-адреса через NGINX к вашему веб-приложению и установку SSL-сертификата.

Шаг 6. Установка NGINX и создание конфигурационного файла для веб-приложения

Если NGINX еще не установлен на вашем сервере, выполните следующие команды:

Bash
sudo apt update
sudo apt install nginx

Далее мы создаем конфигурационный файл NGINX для веб-приложения. Обычно файлы конфигурации хранятся в /etc/nginx/sites-available/. Создайте новый файл, например, redash, с помощью текстового редактора:

Bash
sudo nano /etc/nginx/sites-available/redash

Пример базовой конфигурации:

Bash
server {
    listen 80;
    server_name redash.domain.com www.redash.domain.com;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Шаг 7. Создание символической ссылки и проверка конфигурации и перезапуск NGINX

Создайте символическую ссылку на ваш конфигурационный файл в папке sites-enabled, чтобы активировать его:

Bash
sudo ln -s /etc/nginx/sites-available/redash /etc/nginx/sites-enabled/

Проверьте конфигурацию на наличие ошибок:

Bash
sudo nginx -t

Если конфигурация корректна, перезапустите NGINX:

Bash
sudo systemctl restart nginx

Шаг 8. Установка SSL-сертификата

Для установки SSL-сертификата вы можете воспользоваться Let’s Encrypt. Установите Certbot:

Bash
sudo apt install certbot python3-certbot-nginx

Затем выпустите SSL-сертификат для вашего домена (замените domain.com):

Bash
sudo certbot --nginx -d redash.domain.com -d www.redash.domain.com

Следуйте инструкциям Certbot для завершения установки. Certbot автоматически обновит конфигурацию NGINX, добавив SSL-сертификаты. После завершения, ваши запросы будут обслуживаться через HTTPS.

Перезапустите NGINX, чтобы применить изменения в конфигурации:

Bash
sudo systemctl restart nginx

Теперь веб-приложение Redash будет доступно через HTTPS с помощью NGINX, который также выполняет проксирование запросов к вашему приложению.

После успешной установки SSL-сертификата рекомендуется улучшить читаемость конфигурационного файла NGINX, приведя его к более классическому и структурированному виду, и включить явный редирект на HTTPS.

Снова переходим к конфигурационному файлу

Bash
sudo nano /etc/nginx/sites-available/redash

и меняем содержимое на 

Bash
server {
    listen 80;
    server_name redash.domain.com www.redash.domain.com;
    
    # Redirecting to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name redash.domain.com www.redash.domain.com;

    ssl_certificate /etc/letsencrypt/live/redash.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/redash.domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

После сохранения проверяем конфигурацию на наличие ошибок:

Bash
sudo nginx -t

Если конфигурация корректна, перезапустите NGINX:

Bash
sudo systemctl restart nginx

Шаг 9. Автообновление SSL-сертификата с помощью Certbot.

Для автоматического обновления SSL-сертификатов с помощью Certbot, необходимо настроить задачу cron (планировщик задач) для периодической проверки и обновления сертификатов. Сделать это можно следующим образом:

Откройте файл cron для редактирования:

Bash
sudo crontab -e

Добавьте строку, которая будет запускать Certbot для автоматической проверки и обновления сертификатов. Например, для обновления сертификатов каждый день в 2 часа ночи, вы можете добавить следующую строку:

Bash
0 2 * * * certbot renew

Сохраните файл и закройте редактор.

Эта строка задачи cron вызывает команду certbot renew, которая автоматически проверяет все установленные SSL-сертификаты и обновляет их, если это необходимо. Certbot умеет проверять срок действия сертификатов и обновлять их, если они скоро истекут.

Чтобы убедиться, что задача cron настроена правильно, вы можете выполнить следующую команду:

Bash
sudo certbot renew --dry-run

Эта команда выполняет проверку обновления сертификатов в режиме “сухого запуска”, не внося никаких фактических изменений. Если команда завершится успешно, то задача cron должна быть правильно настроена.

После настройки задачи cron, Certbot будет автоматически проверять и обновлять SSL-сертификаты по расписанию. Вы можете следить за процессом обновления, проверяя логи Certbot:

Bash
sudo tail -f /var/log/letsencrypt/letsencrypt.log

Это позволит вам видеть, когда сертификаты успешно обновлены или если возникнут какие-либо проблемы.

Теперь у вас настроено автоматическое обновление SSL-сертификатов с помощью Certbot через задачу cron, что обеспечит надежную защиту вашего веб-приложения.

Post Scriptum

Помните, что процесс установки и настройки может различаться в зависимости от конкретных требований и конфигурации вашей среды. Всегда обращайтесь к официальной документации Redash, Docker и Timeweb Cloud для получения наиболее актуальных инструкций.

Успехов в визуализации и анализе ваших данных с помощью Redash!

Пред.
Основные типы переменных в статистике: категориальные и количественные, дискретные и непрерывные.

Основные типы переменных в статистике: категориальные и количественные, дискретные и непрерывные.

Содержание Show Категориальные переменныеКоличественные переменныеДискретная

След.
Как использовать API hh.ru для парсинга (сбора) вакансий в области Data Science

Как использовать API hh.ru для парсинга (сбора) вакансий в области Data Science

Содержание Show Общие сведения о процессе извлечения информации (парсинг) о

Вам также может понравиться