Appearance
Подготовка Ubuntu 24.04 LTS к развертыванию Docker‑приложения
Примерный чеклист настроек безопасности и инфраструктуры перед прод‑деплоем Nimbus.
Источник: ранее файл
Инструкции/DOCKER_PROD_SETUP_UBUNTU.md(перенесён и стандартизирован).
1. Обновление системы
bash
sudo apt update
sudo apt upgrade -y
sudo reboot2. Создание пользователя и настройка SSH
bash
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo mkdir -p /home/deploy/.ssh
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh- Скопируйте публичный ключ на сервер, например через
ssh-copy-id deploy@server(обязательно с локального компьютера, где находится ваш ключ). - Если
ssh-copy-idнедоступен, выполните вручную:
bash
cat ~/.ssh/id_rsa.pub | ssh deploy@server 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
ssh deploy@server "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && chown -R deploy:deploy ~/.ssh"- Убедитесь, что директория и файл принадлежат
deploy, а права соответствуют (700/600), иначе SSH откажет в доступе.
bash
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys- Отключите парольный вход в
/etc/ssh/sshd_config(PasswordAuthentication no,PermitRootLogin no), затем перезапустите SSH:
bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl reload ssh3. Установка Docker и Docker Compose
bash
sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker deploy- Проверка:
docker run hello-world.
4. Настройка firewall
bash
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable- Управление:
sudo ufw status.
5. Настройка лимитов и безопасности Docker
bash
sudo tee /etc/docker/daemon.json <<'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
sudo systemctl restart docker- Включите автоматический запуск контейнеров через systemd или
docker compose(restart‑policy).
6. Мониторинг и логирование
- Установите
fail2banдля SSH. - Подключите
logrotateдля логов Docker (можно использоватьlog-driverнастройки выше). - Настройте
prometheus/node_exporterили аналог для метрик.
7. Пример deploy‑скрипта
bash
#!/bin/bash
set -euo pipefail
sudo systemctl stop nimbus && sudo systemctl disable nimbus || true
cd /opt/nimbus
sudo git pull origin main
sudo docker compose -f docker-compose.prod.yml pull
sudo docker compose -f docker-compose.prod.yml up -d --remove-orphans- Сохраните как
/usr/local/bin/deploy-nimbus.sh, сделайтеchmod +x. - Настройте
systemdunit (пример вdeploy/nimbus.service) для автоматики.
8. Резервное копирование
- Настройте
cron/systemd‑таймер для бэкапа базы данных и.env.
9. Документация и секреты
- Запишите переменные окружения, используемые контейнерами, и их источник.
- Убедитесь, что секреты хранятся вне репозитория (Vault, AWS Secrets,
.envв.gitignore).