Перейти к содержанию

Index

Подготовка системы

1. Проверьте версию системы:

cat /etc/os-release

Ожидаемый вывод:

altlinux.png

2. Настройте дату и время:

timedatectl

Ожидаемый вывод:

altlinux-1.png

Настройка пользователя

Важно: у юзера octopus обязательно должен быть UID - 1000.

1. Проверьте текущий UID пользователя octopus:

id octopus

altlinux-2.png

2. Проверьте, свободен ли UID 1000:

getent passwd 1000

Ожидаемый ответ: пустая строка (UID свободен)

Если UID занят другим пользователем

1. Войдите под root

su

altlinux-7.png

В ALT Linux P10 конфигурация SSH-сервера находится в /etc/openssh/sshd_config. При необходимости изменения UID пользователя, если SSH-доступ есть только под этим пользователем, используется временное разрешение root-login, после чего доступ немедленно закрывается.

2. Временно разрешите root-логин по SSH:

sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/openssh/sshd_config

3. Проверьте изменения:

grep -i PermitRootLogin /etc/openssh/sshd_config

4. Перезагрузите службу SSH:

systemctl reload sshd || systemctl restart sshd

5. Выйдите из всех сессий:

exit
exit

altlinux-3.png

altlinux-4.png

Повторный вход под root и завершение сессии octopus

1. Войдите на сервер под root через SSH:

ssh root@<IP-адрес>

altlinux-8.png

На системах с systemd пользователь может иметь активный процесс /lib/systemd/systemd --user, даже при отсутствии shell-сессий.

2. Завершите все сессии пользователя octopus:

loginctl terminate-user octopus

altlinux-9.png

3. Измените UID пользователя octopus на 1000:

usermod -u 1000 octopus

4. Измените владельца домашней директории:

chown -R 1000:1000 /home/octopus

Отключение root-логина и настройка sudo

1. Отключите вход под root:

sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/openssh/sshd_config

2. Проверьте:

grep -i PermitRootLogin /etc/openssh/sshd_config

altlinux-10.png

3. Добавьте пользователя octopus в sudoers:

echo 'octopus ALL=(ALL) ALL' > /etc/sudoers.d/octopus
chmod 0400 /etc/sudoers.d/octopus

4. Проверьте корректность файла:

ls -l /etc/sudoers.d/
visudo -c

altlinux-5.png

5. Выйдите из сессии root:

exit

Вход под octopus и обновление системы

1. Войдите под пользователем octopus:

ssh octopus@<IP-адрес>

2. Обновите систему:

sudo apt-get update

Затем:

sudo apt-get -y dist-upgrade

3. Установите необходимые утилиты:

sudo apt-get install -y \
  curl \
  wget \
  ca-certificates \
  tar \
  gzip \
  unzip \
  xz \
  jq \
  procps

4. Перезагрузите сервер:

sudo reboot

Настройка системных лимитов

Важно: Без настройки лимитов возможны ошибки вида -bash: fork: retry: Resource temporarily unavailable.

Настройка systemd

1. Создайте конфигурацию для systemd:

sudo mkdir -p /etc/systemd/system.conf.d
sudo tee /etc/systemd/system.conf.d/limits.conf <<'EOF'
[Manager]
DefaultTasksMax=16384
EOF

altlinux-23.png

2. Для пользователей:

sudo mkdir -p /etc/systemd/logind.conf.d
sudo tee /etc/systemd/logind.conf.d/limits.conf <<'EOF'
[Login]
UserTasksMax=16384
EOF

Настройка PAM-лимитов

Важно: На ALT Server значение ulimit -u = 512 является блокирующим для запуска Docker и многоконтейнерных Java-приложений. Перед установкой Octopus необходимо увеличить лимит процессов минимум до 16384. Для PAM (ulimit)

1. Поправьте лимиты:

sudo tee /etc/security/limits.d/99-octopus.conf <<'EOF'
* soft nproc 16384
* hard nproc 16384
EOF

altlinux-6.png

2. Создайте файл лимитов:

sudo tee /etc/security/limits.d/99-octopus.conf <<'EOF'
# Octopus platform limits
octopus soft nofile 65535
octopus hard nofile 65535
octopus soft nproc 65535
octopus hard nproc 65535
* soft nproc 16384
* hard nproc 16384
EOF

3. Перезапустите systemd (обязательно):

sudo systemctl daemon-reexec

Настройка сетевых параметров

1. Включите маршрутизацию и bridge-трафик:

sudo tee /etc/sysctl.d/99-octopus.conf <<'EOF'
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

2. Примените изменения:

sudo /sbin/sysctl --system

altlinux-11.png

3. Перезагрузите сервер:

sudo reboot

Проверка применённых лимитов

После перезагрузки проверьте настройки:

sudo cat /etc/security/limits.d/99-octopus.conf
grep -R DefaultTasksMax /etc/systemd/system.conf.d
grep -R UserTasksMax /etc/systemd/logind.conf.d

altlinux-13.png

Установка Docker

Установка Docker Engine

1. Установите Docker из репозитория Alt Linux:

sudo apt-get install -y docker-engine docker-cli

2. Проверьте версию:

docker --version

Ожидаемый вывод:

octopus@octopus-alt ~]$ docker --version
Docker version 27.1.1, build 59a4d52

Запуск и настройка Docker

