Linux Skill - Освой Linux c нуля до DevOps
11.3K subscribers
56 photos
100 videos
481 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
🔍 Как объединить логи всех контейнеров в одном месте

Привет, укротитель логов!

Вчера в комментах подсказали инструмент logdy — теперь смотрю все логи через браузер. Один бинарник, никаких зависимостей. Показываю все режимы работы.

Установка за 10 секунд

# curl https://logdy.dev/install.sh | sh


## Простой режим — один лог

# tail -f /var/log/syslog | logdy --ui-ip=0.0.0.0


Или так:
# logdy --ui-ip=0.0.0.0 follow /var/log/syslog


Открывай https://твой-ip:8080 — логи в браузере!

Логи Docker контейнера

# docker logs 761965fa13b2 --follow | logdy --ui-ip=0.0.0.0


Объединение нескольких контейнеров

Запускаем logdy в режиме сокетов:
# logdy --ui-ip=0.0.0.0 socket 8123 8124


Направляем логи каждого контейнера:
# docker logs d20339949095 --follow | logdy forward 8123
# docker logs 761965fa13b2 --follow | logdy forward 8124


Теперь все логи в одном интерфейсе с фильтрацией по источнику!

Для локальной разработки

# node app.js | logdy


В VS Code: Ctrl+Shift+P → "Simple Browser: Show" → https://localhost:8080

API режим с токеном

Запускаем с API:
# logdy --ui-ip=0.0.0.0 --api-key=secrettoken


Отправляем логи через curl:
curl --location --request POST 'https://1.2.3.4:8080/api/log' \
--header 'Authorization: Bearer secrettoken' \
--header 'Content-Type: application/json' \
--data '{"logs": [{"log": "this is a log message as a string" }],"source":"machine identifier"}'


Режим stdin для пайпов

# logdy stdin


Фишки logdy:
- Парсит JSON логи автоматически
- Разбивает на колонки
- Фильтрация и поиск в реальном времени
- Защита паролем через ключи запуска
- Экспорт логов

💡 Где выручает:
- Отладка микросервисов
- Мониторинг нескольких контейнеров
- Быстрый просмотр логов без SSH
- Демо для заказчика

Итог: один инструмент покрывает 90% задач с логами. Особенно круто для Docker-окружения.
____________________

Дополнительный материал:
🧠 - Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию
🧠 - Удаление файлов и каталогов без стресса
🧠 - Создание Docker Образов и Магия Сетей: От Одиночных Узлов до Docker Swarm

#Linux_Mastery #logs #devops #docker #monitoring #tools
👍9🔥7
Media is too big
VIEW IN TELEGRAM
🔥 Как я ускорил поиск с 10 секунд до миллисекунд

Привет, цифровой архитектор!

Твой поиск по базе тормозит как трактор в болоте? Пользователи ждут результаты вечность, а ты не знаешь, как это починить? Сейчас покажу реальное решение.

📍 Таймкоды видео:
00:00 — Введение в Elasticsearch
02:05 — Почему обычный поиск тормозит
05:49 — Основные понятия: индексы, документы, запросы
07:09 — Установка через Docker
08:23 — Базовые команды GET, PUT, POST
10:51 — Добавление и обновление документов
14:19 — Настройка поиска и ранжирование
18:29 — Реальный пример: веб-приложение на Spring Boot
25:43 — Тестирование и результаты

🚀 Попробуй настроить у себя и сравни скорость!

🌐 Источник: https://youtu.be/vxE1aGTEnbE?si=1tTdg2QASMGfF6f_
____________________

Дополнительный материал:
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации
🧠 - Linux Mastery: Управление разрешениями каталогов с помощью chmod
🧠 - Станьте мастером управления пользователями и группами в Linux с помощью команд adduser и addgroup

#Linux_youtube #Elasticsearch #DevOps #Search #Docker #Performance #Database
🔥3
Что делает эта команда?

adduser --disabled-login [OPTIONS] user


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍4👀2
Media is too big
VIEW IN TELEGRAM
🔧 Устанавливаем полноценный Linux на MacBook с M1

