# Ubuntu

## Що це таке

Ubuntu — дистрибутив Linux від компанії Canonical: ядро Linux і тисячі програм
довкола нього, які один видавець збирає, тестує й латає за заздалегідь
оголошеним календарем. Він походить від Debian, тож використовує ті самі пакети
`.deb` і той самий інструмент `apt` для їх встановлення, а зверху додає власний
ритм випусків, власні налаштування за замовчуванням і компанію, яка продає
підтримку. Той самий репозиторій живить настільні комп'ютери, хмарні образи й
фізичні сервери; тут ідеться про сервер.

Випуски називають за роком і місяцем виходу, тож випуск 24.04 вийшов у квітні
2024 року. Новий з'являється що пів року, а кожного другого року квітневий
випуск отримує довгострокову підтримку і позначку LTS. Різниця — у тривалості
обіцянки. Проміжний випуск отримує виправлення дев'ять місяців. Випуск LTS —
п'ять років стандартного безпекового супроводу, які підписка Ubuntu Pro подовжує
до десяти через Expanded Security Maintenance, а доповнення Legacy — до
п'ятнадцяти.

На серверах Ubuntu зазвичай порівнюють із двома сусідами. Debian — батьківський
дистрибутив: та сама система пакетів, але за ним стоїть спільнота, а не
компанія. Red Hat Enterprise Linux і його перезбірки, як-от AlmaLinux та Rocky
Linux, — інша родина, з власним форматом пакетів і власними інструментами.
Обрати з цих трьох — здебільшого означає обрати календар, договір підтримки і
звички, які в команди вже є.

## Чому це важливо

Коли вибір упав на Ubuntu, лишається питання, який саме випуск ставити, і
відповідь на нього визначає бюджет на супровід на роки вперед.

Серверам місце на випусках LTS. Проміжний випуск втрачає підтримку через дев'ять
місяців після виходу, тож сервер, який іде за ними, мусить двічі на рік
проходити оновлення випуску, щоб і далі отримувати виправлення. Це забагато змін
заради трохи новіших пакетів. Проміжні випуски — місце, де пробують те, що
принесе наступний LTS.

У LTS чіткий шлях оновлення, і він вужчий, ніж зазвичай думають. Сервер
переходить лише з одного LTS на наступний, нічого не пропускаючи: з 20.04 до
24.04 дорога веде через 22.04. Інструмент оновлення `do-release-upgrade`
пропонує перехід лише після першого точкового випуску нової версії, тож 24.04
став типовою ціллю, коли вийшов 24.04.1. Парк серверів, що відстав на два
випуски, потребує двох повних оновлень на кожну машину, і кожне треба окремо
перевірити.

Ubuntu Pro — друга половина рішення. Підписка дає ті п'ять додаткових років
безпекових виправлень, Livepatch для встановлення виправлень ядра без
перезавантаження, Landscape для керування машинами як парком та інструменти FIPS
140-3 і CIS для регульованих галузей. Вона безкоштовна для п'яти машин, чого
досить невеликій компанії чи тестовій лабораторії; понад це — платна підписка.
Чесне порівняння — між підпискою і вартістю вчасних оновлень. П'яти років досить
для сервера, який відтворюють із коду; десять років пасують машині, якої ніхто
не хоче торкатися, і там платити за виправлення дешевше, ніж мігрувати поспіхом.

Нарешті, Ubuntu має власні способи робити звичайні речі, і команді, що прийшла з
іншого дистрибутива, варто закласти час на знайомство з ними. Мережеві
інтерфейси налаштовують у YAML через Netplan. Брандмауером зазвичай керують
через `ufw` — надбудову, яка постачається вимкненою. Оновлення безпеки щодня
встановлюються самі через `unattended-upgrades`, увімкнений від початку. Кожен
із цих інструментів зручний, коли його знаєш, і несподіваний, поки його не
знаєш.

## Як це виглядає на практиці

Парк VPS на Ubuntu Linux, що розростався по одній машині, найкраще показує, на
що перетворюється інфраструктура без догляду. Конфігурації розійшлися, і ніхто
не продумував, як ці машини відновлювати і як вони з'єднані в мережу. Робота
[взяла всі тридцять екземплярів під керування як єдиний парк](/uk/portfolio/managed-30-ubuntu-linux-vps-instances-implementing-disaster-20/):
з'явилися резервні копії з процедурами відновлення, які справді перевірили, а
мережеві налаштування кожного екземпляра перевели на однаковий захищений базовий
рівень. Шляхи відновлення тепер були перевірені, а не припущені, і ризик простою
знизився.

