Настройка Linux-окружения перед началом работы: профессиональные советы
Час, потраченный на настройку Linux-окружения, экономит десятки часов на отладке конфликтов версий, потерянных ключей и ручных повторений. Разработчики с опытом придерживаются одного правила: система должна быть безопасной, воспроизводимой и удобной с первого дня.
Ниже — пошаговое руководство для Ubuntu/Debian (для Fedora замените apt на dnf). Советы подходят для рабочей станции, VPS и WSL2.
Шаг 1. Обновите систему и поставьте базовые пакеты
Первое действие после установки Linux — полное обновление: оно закрывает уязвимости и убирает конфликты зависимостей.
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y build-essential curl wget git unzip htop tree jq ca-certificates gnupg software-properties-commonСовет профи: включите автоматические обновления безопасности, чтобы не держать это в голове:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgradesТакже сразу проверьте часовой пояс и локаль (timedatectl set-timezone Europe/Moscow, sudo dpkg-reconfigure locales) — неверное время ломает логи, cron и TLS-сертификаты.
Шаг 2. Пользователь, sudo, SSH-ключи и безопасность
Никогда не работайте под root. Создайте отдельного пользователя и дайте ему sudo:
sudo adduser dev
sudo usermod -aG sudo devСгенерируйте SSH-ключ на современном алгоритме Ed25519 — он короче и надёжнее RSA:
ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519
ssh-copy-id dev@your-serverНа сервере закройте вход по паролю и под root в /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication noЗатем включите фаервол и защиту от перебора:
sudo systemctl restart ssh
sudo ufw allow OpenSSH && sudo ufw enable
sudo apt install -y fail2banСовет профи: заведите ~/.ssh/config с алиасами хостов — вместо ssh -p 2222 dev@203.0.113.10 будет просто ssh prod. Перед перезапуском sshd держите открытой вторую сессию, чтобы не отрезать себе доступ.
Шаг 3. Настройка терминала Linux: zsh, алиасы, tmux
Терминал — главный инструмент разработчика, поэтому его настройка окупается быстрее всего. Замените bash на zsh с автодополнением и подсказками:
sudo apt install -y zsh tmux fzf ripgrep bat fd-find
chsh -s $(which zsh)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Полезные алиасы для ~/.zshrc:
alias ll='ls -alFh'
alias gs='git status'
alias gl='git log --oneline --graph --decorate'
alias ..='cd ..'
alias update='sudo apt update && sudo apt upgrade -y'
export HISTSIZE=100000 SAVEHIST=100000Утилиты, которые профи ставят сразу:
| Утилита | Заменяет | Зачем |
|---|---|---|
| fzf | Ctrl+R | Нечёткий поиск по истории и файлам |
| ripgrep (rg) | grep | Поиск по коду в разы быстрее, учитывает .gitignore |
| bat | cat | Подсветка синтаксиса |
| fd | find | Простой синтаксис и скорость |
| tmux | несколько окон | Сессии переживают обрыв SSH |
Совет профи: на сервере всегда запускайте долгие задачи внутри tmux new -s work — при обрыве связи вернитесь командой tmux attach -t work.
Шаг 4. Git, редактор и dotfiles
Настройте Git до первого коммита, иначе история заполнится чужим или пустым автором:
git config --global user.name "Иван Петров"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global core.editor "code --wait"Редактор выбирайте под задачу: VS Code с расширением Remote-SSH для работы с серверами, Neovim — если живёте в терминале. Минимум на любом сервере — уметь править файлы в vim или nano.
Главный совет профи — dotfiles. Храните .zshrc, .gitconfig, .tmux.conf, .ssh/config и скрипт установки в отдельном Git-репозитории. Тогда новая машина настраивается за 5 минут:
git clone git@github.com:username/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./install.sh # создаёт симлинки через ln -s или GNU stowНикогда не кладите в dotfiles приватные ключи, токены и .env — добавьте их в .gitignore.
Шаг 5. Языки и версии: pyenv, nvm, Docker
Не ставьте пакеты в системный Python и Node.js — это самая частая причина сломанных систем. Используйте менеджеры версий и изоляцию проектов.
Python — pyenv для версий, venv или uv для зависимостей:
curl https://pyenv.run | bash
pyenv install 3.12 && pyenv global 3.12
python -m venv .venv && source .venv/bin/activateNode.js — nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
nvm install --ltsDocker — для баз данных и сервисов, чтобы не засорять систему PostgreSQL, Redis и прочим:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER # перелогиньтесь после команды
docker run -d --name pg -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:16Совет профи: фиксируйте версии в проекте (.python-version, .nvmrc, docker-compose.yml), чтобы окружение у всей команды было одинаковым.
Чек-лист настройки Linux для разработчика
- Система обновлена, включены unattended-upgrades
- Работа под обычным пользователем с sudo
- SSH-ключ Ed25519, вход по паролю отключён
- ufw и fail2ban включены
- zsh, алиасы, fzf, ripgrep, tmux
- Git настроен (имя, email, ветка main)
- dotfiles в репозитории
- pyenv / nvm вместо системных интерпретаторов
- Docker для сервисов и БД
Часто задаваемые вопросы
Какой дистрибутив Linux выбрать для программирования?
Для старта — Ubuntu LTS или Fedora: больше всего инструкций и готовых пакетов.
Нужно ли всё это в WSL2?
Да, кроме ufw и fail2ban — их роль выполняет Windows.
Как автоматизировать настройку?
Для одной машины хватит bash-скрипта в dotfiles, для парка серверов — Ansible.
Заключение
Правильная настройка Linux-окружения занимает час один раз, а с репозиторием dotfiles — 5 минут на каждой новой машине. Сохраните чек-лист и проходите его перед каждым новым проектом.





