Skip to content

Instantly share code, notes, and snippets.

@Jeket
Forked from zmts/debian_do.md
Created October 25, 2021 17:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jeket/67cabe2bc1e09f685594198066a03a4a to your computer and use it in GitHub Desktop.
Save Jeket/67cabe2bc1e09f685594198066a03a4a to your computer and use it in GitHub Desktop.
Первичная настойка Debian Linux/Разворачиваем серверную инфраструктуру на Digital ocean

Первичная настойка Debian Linux/Разворачиваем серверную инфраструктуру на Digital ocean

Для проектов среднего и небольшого размера не всегда оправданно использовать AWS/Kubernetes подобную технологию. Для проектов нуждающихся в нескольких серверах отлично подходит Digital ocean. Который к тому же предоставляет средства вертикального скейлинга(увеличение производительной мощности уже существующих серверов).

SSH cертификат

Создаем сертификат под которым будем логинится на сервера нашего проекта (на локальной машине)

ssh-keygen -t rsa -b 4096 -f /Users/alex/.ssh/myproject_test -C "myproject comment"

Не забываем сделать его бекап

Первичная настройка сервера/дроплета. Настройка ssh сертификата

  • Создаем новый Droplet (one-time password)
  • Логинимся под рутом
  • Создаем пользователя(superuser) под которым мы в дальнейшем будем ходить по ssh
adduser superuser

Добавляем его в рутовую группу

usermod -aG sudo superuser

Добавляем публичный SSH ключ для superuser на удаленный сервер. И если в проекте несколько серверов, дабы не создавать сертификат для каждого, можем переиспользовать его на каждом из серверов. То есть проделываем данную процедуру для каждого сервера.

ssh-copy-id -i /Users/alex/.ssh/myproject_test.pub superuser@111.111.111.111

Теперь публичный ключ размещен на сервере в файле /home/superuser/.ssh/authorized_keys. Можем логинится через сертификат.

Обрати внимание логинимся через СЕКРЕТНЫЙ ключ, не публичный!

ssh -i /Users/alex/.ssh/myproject_test superuser@111.111.111.111

Приступим к остальной настройке системы

Заходим под рутом и в бой...

su

Задать FQDN серверу

nano /etc/hostname

mysuperdomain

nano /etc/hosts

127.0.1.1 mysuperdomain.com mysuperdomain
127.0.0.1 localhost

Время

date --set hh:mm

nano /etc/ssh/sshd_config

  • Запрещаем логинится по паролю
  • Запрещаем руту ходить по ssh
  • Меняем дефолтный ssh порт
PasswordAuthentication no
PermitRootLogin no
Port 2222
sudo service ssh restart

Загрузить и установить последние обновления системы

apt update && apt upgrade

reboot or systemctl reboot

Настраиваем локаль

Правим конфиг локалей nano /etc/default/locale

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8

Реконфигурируем локали (из списка выбираем en_US.utf8 и ru_RU.utf8, далее по умолчанию ставим en_US.utf8)

sudo dpkg-reconfigure locales
sudo reboot

Ставим необходимые утилиты

sudo apt install -y zsh htop git curl wget unzip zip mc iftop psmisc screen

Oh-my-zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Zsh custom config

autoload -U +X bashcompinit && bashcompinit

alias ls='ls -FGA'
alias ll='ls -FGAhl'
alias x='clear'
alias rm='rm -i'
alias rmdir='rm -rfi'
alias cp='cp -i'
alias mv='mv -i'

PROMPT='${ret_status} %{$fg[cyan]%}%n::%m[%d]%{$reset_color%} $(git_prompt_info)'
RPROMPT='[%T]'

%m - hostname

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment