Добрый день! Сегодня мы рассмотрим процесс раскатки NOC Project при помощи gufo-thor на виртуальном сервере.

Начнем с необходимого нам программного обеспечения:

  1. Серверное ПО. Лично я для продового варианта выбирал Ubuntu 24.04.3 LTS серверную версию. Собственно, в лабораторных условиях мы будет так же разворачивать проект на этой ОС.

  2. На операционную систему нам будет необходимо установить следующие пакеты: Docker, Python3.8+, Docker Compose plugin

Первоначальная настройка и установка ОС

На этапе установки, нам будет предлагать установить различные дополнительные сервисы. Лично я предпочитаю ставить голую ОС включив на этапе установки только openSSH server. Все остальное мы установим в процессе деплоя

Собственно, после того, как мы с вами попали на сервер после установки ОС мы делаем максимально стандартные действия:

sudo apt update && sudo apt upgrade -y

После того, как у нас с вами все пакеты проверены и были установлены можем приступать непосредственно к самой подготовке сервера

Установка необходимого ПО на сервер

Итак, мы готовы к тому, что нам необходимо установить на сервер нужные компоненты системы. Начнем с простого - установим Python3.12 и Python3.12 venv

sudo apt-get install python3.12 pyhton3.12-venv

Скорее всего, если вы брали свежий образ, как и я, то у вас уже будет стоять Python3.12, но, проверить никогда не будет лишним. Устанавливаем venv и идем далее. Следующим на очереди у нас будет докер

Для установки докера нам надо будет напечатать некоторое количество текста (ну или просто скопируйте его отсюда или с официального сайта: https://docs.docker.com/engine/install/ubuntu/ )

Для начала проверим установку ca-certificates и curl:

sudo apt-get install ca-certificates curl

Далее мы с вами создаем директорию для ключей apt:

sudo install -m 0755 -d /etc/apt/keyrings

Теперь нам необходимо скачать ключи для репозитория docker и поместить их в соответствующую директорию:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

Далее делаем ключи доступными для чтения всем пользователям системы:

sudo chmod a+r /etc/apt/keyrings/docker.asc

Теперь нам с вами необходимо добавить репозиторий docker в apt-get при помощи вот такого куска текста (я лично советую вставлять каждую строку отдельно, потому что не всегда получается так, что при переносе на ВМ появляется лишний энтер, который ломает ввод команды) :

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

И теперь нам необходимо сделать так, чтобы apt-get увидел новый репозиторий. Для этого выполним команду:

sudo apt-get update

Теперь выполним установку компонентов Docker (можно попробовать выполнить установку только конкретных docker и docker-compose-plugin, но я, честно говоря, не до конца еще разобрался в механике работы контейнеров, поэтому следую инструкции издателя ПО):

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Настало время установки непосредственно Gufo-thor на сервер и подготовке контейнера

Следуя официальному мануалу, расположенному по адресу: https://docs.gufolabs.com/gufo_thor/ выполним с вами следующий команды:
1. Активируем с вами Python venv. Делается это следующим образом:

sudo su
python3.12 -m venv .
. ./bin/activate

После этого у вас должно ваше приглашение командной строки должно выглядеть следующим образом:

(root) root@noc-srv:

Собственно дополнительное "(root)" в скобочках говорит о том, что вы провалились в venv
Приступим к следующему шагу, а именно к скачиванию и запуску скрипта установки gufo-thor:

curl https://sh.gufolabs.com/thor | sh

Если вы все сделали правильно, то вы увидите процесс скачивания контейнеров:

Подождите завершения работы скрипта. Да, контейнер с именем root-migrate-1 иногда может выполнять свои процессы по 5 минут, это нормальное явление, не стоит обращать на это свое внимание, все в порядке.

После завершения работы скрипта мы с вами увидим следующую картину:

Если вы ставили это на декстопную версию линукса, то у вас просто откроется в браузере админ панель и вы уже можете приступать к конфигурации самого ПО. Однако, если вы, как и я, ставили версию серверную версию и вам нужен доступ с другого устройства к админ-панели, то, вам придется поменять еще несколько настроек, которые будут приведены ниже.

Доступ к админ панели с рабочего компьютера после инсталляции сервиса

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

Как вы можете увидеть наш контейнер пробрасывает веб-панель через localhost на 127.0.0.1
Для того, чтобы исправить это нам нужно будет сделать следующее:

1: не выходя из venv даем команду

gufo-thor stop

Мы с вами остановим наши работающие контейнеры, поскольку нам нужно будет их пересоздать
Далее, после того, как контейнеры остановлены в venv пишем exit и выходим в основную рабочую среду сервера

Заходим обратно в root при помощи команды:

sudo su

И меняем стандартную рабочую директорию на корневую при помощи команды:

cd

Далее нам с вами необходимо найти файл thor.yml, который будет лежать в этой же директории

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

ip a

В результирующей нашей с вами команды необходимо найти IP адрес вашего сервера (в моем случае это будет адрес 192.168.179.129)

Зайдем с вами в thor.yml и сконфигурируем некоторые настройки:

Конкретно нам нужно будет добавить с вами в блок web: строку address:
Это указание, куда контейнер будет пробрасывать веб-панель нашего приложения
Итоговая конфигурация будет выглядеть как-то так:

version: "1.0"
noc:
  tag: master
  installation_name: Unconfigured Installation
  theme: noc
expose:
  domain_name: go.getnoc.com
  web:
    address: put.here.server.ip
    port: 443
  open_browser: false
services: [web, card, shell]

Это для тех, кто не хочет добавлять параметры вручную, поскольку yml очень чувствителен к пробелам. Так же вы можете заменить порт в строке port: на любой, который вам больше нравится. По умолчания оно висит на порт 32777, в тестовой среде я его менять не стал. Так же вы можете заменить доменное имя на произвольное в строке domain_name: , если это необходимо для вас

Прошу обратить внимание, что вход на админ панель возможен ТОЛЬКО по доменному имени. По IP адресу зайти не удастся

После конфигурации thor.yml нам необходимо создать контейнеры заново, для этого мы с вами опять заходим в venv

. ./bin/activate

И делаем команду для создания контейнеров:

gufo-thor up

Параллельно с этим заходим в файл хостов вашего рабочего компьютера:

Для linux:

sudo nano /etc/hosts

Для windows:

Открываем блокнот при помощи кнопки "открыть от имени администратора", нажимаем кнопку "файл", "открыть" и идем по пути: C:\Windows\System32\drivers\etc
Обязательно поставьте в нижней части окна All Files иначе у вас не покажет нужный вам файл

Делаем запись в хостах, в моем случае получилось вот так:

После этих манипуляций веб-панель будет доступна с вашего рабочего компьютера. Поздравляю!

Комментарии (2)


  1. 13werwolf13
    06.09.2025 14:22

    кликхаус, монга, постгря, кафка, консул.. нет ощущения что в noc уже напихивают всё подрят лишь бы запихнуть побольше всякого?


    1. Gansterito
      06.09.2025 14:22

      У них не появилось еще образа для Virtual Appliance? Может быть автор сделает доброе дело и сделает свой образ для общего ознакомительного пользования?