Можно ли жить на Linux, если у тебя MacBook с Apple Silicon?
Автор проверяет это вживую: Fedora AArch64, KDE, Steam, Docker, OBS — всё на голом железе без виртуалок.

👨‍💻 Что в видео:
— Установка Linux с нуля на Mac M1
— Автомонтирование, Steam, Docker, OBS
— Что работает, что нет (Thunderbolt, USB 4, Touch ID)
— Настройки для игр, DevOps и реального использования

🌐 Источник: https://www.youtube.com/live/riKVQjbO-nU?si=8bOjeM8RVXdX88A2

#linux #macbook #fedora #asahi #arm64 #devops
👍8🔥4
🔥 Fstab блокирует загрузку? Переходи на systemd

Привет, мастер монтирования!

Облачные провайдеры давно используют systemd для управления дисками в твоих виртуалках. Я однажды чуть не потерял данные, не зная этого.

👉 Показываю, как systemd заменяет fstab и почему это лучше

#Linux_Mastery #systemd #mount #linux #devops #storage
👍7👀4
Что делает эта команда?

ar [OPTIONS] archive_name member_files


Не гугли — напиши в комментах 👇

#linux #bash #useradd #devops #вопрос
👍5
Media is too big
VIEW IN TELEGRAM
📉 Диагностика производительности в Linux: с чего начать?

Если top, iotop, perf, uptime и vmstat вызывают только лёгкую тревогу, а не понимание — это видео для тебя.

Разбираем, как анализировать ресурсы, собирать метрики, строить флеймграфы и не ловить фантомные баги при помощи методики Брендона Грега.

🌐 Источник: https://www.youtube.com/watch?v=bGqdRyXWPP0

#linux #performance #diagnostics #devops #monitoring
👍11
Media is too big
VIEW IN TELEGRAM
🔧 Забудь про Helper Scripts — настраиваем Proxmox вручную и понимаем каждый шаг

Привет, цифровой архитектор!
Устал от готовых скриптов, которые делают всё за тебя, но ты не понимаешь, что происходит? Этот свежий гайд Proxmox 8.3 — для тех, кто хочет разобраться в каждом шаге.

#Linux_youtube #proxmox #virtualization #homelab #linux #devops
👍9
🔧 20+ переменных Bash, которые ты точно не использовал

Привет, повелитель скриптов!

Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.

📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя

👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь

🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС

⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды

📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик

🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов

🔖 Сохрани шпаргалку — пригодится в каждом скрипте!

#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍8🔥3
🔑 Уязвимость: Почему добавление в группу Docker равносильно sudo su -

Привет, цифровой архитектор!

Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода sudo при работе с Docker. Решение простое: добавить своего пользователя в группу docker. Удобно? Да. Но это одна из самых критических ошибок безопасности в Linux!

В этом посте разберем, почему добавлять пользователя в группу docker равносильно вручению ему полных прав root на хост-машине.

📌 Ошибка: Запуск Docker без sudo

Для удобства многие инженеры выполняют всего одну команду:

# Не делай так, если не понимаешь рисков!
sudo usermod -aG docker $(whoami)


С этого момента любой член группы docker может выполнять команды Docker. Но проблема в том, что Docker-демон по умолчанию работает от имени root.

🚨 Почему это критическая уязвимость?

Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:

1. Смонтировать корневую файловую систему хост-машины (например, /) в контейнер.
2. Получить полный доступ к /etc/shadow (теневой файл паролей) и другим критическим системным файлам.
3. Выполнить любую команду от имени root на хосте.

В результате, член группы docker может легко повысить свои привилегии до суперпользователя, полностью обходя систему sudo.

💡 Вывод: Практика, которая ломает всё

Использование группы docker ломает фундаментальный принцип изоляции привилегий в Linux. Удобство не стоит безопасности.

Если ты используешь это решение, ты должен понимать, что любой злоумышленник, получивший доступ к этой учетной записи, получит безусловный доступ к хост-системе.

#Docker #Security #Linux #SysAdmin #DevOps
👍22
Media is too big
VIEW IN TELEGRAM
⚙️ Установка Ubuntu Server и CasaOS Пошаговое руководство

Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.

🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
👍12🔥1👀1
🧠 Запусти аудит зарубежных IP за 1 секунду на своем VPS

