В данном разделе приведены сведения по подготовке операционной системы к установке контейнеризированной Платформы НЕЙРОСС. Вы можете использовать имеющийся готовый сервер, в том числе с другими контейнерами приложений. Для вашего удобства подготовлена базовая инструкция установки ОС Ubuntu Server [Установка ОС Ubuntu Server 22.04 LTS].
Для работы Платформы НЕЙРОСС 25 требуются предварительная установка Docker — платформы для разработки, развёртывания и запуска приложений в контейнерах, а также Docker Compose — инструмента оркестрации докер-контейнеров (запуска нескольких Докер-сервисов как единого изолированного приложения).
Docker: 23.0.4 или выше |
Также в рамках скрипта устанавливается Cockpit для упрощения монтирования накопителей и выполнения прочих действий по администрированию сервера.
Вы можете установить Docker и Docker Compose требуемых версий самостоятельно, а также использовать уже имеющийся сервер с установленными приложениями. Для вашего удобства специалисты компании ИТРИУМ подготовили скрипт автоматической установки требуемых компонентов.
ВАЖНО Для работы скрипта требуется доступ в интернет, так как в коде «зашиты» ссылки на дистрибутивы из публичных репозиториев. Рекомендуется выполнять первичную настройку сервера при наличии доступа в интернет. При невозможности подключения к сети рекомендуем изменить пути загрузки пакетов на локальные или самостоятельно выполнить установку требуемых пакетов. |
Скрипт поддерживает следующие семейства операционных систем:
Даже в рамках одного семейства ОС на различных версиях инсталляция может выполняться немного по-разному. Код скрипта оптимизирован для целевых версий ОС:
|
Вам потребуется:
Скопируйте код ниже и сохраните в файл формата 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++. Порядок действий:
Вы также можете обратиться к специалистам компании ИТРИУМ, мы вышлем подготовленный файл. |
Поместите данный файл на целевой сервер (например, в директорию $HOME
).
СОВЕТ: для загрузки файла по сети с Windows-машины, вы можете воспользоваться свободно-распространяемым клиентом удалённого доступа Putty, например, — SCP-клиентом с интерфейсом командной строки pscp.exe.
Поместите файл pscp.exe из дистрибутива Putty в папку со скриптом инсталляции и из интерфейса командной строки ОС Windows выполните:
Где:
|
В терминале ОС целевого сервера в директории с файлом prepare-os-docker.sh
выполните:
sudo bash prepare-os-docker.sh |
где, prepare-os-docker.sh
— название файла скрипта.
Ниже приведён алгоритм работы и пример вывода скрипта.
Выполняется обновление ОC, установка и запуск Docker и Docker Compose.
Выбор репозиториев для установки пакетов зависит от семейства ОС, которое определяется чтением файла |
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. |