Бази даних стояли на тому самому ґрунті в іншому проєкті. Десять серверів із
PostgreSQL 14 і MS SQL Server 2019 на VPS з Ubuntu 20.04 LTS
[спроєктували, розгорнули й супроводжували](/uk/portfolio/designed-deployed-and-maintained-10-postgresql-and-ms-13/)
як одне ціле. Резервні копії робили `pg_dump` і завдання SQL Server Agent, з
правилами зберігання й копіями за межами майданчика. Prometheus і Grafana
стежили за процесором, пам'яттю, дисковим введенням-виведенням і метриками
запитів. І бази, і саму операційну систему регулярно оновлювали за графіком,
брандмауери налаштували через UFW, а доступ обмежили рольовою моделлю (RBAC).
Аварійне відновлення задокументували аж до відновлення на певний момент часу й
перемикання на резерв. Десять серверів працювали з доступністю 99,9%, запити
стали відповідати на 30% швидше, автоматизація вдвічі скоротила ручний супровід
і звільнила понад десять годин на місяць, а система витримала зростання трафіку
на 40% без погіршення роботи.

Вебхостинг — найпростіший випадок.
[Сорок вебсайтів працювали на хостингових серверах з Ubuntu Linux](/uk/portfolio/administered-40-websites-on-ubuntu-linux-hosting-servers-53/)
за Apache і Nginx упереміш, а робота полягала в налаштуванні, оптимізації
швидкодії й постійному супроводі, який тримає сайти надійними під реальним
трафіком. Усі сорок працювали з високою доступністю і доброю швидкодією.

## Де виникають проблеми

**Оновлювач встановлює виправлення ядра, а сервер і далі працює на старому
ядрі.** `unattended-upgrades` встановлює оновлення безпеки раз на добу, але
параметр `Automatic-Reboot` за замовчуванням має значення false, тож нове ядро
чекає на диску, доки хтось перезавантажить машину, а служби користуються старими
копіями оновлених бібліотек, доки їх самих перезапустять. Файл
`/var/run/reboot-required` з'являється, коли на машину чекає перезавантаження.
Визначте правило, а не покладайтеся на випадок: налаштуйте сповіщення на цей
файл, заплануйте перезавантаження на тиху годину або використовуйте Livepatch
для ядра. Заплановане перезавантаження — це два рядки в
`/etc/apt/apt.conf.d/50unattended-upgrades`:

```text
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:30";
```

**Сервер на старому випуску LTS перестає отримувати виправлення безпеки, а все
на ньому працює, як і раніше.** Стандартна підтримка 20.04, наприклад,
закінчилася в травні 2025 року; машина вмикається, обслуговує запити й світиться
зеленим точнісінько як до того. Записуйте випуск кожного сервера поруч із датою
завершення підтримки і до цієї дати або підключіть Ubuntu Pro, з яким 20.04
отримуватиме виправлення до травня 2030 року, або оновлюйте сервер по одному LTS
за раз.

**Нове правило `ufw` додано, а трафік іде так само, як до нього.** `ufw`
перевіряє правила по черзі, і спрацьовує перше, що збіглося, а звичайна команда
`ufw allow` чи `ufw deny` ставить правило після вже наявних. Старіше й ширше
правило вище за списком вирішує першим. Виведіть правила з номерами й поставте
конкретне правило туди, де йому місце:

```sh
sudo ufw status numbered
sudo ufw insert 1 deny from 203.0.113.7
```

**Пакет зі стороннього репозиторію лишається на старій уразливій версії, хоча
решта системи оновлена.** `unattended-upgrades` встановлює оновлення лише з
джерел, перелічених у параметрі `Allowed-Origins`, а від початку там тільки
офіційні репозиторії Ubuntu. Репозиторій постачальника чи PPA, доданий пізніше,
оновлюють уручну або не оновлюють узагалі. Свідомо додайте його джерело до
переліку або дайте цьому пакету власний графік оновлень.

## Що почитати далі

- [Ubuntu Server documentation](https://ubuntu.com/server/docs)
  — власні посібники Canonical зі встановлення, налаштування й експлуатації
  Ubuntu на серверах.
- [Ubuntu release cycle](https://ubuntu.com/about/release-cycle)
  — піврічний ритм, календар LTS і дата завершення кожного випуску.
- [Automatic updates](https://documentation.ubuntu.com/server/how-to/software/automatic-updates/)
  — як `unattended-upgrades` обирає джерела і які параметри перезавантаження
  визначають, коли виправлення почнуть діяти.
- [Firewall](https://documentation.ubuntu.com/server/how-to/security/firewalls/)
  — `ufw` від першого ввімкнення до нумерованих правил, із шаром netfilter під
  ним.
- [How to upgrade your Ubuntu release](https://documentation.ubuntu.com/server/how-to/software/upgrade-your-release/)
  — `do-release-upgrade`, правило «по одному LTS за раз» і очікування першого
  точкового випуску.
- [Netplan documentation](https://netplan.readthedocs.io/en/stable/)
  — мережеві налаштування в YAML, якими користуються сервери Ubuntu, зокрема
  `netplan try` з автоматичним відкотом.

<https://engineer.company/uk/glossary/ubuntu/>