Привет, техноэнтузиаст!

Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.

Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.

📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.

# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash


Как это работает:
1. curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).
2. | bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.

💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.

#Linux #Bash #DevOps #VPS #CLI #Security
👍9
💡 Systemd обещает быструю загрузку, но твоя система тормозит?

Привет, цифровой архитектор! 👋

Классика: сам демон работает быстро, но вынужден ждать ленивые юниты, которые создают "критическую цепочку" задержек. Покажу, как быстро найти виновника и устранить проблему с помощью двух команд.

1. 🔍 Кто виноват: Анализ времени запуска

Команда systemd-analyze blame покажет точное время, которое каждый юнит потратил на запуск, сортируя их по убыванию.


# Выводит список юнитов, отсортированный по времени запуска
systemd-analyze blame

Назначение: Быстрый поиск юнитов, которые стартуют медленнее всего.

2. ⛓️ Поиск узкого места: Критическая цепочка

Если юнит стартует быстро, но при этом висит в топе, значит, он кого-то ждет. Нам нужно увидеть цепочку зависимостей, которая создает задержку.


# Анализ цепочки зависимостей, которая замедляет запуск системы
systemd-analyze critical-chain

Назначение: Показывает, какой именно юнит или зависимость блокирует загрузку критических служб.

Частый пример: docker.service ждет поднятия сети (systemd-networkd-wait-online.service). Это бессмысленно, если у Docker нет жесткой зависимости от сети на старте.

3. 🛠️ Устраняем задержку через override

Чтобы «отвязать» Docker от медленной сети, используем правильный подход systemd — не трогаем оригинальный файл юнита, а создаем прокладку override.conf:


# Открыть редактор для создания override.conf
sudo systemctl edit docker.service

# В открывшийся файл вставьте:
[Unit]
After=network.target
Wants=network.target

Назначение: Переопределяем параметры After и Wants, чтобы Docker не ждал некритичные сетевые службы.

После этого не забудьте применить изменения:


# Применить изменения
sudo systemctl daemon-reload
sudo systemctl restart docker


Важно: Использование systemctl edit создает отдельный файл, который не будет перезаписан при обновлении пакета Docker.

💡 Вывод: Регулярное использование systemd-analyze позволяет держать под контролем стартовую производительность сервера и избегать фантомный задержек, которые съедают рабочее время.

#Linux #systemd #CLI #DevOps #Optimization
👍12🔥1
🚀 Systemd + Bash: Мониторинг зависшего PHP-FPM за 5 строк кода

Привет, повелитель терминала!

Твой php-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.

Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.

📌 Авто-чистка зависших FPM

Этот скрипт ищет дочерние процессы php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.

# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')

if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9

# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi


💡 Фишка: Ты можешь запускать этот скрипт через cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.

#Linux #Bash #DevOps #автоматизация #мониторинг
👍3
🔑 Как автоматизировать multi-tenancy в Nginx через Redis/etcd.

Привет, опытный инженер! 👋

Внедрение multi-tenancy всегда сопровождается одной и той же болью: как быстро маршрутизировать входящий трафик к нужному бэкенду, если клиенты (арендаторы) добавляются постоянно? Хуже того, если мы используем stream (Layer 4) для RDP/SSH/VPN, где ручная перезагрузка Nginx из-за нового конфига — это недопустимый downtime.

Статический конфиг нам не подходит. Решение — динамическая маршрутизация на основе SNI (Server Name Indication) с использованием модуля njs, где список арендаторов хранится во внешней БД (Redis или etcd).

📌 Динамический Upstream по SNI с njs

На L4 Nginx (или Angie) может прочитать имя сервера (SNI) во время TLS-рукопожатия и на основе этого имени принять решение о маршрутизации. Модуль njs позволяет сделать этот процесс динамическим.

Шаг 1. Настраиваем njs для чтения SNI

Нам нужен скрипт на njs, который возьмёт имя хоста из SNI и, используя внешний модуль, найдёт соответствующий upstream в Redis или etcd (имитация логики):