1. Включите автозапуск Docker:

sudo systemctl enable --now docker

altlinux-12.png

2. Проверьте статус:

systemctl status docker --no-pager -l

Ожидаемый вывод:

  • active (running)
  • без ошибок в логе

Настройка прав для пользователя octopus

1. Добавьте пользователя в группу docker:

sudo usermod -aG docker octopus

Важно: Перелогиньтесь:

exit

3. Проверьте группы:

groups

altlinux-14.png

Проверка работы Docker

1. Выполните тестовые команды:

docker ps
docker run --rm hello-world

Установка Docker Compose

1. Установите Docker Compose v2:

sudo apt-get update
sudo apt-get install -y docker-compose-v2

2. Проверьте версию:

docker compose version

altlinux-15.png

Проверка корректности установки Docker и системных настроек

Перед установкой Octopus необходимо убедиться, что Docker работает корректно, а системные лимиты и права настроены правильно. Выполните последовательно приведённые ниже проверки.

Проверка службы Docker

Убедитесь, что Docker запущен и добавлен в автозагрузку:

sudo systemctl enable docker
sudo systemctl start docker

Проверка прав пользователя octopus

1. Пользователь octopus должен состоять в группе docker (для работы без sudo):

id octopus

2. Проверьте наличие группы docker в системе и членство пользователя:

getent group docker

altlinux-16.png

Проверка доступности сокета Docker

1. Сокет /var/run/docker.sock должен быть доступен для чтения и записи группе docker:

ls -lah /var/run/docker.sock

altlinux-17.png

Проверка systemd, cgroups и лимитов

1. Убедитесь, что система использует systemd:

ps -p 1 -o comm=

2. Проверьте версию cgroups:

stat -fc %T /sys/fs/cgroup/

3. Определите драйвер cgroups, используемый Docker:

docker info | grep -i cgroup

4. Проверьте лимит открытых файлов для пользователя octopus:

ulimit -n

altlinux-18.png

Установка и запуск Октопус

Подготовка рабочей директории

1. Создайте и настройте директорию:

mkdir -p /home/octopus/
cd /home/octopus/

2. Задайте права:

sudo chown -R octopus:octopus /home/octopus/

Распаковка дистрибутива

1. Скопируйте полученный архив octopus-stable-update.zip в /home/octopus/ и распакуйте:

unzip octopus-stable-update.zip

2. Переименуйте каталог octopus.deployment в Octopus:

mv octopus.deployment octopus

Структура должна выглядеть так:

/home/octopus/
├── octopus.images/
└── octopus/
    ├── docker-compose.yml
    ├── scripts/
    └── ...

Импорт Docker-образов

Каталог octopus.images содержит предсобранные Docker-образы (*.tar), которые следует импортировать, до запуска docker-compose.

1. Перейдите в рабочую папку:

cd /home/octopus/Octopus

2. Перейдите в папку с техническими скриптами:

cd /home/octopus/octopus/scripts

3. Импортируйте оффлайн образы:

./import-images.sh /home/octopus/octopus.images

2. Проверьте импортированные образы:

docker images | grep -E 'octopus|keycloak|clickhouse|zookeeper|kafka' || true

altlinux-19.png

Запуск стека Octopus

1. Перейдите в рабочую папку:

cd /home/octopus/octopus

2. Запустите стек:

docker compose down -v || true

altlinux-20.png

3. Выполните:

docker compose up -d --pull never

altlinux-21.png

4. Проверьте статус:

docker compose ps

Запуск всех сервисов занимает примерно 10 минут.

Проверка работоспособности

1. Проверьте состояние контейнеров:

docker ps --format '{{.Names}}\t{{.Status}}'

altlinux-22.png

2. Просмотрите логи (опционально):

docker compose logs --tail=60 --no-log-prefix | sed -n '1,200p'

Настройка автозапуска

1. Создайте сервис для автоматического запуска стека:

sudo tee /etc/systemd/system/octopus-stack.service >/dev/null <<'EOF'
[Unit]
Description=Octopus stack (Docker Compose)
After=docker.service network-online.target
Wants=docker.service network-online.target
ConditionPathExists=/home/octopus/octopus/docker-compose.yml

[Service]
Type=oneshot
User=octopus
Group=octopus
WorkingDirectory=/home/octopus/octopus
Environment=PWD=/home/octopus/octopus
Environment=COMPOSE_PROJECT_NAME=octopus

# sanity-checks
ExecStartPre=/bin/bash -lc 'test -S /var/run/docker.sock'
ExecStartPre=/usr/bin/docker --version
ExecStartPre=/usr/bin/docker info
ExecStartPre=/usr/bin/docker compose version
ExecStartPre=/bin/bash -lc '/usr/bin/docker compose -p octopus config >/dev/null'

ExecStart=/usr/bin/docker compose -p octopus up -d --pull never
ExecStop=/usr/bin/docker compose -p octopus down --remove-orphans

RemainAfterExit=yes
TimeoutStartSec=900
TimeoutStopSec=120
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

2. Активируйте изменения:

sudo systemctl daemon-reload
sudo systemctl enable --now octopus-stack.service
systemctl status --no-pager octopus-stack

3. Перезагрузите сервер:

sudo reboot

После перезагрузки подождите около 10 минут и откройте веб-интерфейс Октопус по адресу:

http://<IP-адрес-сервера>