Используя Docker вы установите Metabase на сервер Ubuntu 22.04.
Убедитесь, что все обновлено.
sudo apt update
Установите основные пакеты утилит. Некоторые из них могут быть уже установлены.
sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Шаг 1 – Настройка брандмауэра
Первым шагом будет настройка брандмауэра. Ubuntu поставляется с ufw (Uncomplicated Firewall) по умолчанию.
Проверьте, запущен ли брандмауэр.
sudo ufw status
Вы должны получить следующее сообщение.
Status: inactive
Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.
sudo ufw allow OpenSSH
Разрешите также порты HTTP и HTTPS.
sudo ufw allow http sudo ufw allow https
Включение брандмауэра
sudo ufw enable Proceed with operation (y|n)? y
Проверьте статус брандмауэра еще раз.
sudo ufw status
Вы должны увидеть похожий результат.
Status: active To Action From — ——— —— OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Шаг 2 – Установка Docker и Docker Compose
Ubuntu 22.04 поставляется со старой версией Docker. Чтобы установить последнюю версию, сначала импортируйте ключ Docker GPG.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Создайте файл репозитория Docker.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновите список системных репозиториев.
sudo apt update
Установите последнюю версию Docker.
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Проверить, что он запущен.
sudo systemctl status docker ? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-01-05 05:55:23 UTC; 2min 16s ago TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 2116 (dockerd) Tasks: 8 Memory: 22.5M CPU: 252ms CGroup: /system.slice/docker.service ??2116 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
По умолчанию Docker требует привилегий root. Если вы хотите избежать использования sudo
при каждом запуске команды docker
, добавьте свое имя пользователя в группу docker
.
sudo usermod -aG docker $(whoami)
Вам нужно будет выйти из сервера и снова войти под тем же пользователем, чтобы включить это изменение, или использовать следующую команду.
su - ${USER}
Подтвердите, что ваш пользователь добавлен в группу Docker.
groups navjot wheel docker
Шаг 3 – Создание файла Docker Compose
Создайте каталог для Metabase.
mkdir /metabase
Создайте и откройте для редактирования файл Docker compose.
nano docker-compose.yml
Вставьте в него следующий код.
version: '3.9' services: metabase: image: metabase/metabase:latest container_name: metabase hostname: metabase volumes: - /dev/urandom:/dev/random:ro ports: - 3000:3000 environment: MB_DB_TYPE: postgres MB_DB_DBNAME: metabase MB_DB_PORT: 5432 MB_DB_USER_FILE: /run/secrets/db_user MB_DB_PASS_FILE: /run/secrets/db_password MB_DB_HOST: postgres env_file: - metabase.env healthcheck: test: curl --fail -I http://localhost:3000/api/health || exit 1 interval: 15s retries: 5 start_period: 10s timeout: 5s networks: - metanet1 depends_on: - postgres secrets: - db_password - db_user postgres: image: postgres:latest container_name: postgres hostname: postgres environment: POSTGRES_USER_FILE: /run/secrets/db_user POSTGRES_DB: metabase POSTGRES_PASSWORD_FILE: /run/secrets/db_password healthcheck: test: ['CMD', 'pg_isready', '-U', 'postgres'] volumes: - ./postgresql:/var/lib/postgresql/data networks: - metanet1 secrets: - db_password - db_user networks: metanet1: driver: bridge secrets: db_password: file: db_password.txt db_user: файл: db_user.txt
Сохраните файл, нажав Ctrl + X и введя Y, когда появится запрос.
Приведенный выше файл Docker compose берет последнюю версию образа Metabase Docker и открывает приложение через порт 3000. Оно подключается к образу PostgreSQL. Имя пользователя и пароль базы данных PostgreSQL хранятся в файлах db_user.txt
и db_password.txt
соответственно.
Создайте и откройте для редактирования файл db_user.txt
.
nano db_user.txt
Вставьте в него свое имя пользователя и сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте и откройте файл db_password.txt
для редактирования.
nano db_password.txt
Вставьте в него свой пароль и сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Шаг 4 – Настройка файлов окружения и запуск
Сгенерируйте ключ шифрования с помощью следующей команды.
openssl rand -base64 32 aWPk99bIjkG7NvWYVqR5NIAojhW1Idk0OvTH1xWVMbY=
Копируйте ключ для использования позже.
Создайте и откройте для редактирования файл metabase.env
.
nano metabase.env.
Вставьте в него следующий код. Вставьте сгенерированный вами секретный ключ в переменную MB_ENCRYPTION_SECRET_KEY
. Заполните домен вашей Metabase, включая протокол https. Заполните данные SMTP, используя любого провайдера, которого вы используете. Мы используем Amazon SES. Переменная MB_PASSWORD_COMPLEXITY
установлена в значение strong, что означает, что ваш пароль Metabase должен состоять минимум из 8 символов, 2 строчных, 2 прописных, 1 цифры и 1 специального символа.
MB_SITE_URL=https://metabase.example.com MB_SITE_NAME="Howtoforge" [email protected] [email protected] MB_EMAIL_FROM_NAME=Howtoforge MB_EMAIL_SMTP_HOST=email-smtp.us-west-2.amazonaws.com MB_EMAIL_SMTP_USERNAME=AWS_USERID MB_EMAIL_SMTP_PASSWORD=AWS_KEY MB_EMAIL_SMTP_PORT=587 MB_EMAIL_SMTP_SECURITY=starttls MB_ENCRYPTION_SECRET_KEY=aWPk99bIjkG7NvWYVqR5NIAojhW1Idk0OvTH1xWVMbY= MB_ANON_TRACKING_ENABLED=false MB_APPLICATION_NAME=Howtoforge Metabase MB_PASSWORD_COMPLEXITY=strong
Сохраните файл, нажав Ctrl + X и введя Y, когда появится запрос.
Запустите контейнер Docker.
docker compose up -d
Вы можете посмотреть состояние контейнеров с помощью следующей команды.
watch docker ps
Вы получите аналогичный результат. Подождите, пока статус обоих контейнеров станет здоровым, а затем нажмите Ctrl + C, чтобы выйти из экрана.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15698ae2de6a metabase/metabase:latest "/app/run_metabase.sh" 2 минуты назад Up 2 минуты (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp metabase ee2d03dc3a00 postgres:latest "docker-entrypoint.s..." 2 минуты назад Up 2 минуты (healthy) 5432/tcp postgres
Шаг 5 – Установка Nginx
Ubuntu 22.04 поставляется со старой версией Nginx. Чтобы установить последнюю версию, необходимо загрузить официальный репозиторий Nginx.
Импортировать ключ подписи Nginx.
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] http://nginx.org/packages/ubuntu "lsb_release -cs" nginx" sudo tee /etc/apt/sources.list.d/nginx.list
Обновление системных репозиториев.
sudo apt update
Установка Nginx.
sudo apt install nginx
Проверка установки.
nginx -v nginx version: nginx/1.22.1
Запуск сервера Nginx.
sudo systemctl start nginx
Проверить статус сервера.
sudo systemctl status nginx ? nginx.service – nginx – high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-01-05 07:21:46 UTC; 1s ago Docs: https://nginx.org/en/docs/ Process: 13197 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 13198 (nginx) Tasks: 3 (limit: 2237) Memory: 2.6M CPU: 7ms CGroup: /system.slice/nginx.service ??13198 «nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf» ??13199 «nginx: worker process« “” »« “” »« “” »« “” »« “” »« “” »« “” »« “” »« “” »« «» ??13200 «nginx: worker process« “” »« “” »« “” »« “” »« “” »« “” »« “” »« “” »« “” »« «» Jan 05 07:21:46 metabase systemd1: Starting nginx – high performance web server… Jan 05 07:21:46 metabase systemd1: Started nginx – high performance web server.
Шаг 6 – Установка SSL
Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot из репозитория Ubuntu или взять последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd актуальна. Убедитесь, что ваша версия Snapd обновлена.
sudo snap install core sudo snap refresh core
Установите Certbot.
sudo snap install --classic certbot
Используйте следующую команду для обеспечения запуска команды Certbot, создав символическую ссылку на каталог /usr/bin
.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Запустите следующую команду для генерации SSL-сертификата.
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d metabase.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/metabase.example.com
в каталог на вашем сервере.
Сгенерировать сертификат группы Диффи-Хеллмана.
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Выполните пробный запуск процесса, чтобы проверить, нормально ли работает обновление SSL.
sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат обновится автоматически.
Шаг 7 – Настройка Nginx
Откройте файл /etc/nginx/nginx.conf
для редактирования.
sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X когда появится запрос.
Создайте и откройте файл /etc/nginx/conf.d/metabase.conf
для редактирования.
sudo nano /etc/nginx/conf.d/metabase.conf
Вставьте в него следующий код.
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name metabase.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name metabase.example.com; access_log /var/log/nginx/metabase.access.log; error_log /var/log/nginx/metabase.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/metabase.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/metabase.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/metabase.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # получение OCSP записей из URL в ssl_certificate и их кэширование ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:3000; } }
После завершения работы сохраните файл, нажав Ctrl + X, когда появится запрос.
Проверьте синтаксис файла конфигурации Nginx.
sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите сервер Nginx.
sudo systemctl restart nginx
Шаг 8 – Установка и доступ к Metabase
Откройте URL https://metabase.example.com для запуска мастера установки Metabase.
Нажмите кнопку Let’s get started для перехода к следующему шагу. На следующей странице будет перечислено несколько шагов. Выберите язык и нажмите Next, чтобы продолжить.
Введите данные администратора Metabase.
Далее вам будет предложено добавить данные в метабазу для изучения. Вы можете добавить данные сейчас или сделать это позже.
Нажмите кнопку Я добавлю данные позже, чтобы продолжить.
Снимите галочку Разрешить Metabase анонимно собирать события использования и нажмите кнопку Закончить, чтобы завершить процесс.
Нажмите кнопку Привести меня в Metabase, чтобы запустить панель Metabase.
Вы можете начать использовать Metabase сейчас.
Шаг 9 – Резервное копирование
Если вы хотите создать резервную копию базы данных Metabase, используйте следующую команду.
docker exec -t postgres pg_dumpall -c -U navjot > dump_"date %m-%Y"_"%H_%M_%S".sql
Замените navjot
на имя пользователя вашей базы данных, а postgres
на имя вашего контейнера докера для PostgreSQL.
Для восстановления базы данных используйте следующую команду.
cat dump_*.sql | docker exec -i your-db-container psql -U navjot
Шаг 10 – Обновление
Обновление Metabase требует нескольких шагов. Первым шагом будет создание резервной копии базы данных Metabase с помощью команды из шага 9.
Затем переключитесь на каталог.
cd /opt/metabase
Потяните последние образы контейнеров для Mastodon.
docker compose pull metabase/metabase:latest
Внесите любые изменения в docker-compose.yml
, если хотите.
Перезапустите контейнеры Mastodon.
docker compose up -d
Вышеприведенные инструкции являются общими инструкциями по обновлению. Всегда проверяйте GitHub выпускает страницу Mastodon. для поиска специфических задач и команд обновления между версиями, чтобы все прошло гладко.
Заключение
На этом мы завершаем наше руководство по установке Metabase на сервер Ubuntu 22.04. Если у вас есть вопросы, задавайте их в комментариях ниже.
Комментарии (0)