Skip to content

Instantly share code, notes, and snippets.

@iposho
Last active April 24, 2025 21:56
Show Gist options
  • Save iposho/60f0d20e16a3a7e2441319d844f16b25 to your computer and use it in GitHub Desktop.
Save iposho/60f0d20e16a3a7e2441319d844f16b25 to your computer and use it in GitHub Desktop.

Начальная настройка сервера на Ubuntu 24.04

Содержание


Создаем пользователя с правами root

Для начала создадим отдельного пользователя с правами root в целях повышения безопасности.

Логинимся на сервер по ssh:

ssh root@your_server_ip

После успешного входа создаем нового пользователя:

adduser iposho

Выдаем пользователю root-привилегии:

usermod -aG sudo iposho

Настраиваем аутентификацию по ssh-ключу

На локальном компьютере создаем 4096-битный ssh-ключ:

ssh-keygen -t rsa -b 4096

Копируем ключ на удаленный сервер:

ssh-copy-id -i ~/.ssh/key.pub iposho@your_server_ip

Добавляем ключ в агента:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/key

Файл ~/.ssh/config:

Host your_server_ip
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/key

Устанавливаем Docker и Portainer

Установка Docker:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker run hello-world
sudo usermod -aG docker iposho

Установка Portainer:

docker volume create portainer_data
docker run -d -p 9000:9000 -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:2.21.4

Панель Portainer будет доступна по адресу: https://your_server_ip:9443


Улучшаем безопасность SSH-доступа

Отключаем вход по паролю и root-доступ:

sudo nano /etc/ssh/sshd_config

Измените строки:

PasswordAuthentication no
PermitRootLogin no

Перезапускаем SSH:

sudo systemctl restart ssh

Устанавливаем базовые утилиты и аутообновления

sudo apt-get install -y git ufw fail2ban htop unzip apt-transport-https software-properties-common gnupg2

Настраиваем UFW:

sudo ufw allow OpenSSH
sudo ufw enable

Автоматические обновления:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

Проверка:

cat /etc/apt/apt.conf.d/20auto-upgrades

Настраиваем Fail2Ban

Проверка:

sudo systemctl status fail2ban

Пример базовой конфигурации:

sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
bantime = 1h
findtime = 10m
maxretry = 5

Docker: best practices

sudo systemctl enable docker

Для организации:

sudo mkdir -p /opt/containers/portainer

Алиас для удобства:

echo "alias dps='docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\"'" >> ~/.bashrc
source ~/.bashrc

Настройка домена и HTTPS (Nginx + Let's Encrypt)

sudo apt install nginx certbot python3-certbot-nginx

Пример конфигурации:

server {
    listen 80;
    server_name your.domain.com;

    location / {
        proxy_pass https://localhost:9443;
        proxy_ssl_verify off;
    }
}

Сертификат:

sudo certbot --nginx -d your.domain.com

Финальная проверка чеклист

Шаг Готово
Создан пользователь с sudo
Настроен вход по ssh-ключу
Отключен root-доступ
Установлены Docker и Portainer
Настроен фаервол UFW
Установлены автообновления
Подключен Fail2Ban
Настроен домен + HTTPS ⬜️
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment