Index
Подготовка системы
1. Проверьте версию системы:
cat /etc/os-release
Ожидаемый вывод:

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

Настройка пользователя
Важно: у юзера
octopusобязательно должен быть UID - 1000.
1. Проверьте текущий UID пользователя octopus:
id octopus

2. Проверьте, свободен ли UID 1000:
getent passwd 1000
Ожидаемый ответ: пустая строка (UID свободен)
Если UID занят другим пользователем
1. Войдите под root
su

В 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


Повторный вход под root и завершение сессии octopus
1. Войдите на сервер под root через SSH:
ssh root@<IP-адрес>

На системах с systemd пользователь может иметь активный процесс /lib/systemd/systemd --user, даже при отсутствии shell-сессий.
2. Завершите все сессии пользователя octopus:
loginctl terminate-user octopus

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

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

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

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

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

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

Установка 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

2. Проверьте статус:
systemctl status docker --no-pager -l
Ожидаемый вывод:
- active (running)
- без ошибок в логе
Настройка прав для пользователя octopus
1. Добавьте пользователя в группу docker:
sudo usermod -aG docker octopus
Важно: Перелогиньтесь:
exit
3. Проверьте группы:
groups

Проверка работы 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

Проверка корректности установки 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

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

Проверка 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

Установка и запуск Октопус
Подготовка рабочей директории
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

Запуск стека Octopus
1. Перейдите в рабочую папку:
cd /home/octopus/octopus
2. Запустите стек:
docker compose down -v || true

3. Выполните:
docker compose up -d --pull never

4. Проверьте статус:
docker compose ps
Запуск всех сервисов занимает примерно 10 минут.
Проверка работоспособности
1. Проверьте состояние контейнеров:
docker ps --format '{{.Names}}\t{{.Status}}'

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-адрес-сервера>