В данном разделе приведены сведения по подготовке операционной системы к установке контейнеризированной Платформы НЕЙРОСС.
Вы можете использовать имеющийся готовый сервер, в том числе с другими контейнерами приложений. Для вашего удобства подготовлена базовая инструкция установки ОС Ubuntu Server [Установка ОС Ubuntu Server 22.04 LTS].
Общие сведения
Для работы Платформы НЕЙРОСС в контейнеризированной модели требуются предварительная установка Docker — платформы для разработки, развёртывания и запуска приложений в контейнерах, а также Docker Compose — инструмента оркестрации докер-контейнеров (запуска нескольких Докер-сервисов как единого изолированного приложения).
Рекомендуемые версии Docker и Compose
Docker: 23.0.4 или выше
Docker Compose: v2.20.3 или выше
Также в рамках скрипта устанавливается Cockpit для упрощения монтирования накопителей и выполнения прочих действий по администрированию сервера.
Установка необходимого окружения
Вы можете установить Docker и Docker Compose требуемых версий самостоятельно, а также использовать уже имеющийся сервер с установленными приложениями. Для вашего удобства специалисты компании ИТРИУМ подготовили скрипт автоматической установки требуемых компонентов.
ВАЖНО
Для работы скрипта требуется доступ в интернет, так как в коде «зашиты» ссылки на дистрибутивы из публичных репозиториев. Рекомендуется выполнять первичную настройку сервера при наличии доступа в интернет. При невозможности подключения к сети рекомендуем изменить пути загрузки пакетов на локальные или самостоятельно выполнить установку требуемых пакетов.
Скрипт поддерживает следующие семейства операционных систем:
- Ubuntu, Debian
- AstraLinux
- RHEL (CentOS, RedHat, Fedora)
Даже в рамках одного семейства ОС на различных версиях инсталляция может выполняться немного по-разному. Код скрипта оптимизирован для целевых версий ОС:
- Ubuntu Server 20.04 LTS, Ubuntu Server 22.04 LTS
- Astra Linux Special Edition 1.7, 1.8
Вам потребуется:
- Сформировать файл скрипта и поместить его на целевой сервер.
- Запустить скрипт на выполнение.
Создание файла скрипта
Вы можете запросить готовый файл скрипта у специалистов компании ИТРИУМ. Также вы можете сформировать его самостоятельно по инструкции ниже.
Скопируйте код ниже и сохраните в файл формата SH, например prepare-os-docker.sh.
#!/bin/bash
set -e
# debian packages
add_docker_debian_apt_repo() {
# for ubuntu or debian adding actual repo based on os-release
# for astra adding fixed repo for debian buster
. /etc/os-release
lsb_dist=""
lsb_version=""
case $ID in
"debian" | "ubuntu")
lsb_dist="$ID"
lsb_version=$(lsb_release -cs)
;;
"astra")
lsb_dist="debian"
lsb_version="buster"
;;
*)
# this should not be the case
exit 1
;;
esac
DOCKER_APT_REPO="deb [arch=amd64] https://download.docker.com/linux/$lsb_dist $lsb_version stable"
echo "[docker] adding repo $DOCKER_APT_REPO to /etc/apt/sources.list"
COMMENT_TEXT="repo to install docker appended by neyross-platform installer"
if [ $(grep -c "$COMMENT_TEXT" /etc/apt/sources.list) -eq 1 ]
then
echo "[docker] repo to install docker already added to sources.list by previous run of installer; do nothing"
else
echo "[docker] this is first run; adding repo to install docker..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
# $COMMENT_TEXT
# repo to install docker
$DOCKER_APT_REPO
EOT
fi
}
ensure_docker_debian() {
if command -v docker > /dev/null 2>&1; then
echo "[docker] already installed, do nothing"
else
# standart way with software-properties-common and apt-add-repository not working on Astra
echo "[docker] not installed, installing manually, updating apt..."
sudo apt update
echo "[docker] installing additional packages..."
sudo apt install -y apt-transport-https ca-certificates curl gnupg2
echo "[docker] adding gpg key"
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "[docker] adding docker apt repo..."
add_docker_debian_apt_repo
echo "[docker] running update..."
sudo apt update
echo "[docker] installing docker-ce..."
sudo apt install -y docker-ce
echo "[docker] done; starting and enabling docker service"
sudo systemctl start docker
sudo systemctl enable docker
fi
docker -v
docker compose version
}
ensure_cockpit_debian() {
if command -v cockpit-bridge > /dev/null 2>&1; then
echo "[cockpit] already installed, do nothing"
else
echo "[cockpit] not found; installing it with plugins"
sudo apt update
sudo apt install -y cockpit cockpit-system cockpit-bridge
echo "[cockpit] done; preparing cockpit.conf"
COCKPIT_CONF_CONTENT=$(cat <<-END
[WebService]
AllowUnencrypted = true
END
)
echo "$COCKPIT_CONF_CONTENT" > /etc/cockpit/cockpit.conf
sudo chgrp cockpit-ws /etc/cockpit/cockpit.conf
echo "[cockpit] done; enabling all network interfaces for cockpit JIC"
GLOBALLY_MANAGED_DEVICES_CONTENT=$(cat <<-END
[keyfile]
unmanaged-devices=none
END
)
echo "$GLOBALLY_MANAGED_DEVICES_CONTENT" > /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
sudo systemctl restart NetworkManager
echo "done; starting and enabling cockpit service"
sudo systemctl start cockpit
sudo systemctl enable cockpit
echo "[cockpit] done with cockpit"
fi
}
install_debian_packages() {
echo "installing ubuntu \ debian packages;"
ensure_docker_debian
ensure_cockpit_debian
}
# end debian packages
# astra packages
ensure_astra_repositories() {
COMMENT_TEXT="added by neyross-platform installer"
if [ $(grep -c "$COMMENT_TEXT" /etc/apt/sources.list) -eq 1 ]
then
echo "repos already added to sources.list by previous run of installer; do nothing"
else
echo "this is first run; adding repos for extended astra..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
# $COMMENT_TEXT
# all astra repos
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce backports
EOT
fi
}
install_astra_packages() {
echo "installing astra packages;"
ensure_astra_repositories
ensure_docker_debian
ensure_cockpit_debian
}
# end astra packages
# rhel packages
ensure_docker_rhel() {
if command -v docker > /dev/null 2>&1; then
echo "docker already installed, do nothing"
else
echo "docker not installed, using script from get.docker.com..."
curl -fsSL https://get.docker.com -o /tmp/install-docker.sh
sh /tmp/install-docker.sh
echo "done installing docker; starting and enabling systemd service..."
systemctl start docker
systemctl enable docker
echo "done with docker"
fi
docker -v
docker compose version
}
ensure_cockpit_rhel() {
if command -v cockpit-bridge > /dev/null 2>&1; then
echo "[cockpit] already installed, do nothing"
else
echo "[cockpit] not found; installing it with plugins"
sudo yum update
sudo yum install cockpit
echo "[cockpit] done; preparing cockpit.conf"
COCKPIT_CONF_CONTENT=$(cat <<-END
[WebService]
AllowUnencrypted = true
END
)
echo "$COCKPIT_CONF_CONTENT" > /etc/cockpit/cockpit.conf
sudo chgrp cockpit-ws /etc/cockpit/cockpit.conf
echo "[cockpit] done; enabling all network interfaces for cockpit JIC"
GLOBALLY_MANAGED_DEVICES_CONTENT=$(cat <<-END
[keyfile]
unmanaged-devices=none
END
)
echo "$GLOBALLY_MANAGED_DEVICES_CONTENT" > /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
sudo systemctl restart NetworkManager
echo "done; starting and enabling cockpit service"
sudo systemctl enable --now cockpit.socket
sudo systemctl start cockpit
sudo systemctl enable cockpit
echo "done; enabling FW rules"
sudo firewall-cmd --permanent --add-service=cockpit
sudo firewall-cmd --reload
echo "[cockpit] done with cockpit"
fi
}
# NOT TESTED YET
install_rhel_packages() {
echo "installing RHEL packages"
ensure_docker_rhel
ensure_cockpit_rhel
}
# end rhel packages
check_docker_version() {
required_version="23.0.0"
if ! command -v docker &>/dev/null; then
echo "docker is not installed" >&2
return
fi
current_version=$(docker --version | awk '{print $3}')
if [[ "$(printf '%s\n' "$required_version" "$current_version" | sort -V | head -n1)" != "$required_version" ]]; then
echo "the current version of Docker (${current_version}) is less than the required version (${required_version})." >&2
exit 1
fi
}
install_packages() {
if [ -f "/etc/os-release" ]; then
. /etc/os-release
echo "checking for docker availability"
check_docker_version
echo "installing system packages; OS ID is $ID, OS ID_LIKE is $ID_LIKE"
case $ID in
"debian" | "ubuntu")
install_debian_packages
;;
"astra")
install_astra_packages
;;
"centos" | "rhel" | "fedora")
install_rhel_packages
;;
# Add cases for other distributions and call the appropriate installation functions
*)
echo "Unsupported distribution, please contact Itrium for support in adding your distribution. Please provide output of /etc/os-release and /etc/lsb_release"
exit 1
;;
esac
else
echo "Unsupported Linux distribution"
exit 1
fi
}
# Make sure we are root or we sudo'd
[ $(id -u) != "0" ] && { echo "Error: You must be root to run this script"; exit 1; }
echo "Hello, this script prepares OS to Neyross Platform (installs docker and cockpit)"
install_packages
echo "done, ready to install neyross-platform-docker / neyross-start"
exit 0
ВАЖНО
При работе в ОС семейства Windows файл по умолчанию создаётся в кодировке Windows (CR LF), такой формат не распознаётся корректно в среде Linux, возникают ошибки запуска. Рекомендуем воспользоваться свободно распространяемым приложение Notepad++.
Порядок действий:
- Создать новый файл. В
- ставить скопированный код скрипта.
- Выполнить команду Правка → Формат конца строк → Преобразовать в Unix.
- Выполнить команду Файл → Сохранить как. Задать имя файла латиницей. Указать тип файла: «Unix script file».
Вы также можете обратиться к специалистам компании ИТРИУМ, мы вышлем подготовленный файл.
Поместите данный файл на целевой сервер (например, в директорию $HOME).
СОВЕТ: для загрузки файла по сети с Windows-машины, вы можете воспользоваться свободно-распространяемым клиентом удалённого доступа Putty, например, — SCP-клиентом с интерфейсом командной строки pscp.exe.
Запуск скрипта
В терминале ОС целевого сервера в директории с файлом prepare-os-docker.sh выполните:
sudo bash prepare-os-docker.sh
где, prepare-os-docker.sh — название файла скрипта.
Работа скрипта
Ниже приведён алгоритм работы и пример вывода скрипта.
Выполняется обновление ОC, установка и запуск Docker и Docker Compose.
Выбор репозиториев для установки пакетов зависит от семейства ОС, которое определяется чтением файла
/etc/os-release. Ниже приведён пример для ОС Ubuntu Server 20.04 LTS.Hello, this script prepares OS to Neyross Platform (installs docker and cockpit) checking for docker availability docker is not installed installing system packages; OS ID is ubuntu, OS ID_LIKE is debian installing ubuntu \ debian packages; [docker] not installed, installing manually, updating apt... Hit:1 http://ru.archive.ubuntu.com/ubuntu focal InRelease Hit:2 http://ru.archive.ubuntu.com/ubuntu focal-updates InRelease Hit:3 http://ru.archive.ubuntu.com/ubuntu focal-backports InRelease Hit:4 http://ru.archive.ubuntu.com/ubuntu focal-security InRelease Reading package lists... Done Building dependency tree Reading state information... Done 68 packages can be upgraded. Run 'apt list --upgradable' to see them. [docker] installing additional packages... Reading package lists... Done … [docker] adding docker apt repo... [docker] adding repo deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable to /etc/apt/sources.list [docker] this is first run; adding repo to install docker... [docker] running update... Hit:1 http://ru.archive.ubuntu.com/ubuntu focal InRelease Hit:2 http://ru.archive.ubuntu.com/ubuntu focal-updates InRelease Hit:3 http://ru.archive.ubuntu.com/ubuntu focal-backports InRelease Hit:4 http://ru.archive.ubuntu.com/ubuntu focal-security InRelease Get:5 https://download.docker.com/linux/ubuntu focal InRelease [57.7 kB] Get:6 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages [51.6 kB] Fetched 109 kB in 1s (81.0 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 68 packages can be upgraded. Run 'apt list --upgradable' to see them. … The following NEW packages will be installed: containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin pigz slirp4netns 0 upgraded, 8 newly installed, 0 to remove and 68 not upgraded. Need to get 123 MB of archives. After this operation, 442 MB of additional disk space will be used. Get:1 http://ru.archive.ubuntu.com/ubuntu focal/universe amd64 pigz amd64 2.4-1 [57.4 kB] … Selecting previously unselected package pigz. (Reading database ... 134175 files and directories currently installed.) Preparing to unpack .../0-pigz_2.4-1_amd64.deb ... Unpacking pigz (2.4-1) ... … Setting up docker-buildx-plugin (0.17.1-1~ubuntu.20.04~focal) ... Setting up containerd.io (1.7.22-1) ... Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service. Setting up docker-compose-plugin (2.29.7-1~ubuntu.20.04~focal) ... Setting up docker-ce-cli (5:27.3.1-1~ubuntu.20.04~focal) ... Setting up pigz (2.4-1) ... Setting up docker-ce-rootless-extras (5:27.3.1-1~ubuntu.20.04~focal) ... Setting up docker-ce (5:27.3.1-1~ubuntu.20.04~focal) ... Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service. Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket. Processing triggers for man-db (2.9.1-1) ... Processing triggers for systemd (245.4-4ubuntu3.23) ... [docker] done; starting and enabling docker service Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable docker Docker version 27.3.1, build ce12230 Docker Compose version v2.29.7
Выполняется установка Cockpit.
[cockpit] not found; installing it with plugins Hit:1 http://ru.archive.ubuntu.com/ubuntu focal InRelease Hit:2 http://ru.archive.ubuntu.com/ubuntu focal-updates InRelease Hit:3 http://ru.archive.ubuntu.com/ubuntu focal-backports InRelease Hit:4 https://download.docker.com/linux/ubuntu focal InRelease Hit:5 http://ru.archive.ubuntu.com/ubuntu focal-security InRelease Reading package lists... Done Building dependency tree Reading state information... Done 68 packages can be upgraded. Run 'apt list --upgradable' to see them. … The following NEW packages will be installed: cockpit cockpit-bridge cockpit-dashboard cockpit-networkmanager cockpit-packagekit cockpit-storaged cockpit-system cockpit-ws cracklib-runtime dns-root-data dnsmasq-base libblockdev-mdraid2 libbluetooth3 libbytesize1 libcrack2 libidn11 libjansson4 libndp0 libnl-route-3-200 libnm0 libpwquality-common libpwquality-tools libpwquality1 libteamdctl0 network-manager network-manager-pptp ppp pptp-linux wamerican wpasupplicant 0 upgraded, 30 newly installed, 0 to remove and 68 not upgraded. Need to get 10.2 MB of archives. After this operation, 25.4 MB of additional disk space will be used. Get:1 http://ru.archive.ubuntu.com/ubuntu focal/universe amd64 cockpit-bridge amd64 215-1 [557 kB] … Get:30 http://ru.archive.ubuntu.com/ubuntu focal/main amd64 wamerican all 2018.04.16-1 [210 kB] Fetched 10.2 MB in 2s (6,363 kB/s) Preconfiguring packages ... Selecting previously unselected package cockpit-bridge. (Reading database ... 134429 files and directories currently installed.) Preparing to unpack .../00-cockpit-bridge_215-1_amd64.deb ... Unpacking cockpit-bridge (215-1) ... … Setting up cockpit-ws (215-1) ... Adding system user `cockpit-ws' (UID 116) ... Adding new group `cockpit-ws' (GID 122) ... Adding new user `cockpit-ws' (UID 116) with group `cockpit-ws' ... Adding system user `cockpit-wsinstance' (UID 117) ... Adding new group `cockpit-wsinstance' (GID 123) ... Adding new user `cockpit-wsinstance' (UID 117) with group `cockpit-wsinstance' ... … Setting up cockpit-packagekit (215-1) ... Setting up network-manager (1.22.10-1ubuntu2.4) ... Created symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service → /lib/systemd/system/NetworkManager-dispatcher.service. Created symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service → /lib/systemd/system/NetworkManager-wait-online.service. Created symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service → /lib/systemd/system/NetworkManager.service. … Setting up cockpit-system (215-1) ... Setting up cockpit (215-1) ... Processing triggers for systemd (245.4-4ubuntu3.23) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for dbus (1.12.16-2ubuntu2.3) ... Processing triggers for libc-bin (2.31-0ubuntu9.16) ... [cockpit] done; preparing cockpit.conf [cockpit] done; enabling all network interfaces for cockpit JIC done; starting and enabling cockpit service The unit files have no installation config (WantedBy=, RequiredBy=, Also=, Alias= settings in the [Install] section, and DefaultInstance= for template units). This means they are not meant to be enabled using systemctl. [cockpit] done with cockpit done, ready to install neyross-platform-docker / neyross-start
Ошибки выполнения
Если выполняются попытки поиска дистрибутивов на локальном носителе, который более не доступен, например:
The repository '[путь к дистрибутиву]' no longer has a Release file.
удалите данный источник из списка. Для этого перейдите в режим редактирования файла sources.list
sudo nano /etc/apt/sources.list
и удалите строку с недоступным источником, файлы будут загружены из сети Интернет, при отсутствии доступа в сеть, укажите правильный путь с дистрибутивами.
Если Docker уже был установлен в среде операционной системы, проверьте, что установлены все зависимости, в частности, — установлен docker compose. Для этого выполните команды
docker -v docker compose version
ВАЖНО
При установке Docker вручную не используйте пакеты snap, используйте APT! Если ранее был установлен Docker с помощью snap или неподдерживаемой версии, рекомендуем предварительно удалить Docker.
Следующий шаг:
Перейдите к установке НЕЙРОСС Старт