// sni_router.js
function route(s) {
// Получаем имя хоста из SNI
var hostname = s.ssl_server_name;

// Здесь должна быть логика поиска в Redis/etcd
// Для примера, ищем в предопределенном словаре:
var tenantMap = {
'client_a.example.com': 'backend_pool_a',
'client_b.example.com': 'backend_pool_b'
};

if (tenantMap[hostname]) {
return tenantMap[hostname];
}

// Если арендатор не найден, используем upstream по умолчанию
return 'default_pool';
}


Шаг 2. Конфигурируем stream и njs

В конфигурации Nginx (Angie) в блоке stream мы загружаем скрипт и используем его результат в директиве upstream.

# Загрузка njs модуля и скрипта
js_include sni_router.js;
js_set $backend_name sni_router.route;

stream {
upstream backend_pool_a {
server 10.0.0.1:443;
}
upstream backend_pool_b {
server 10.0.0.2:443;
}
upstream default_pool {
server 10.0.0.10:443;
}

server {
listen 443 ssl;
ssl_preread on; # Важно: позволяет Nginx читать SNI

# Динамически определяем upstream на основе результата njs-скрипта
proxy_pass $backend_name;
}
}


💡 Вывод
Такой подход позволяет полностью разделить список арендаторов (который может храниться в Redis/etcd и обновляться мгновенно) от статического конфига Nginx. Nginx (Angie) перечитывает njs-переменную $backend_name для каждого нового соединения, обеспечивая высокую доступность и нулевой downtime при добавлении новых клиентов. Это критически важно для масштабируемой и отказоустойчивой архитектуры.

#Nginx #DevOps #Stream #SNI #MultiTenancy #njs
🔥 Облегчи виртуализацию с Incus: простой старт

💻 Привет, мастер консолей и виртуализации!

🔍 Если тебе Proxmox кажется слишком громоздким и хочется легкого решения для одиночного хоста — Incus именно то, что нужно: простая установка и управление через CLI с мощным функционалом.

📌 Основные возможности Incus:

- Легкий запуск LXC и Docker контейнеров, VM на QEMU+KVM
- Использование официальных образов linuxcontainers.org
- Поддержка разного хранения: ZFS, LVM, Btrfs, Ceph и др.
- Управление через CLI и веб-интерфейс
- Настройка сети и NAT с DNSMASQ IPAM

# Установка пакетов на Debian 13
apt install incus incus-base qemu-system

# Инициализация административного пользователя
incus admin init

# Список доступных образов Debian
incus image list images:debian

# Запуск контейнера Debian 13
incus launch images:debian/13 debian-ct --storage default

# Подключение к контейнеру
incus exec debian-ct -- bash

# Запуск виртуалки Ubuntu
incus launch images:ubuntu/noble ubuntu-vm --vm --storage default

# Вход в Ubuntu VM
incus exec ubuntu-vm -- bash

# Основные команды для обзора
incus ls
incus info ubuntu-vm
incus storage list
incus network list


💡 Теперь ты знаешь, что Incus — это легкое и гибкое решение для виртуализации без ограничений Proxmox. Попробуй и сам убедись!

🔗 Официальный сайт и документация: linuxcontainers.org

🔗 GitHub репозиторий Incus: https://github.com/lxc/incus

#Linux #DevOps #Виртуализация #Incus #LXC #KVM #Linux_err24
Media is too big
VIEW IN TELEGRAM
🔐 SSH для сисадминов: безопасность и удобство за 17 минут

👋 Привет, защитник серверов!

Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.

Полезные ссылки из видео:

- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh

#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👍10
🛡️ Укрепляем SSHD: Почему тебе стоит включить ключи Ed25519

Привет, цифровой архитектор!

Настройка демона SSHD (sshd), который обеспечивает безопасное удаленное подключение к твоему серверу по протоколу SSH, — это то, с чего начинается любая административная работа. Конфигурация OpenSSH-сервера обычно хранится в файле /etc/ssh/sshd\_config.

Доступ к TCP-порту 22 (порт SSH по умолчанию) желательно ограничивать от публичного доступа. Вот замечания по ключевым директивам, которые помогут тебе повысить безопасность:

1️⃣ Аутентификация по паролю

Ты можешь оставить аутентификацию по паролю (PasswordAuthentication yes) на всякий случай, потому что при использовании несловарного пароля подобрать его злоумышленнику практически нереально.


PasswordAuthentication yes


- Закрываем ботов: Если ты решишь полностью отключить аутентификацию по паролю (PasswordAuthentication no), это немедленно отсечет большинство ботов, которые пытаются подобрать пароли, и твой журнал будет менее замусорен.
- Защита от перебора: По умолчанию разрешено 6 попыток аутентификации (MaxAuthTries 6). Ты можешь ограничить это число, например, до четырех (MaxAuthTries 4).
- Пустые пароли: Директива PermitEmptyPasswords no должна быть включена всегда, чтобы запрещать вход с пустым паролем.

2️⃣ Аутентификация с использованием публичных ключей

Это более надежный метод, чем аутентификация по паролю. По умолчанию он включен (PubkeyAuthentication yes). OpenSSH поддерживает несколько типов ключей, включая RSA, ECDSA и Ed25519.

- Преимущества Ed25519: Ключи Ed25519 основаны на эллиптических кривых и многими считаются обеспечивающими превосходную безопасность по сравнению с RSA. На практике они также намного короче.
- Файл ключей: Твой открытый ключ, который ты используешь для аутентификации, должен быть скопирован в файл ~/.ssh/authorized_keys на удаленном хосте.


💡 Вывод:
Помни, что SSH предназначен для обеспечения безопасного входа в оболочку и шифрует все данные сеанса. Если ты используешь OpenSSH, то настройки сервера хранятся в файле /etc/ssh/sshd\_config.


#Linux #DevOps #Security #SSHD #Ed25519
👍10
Media is too big
VIEW IN TELEGRAM
🌐 Почему каждому IT-специалисту нужно знать сети

👋 Привет, повелитель трафика!

Сети — в каждой вакансии: разработчик, тестировщик, DevOps, сисадмин. Разбираем OSI/ISO, TCP/IP, MAC и IP-адреса, порты, NAT, TCP vs UDP, DNS и траблшутинг. Всё кратко и понятно.

🔗 Полезные ссылки:
- Источник видео
- Сети для самых маленьких
- Комикс про DNS
- Про приватные подсети

#сети #networking #tcp #udp #dns #nat #devops #sysadmin #osiiso #ip
👍17
🔥 Настройка проброса портов в Incus: проще, чем в Proxmox

👋 Эй, укротитель виртуалок!

Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.

Установка веб-интерфейса Incus

Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.

Решение: Установи официальный пакет из репозитория Zabbly.

Вариант 1: Скачать пакет напрямую

# Качаем готовый .deb пакет
wget https://pkgs.zabbly.com/incus/stable/pool/main/i/incus/incus-ui-canonical_6.17-debian11-202510101456_amd64.deb

# Устанавливаем
dpkg -i incus-ui-canonical_6.17-debian11-202510101456_amd64.deb


Вариант 2: Подключить репозиторий

# Добавляем ключ репозитория
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc

# Создаём источник пакетов
sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/lts-6.0
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'

# Обновляем и ставим UI
apt update
apt install incus-ui-canonical


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

# Редактируем юнит
systemctl edit incus.service

# Добавляем переменную окружения
[Service]
Environment = INCUS_UI=/opt/incus/ui/

# Применяем изменения
systemctl daemon-reload
systemctl restart incus


Открываем доступ извне:

incus config set core.https_address :8443


Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.


🌐 Проброс портов: в 10 раз проще Proxmox

Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.

Решение: В Incus это делается за 3 клика или одной командой.

Пример: Пробросим порт 80 с хоста 192.168.137.14 в VM ubuntu24 с IP 10.253.116.184.

Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address: 192.168.137.14
- Listen port: 80, Protocol: TCP
- Target address: 10.253.116.184
- Target port: 80

Через CLI (одна команда):

incus network forward port add incusbr0 192.168.137.14 TCP 80 10.253.116.184 80


Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.

💡 Почему Incus удобнее для одиночного хоста?
IPAM из коробки — разбираешься за 2 минуты
NAT и DHCP работают сразу, ничего настраивать не нужно
Проброс портов через GUI за 3 клика или одну команду
Никаких iptables — всё просто и наглядно

Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.

🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus

🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/

#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
👍5