Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🛡 Проект на выходные: Свой VPN за 2 минуты. wg-easy

Иметь свой VPN — это гигиена. Подключаться к домашнему серверу, безопасно сидеть через Wi-Fi в кафе или обходить ограничения.

WireGuard — это стандарт. Быстрый, легкий, современный. Но настраивать конфиги и ключи вручную — это долго.

wg-easy — это Docker-контейнер, который дает вам:

1. WireGuard сервер.
2. Веб-интерфейс для управления клиентами.
3. QR-коды для мгновенного подключения с телефона.

Готовый docker-compose.yml:

version: "3.8"
services:
wg-easy:
environment:
# Замените на ваш внешний IP или домен!
- WG_HOST=my.domain.com
- PASSWORD=super_secret_password
- WG_PORT=51820
- WG_DEFAULT_Address=10.8.0.x
- WG_DEFAULT_DNS=1.1.1.1
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
volumes:
- ./wg-easy-data:/etc/wireguard
ports:
- "51820:51820/udp" # Трафик VPN
- "51821:51821/tcp" # Веб-интерфейс
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1

Запуск: docker-compose up -d. Использование: Зайдите на http://<ip>:51821, создайте клиента, отсканируйте QR-код телефоном. Вы в безопасности.

Взгляд архитектора: Это пример Self-Service подхода. Сложная технология (VPN) упакована в удобный продукт. Идеально для Home Lab или предоставления доступа небольшой команде разработчиков.

#linux #docker #vpn #wireguard #wgeasy #selfhosted #weekendproject #гайд
5👎2
🧪 Зачем админу HomeLab?

На собеседованиях на позиции Senior/Lead часто спрашивают: «Что крутится у вас дома?». Почему? Потому что HomeLab — это полигон, где вы учитесь быстрее, чем на работе. На проде страшно ломать, дома — весело.

Starter Pack для админа 2025: Если у вас есть старый ноутбук или Raspberry Pi, вот что нужно поднять (в Docker, конечно):

Pi-hole / AdGuard Home: Режем рекламу на уровне DNS для всей квартиры. Семья скажет спасибо.

WireGuard / Headscale: Свой VPN. Безопасный доступ домой из любой точки мира.

Home Assistant: Умный дом без привязки к облакам вендоров.

Uptime Kuma: Красивый мониторинг внешних ресурсов.

Vaultwarden: Свой менеджер паролей (аналог Bitwarden).

Это не просто игрушки. Это опыт настройки сетей, контейнеризации, безопасности и Nginx Proxy Manager в безопасной среде.

#homelab #selfhosted #docker #learning #petproject
3
🏗 Docker: Multistage Build — худеем в 10 раз

Типичная ошибка новичка: в Docker-образе лежат исходники, компиляторы (GCC, Go), кэши и сам бинарник. Образ весит 800 МБ. Архитектор использует Multistage Build.

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

Пример (Go/C++/Rust):


# Этап 1: Сборка (Builder)
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp main.go

# Этап 2: Финал (Production)
# Берем Alpine (5 МБ) или Distroless
FROM alpine:latest
WORKDIR /root/
# Копируем ТОЛЬКО бинарник из первого этапа
COPY --from=builder /app/myapp .

CMD ["./myapp"]

Профит:

1. Размер: Было 800 МБ → Стало 20 МБ.

2. Безопасность: В проде нет компиляторов и исходного кода — хакеру сложнее развернуться.

3. Скорость: Быстрее пушится в Registry и скачивается на сервер.

Если ваши образы весят гигабайты — сегодня самое время их переписать.

#docker #devops #optimization #bestpractice #architecture
👍1
👀 Uptime Kuma: Мониторинг для людей

Zabbix слишком сложен для домашнего сервера или быстрого проекта? Prometheus требует Grafana? Попробуйте Uptime Kuma.

Это современный Self-Hosted инструмент мониторинга с красивым UI.

Что умеет:

Пинговать хосты (HTTP/s, TCP, DNS, Ping).
Проверять SSL-сертификаты (и орать, когда истекают).
Красивые Status Pages (как у облачных провайдеров).
Уведомления в Telegram, Discord, Slack.

Установка за 30 секунд (Docker):
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

Перейдите на http://localhost:3001 и наслаждайтесь.

Идеально, чтобы следить за своим сайтом, домашним роутером или VPN-сервером.

#homelab #monitoring #docker #opensource #tools
🔥3
🔑 Authentik: Единый вход для домашней лабы

У вас дома крутится Grafana, Portainer, Home Assistant и торренты. Везде свои логины/пароли. Это неудобно и небезопасно.

Настройте Authentik (или Keycloak, но Authentik легче).

Что это: Это ваш личный Identity Provider (IDP). Вы один раз входите в Authentik, и он пускает вас во все остальные сервисы (SSO).

Почему это круто:


Безопасность:
Можно закрыть все сервисы за Authentik и прикрутить 2FA (Google Authenticator) даже туда, где его не было (например, к старому веб-интерфейсу роутера).

Удобство:
Красивый дашборд со всеми вашими приложениями.

Поднимается в Docker за 5 минут. Почувствуйте себя Enterprise-архитектором у себя дома.

#security #homelab #sso #authentik #docker #selfhosted
🐻 Uptime Kuma: Твой личный Status Page

У тебя дома крутится Home Assistant, Plex, NAS и VPN. Как узнать, что VPN упал, пока ты в кафе? Zabbix для дома — это оверхед. Поставь Uptime Kuma.

Это невероятно красивый и простой инструмент для мониторинга, который выглядит как профессиональные статус-страницы (StatusPage.io).

Что умеет: Пинговать HTTP(s), TCP, Ping, DNS. Проверять срок действия SSL-сертификатов (напомнит заранее!). Слать уведомления в Telegram, Discord, Slack. Рисовать красивые графики аптайма ("сердечный ритм").

Запуск в Docker (одной командой):


docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

Заходи на http://localhost:3001, настрой за 5 минут и чувствуй себя спокойным.

#homelab #monitoring #uptimekuma #docker #selfhosted #tools
🎛 Homepage: Сделай своему серверу красиво

У тебя крутится 20 контейнеров: Portainer, Grafana, Plex, Sonarr... Ты реально помнишь все эти порты? localhost:9000, :3000, :8123? Хватит держать закладки в браузере. Собери их в единый Command Center.

Встречайте Homepage — самый современный, быстрый и красивый дашборд на данный момент.

Почему он рвет конкурентов (Heimdall/Organizr): 💎 Визуал: Выглядит как UI из фантастических фильмов. Поддержка видео-фонов и прозрачности. Скорость: Статика. Грузится мгновенно. 🐳 Интеграция: Он сам стучится в Docker API и показывает:

* Статус контейнеров (Running/Stopped).
* Нагрузку CPU/RAM в реальном времени прямо на иконке.
* Сколько торрентов качается в Transmission.

Конфиг — чистый YAML (как мы любим):


- Docker:
- Portainer:
icon: portainer.png
href: http://localhost:9000
widget:
type: portainer
url: http://portainer:9000
key: <api-key>

Это тот случай, когда админка приносит эстетическое удовольствие.

#homelab #dashboard #homepage #ui #selfhosted #docker #design
👍2💯1
🚀 DevOps: Очистка старых Docker-образов по расписанию 🧹

Если твой сервер внезапно перестал отвечать, проверь место на диске. Часто причиной становятся гигабайты «висячих» (dangling) слоев и старых образов Docker, которые копятся после каждого деплоя. В 2026-м ручная чистка — это моветон.

Техническое решение:
Используем встроенную систему очистки Docker с фильтрами, чтобы не снести лишнее.


Команда для тотальной, но безопасной чистки:


# Удалить все неиспользуемые контейнеры, сети и образы (dangling)
docker system prune -f

# Удалить вообще все образы, которые не используются ни одним запущенным контейнером
docker image prune -a --force --filter "until=168h"

Фильтр until=168h удалит только те образы, которые старше недели, оставив свежие билды для быстрого отката (rollback).

#docker #devops #optimization #linux #cleanup #sysadmin #automation #admin_future
🎓 Собеседование сисадмина. Выпуск #2: Контейнеры и сетевой хардкор

Привет, коллеги! Продолжаем серию постов для тех, кто хочет уверенно чувствовать себя на техническом интервью. Сегодня разберем три каверзных вопроса, которые обожают задавать на позиции Middle/Senior System Engineer.

Вопрос 1: «В чем разница между CMD и ENTRYPOINT в Dockerfile?»
Ответ новичка: «И то, и другое запускает команду при старте контейнера».
Ответ инженера: * ENTRYPOINT — это основная команда, которая превращает контейнер в исполняемый файл. Её сложно переопределить при запуске (`docker run`).
* CMD — это аргументы по умолчанию для ENTRYPOINT. Если вы укажете свои аргументы в конце `docker run`, они полностью заменят то, что написано в CMD.
* Pro-tip: На собеседовании скажите, что лучшая практика — использовать их вместе. Например: `ENTRYPOINT ["/usr/bin/nginx"]` и `CMD ["-g", "daemon off;"]`. Это позволяет гибко менять параметры запуска, не ломая логику образа.

Вопрос 2: «Что такое Docker-слои и почему размер образа имеет значение?»
Ответ новичка: «Слои — это шаги в Dockerfile. Чем меньше образ, тем быстрее он качается».
Ответ инженера:
1. Каждая инструкция (`RUN`, `COPY`, `ADD`) создает новый слой, который кешируется и занимает место.
2. Copy-on-Write: Если файл меняется в верхнем слое, он копируется из нижнего, что раздувает образ.
3. Безопасность и скорость: Маленький образ (на базе Alpine или Distroless) уменьшает "поверхность атаки" (меньше лишних утилит — меньше дыр) и ускоряет деплой в CI/CD.
Совет: Упомяните Multi-stage builds. Это сразу покажет, что вы умеете собирать оптимизированные образы, оставляя весь "мусор" (компиляторы, исходники) во временных контейнерах.


Вопрос 3: «Клиент жалуется: "Сайт не открывается". Вы пингуете сервер — пинг идет. В чем может быть проблема?»
Ответ новичка: «Наверное, упал веб-сервер, надо перезагрузить».
Ответ инженера: Пинг (ICMP) подтверждает только то, что сетевой уровень (L3) и узел живы.
1. Порты (L4): Проверяем, слушает ли веб-сервер нужный порт (80/443) через `telnet` или `nc -zv`.
2. MTU: Если маленькие пакеты (пинг) проходят, а большие (HTTP-трафик) — нет, проблема в MTU/MSS на пути следования. Пакеты просто дропаются без фрагментации.
3. Firewall: Возможно, ICMP разрешен, а TCP/443 закрыт на внешнем или внутреннем (iptables/nftables) фаерволе.
4. SSL/TLS: Проверяем, не истек ли сертификат. Браузер может блокировать соединение, хотя сервер работает.


💡 Золотое правило собеса: Когда вас спрашивают про траблшутинг, всегда идите по модели OSI снизу вверх. От физики и линков до прикладного уровня. Это демонстрирует системный подход, а не хаотичное "тыканье" в конфиги.

Сохраняйте, запоминайте и не давайте застать себя врасплох!

#собеседование_AF #docker #devops #networking #osi #sysadmin #admin_future
👍3
🚀 DevOps: Podman 5.0 — запускаем контейнеры без Root и лишних демонов 🛡️

Если ты всё еще используешь Docker-демона, который крутится под рутом, у нас для тебя новости из 2026 года. Podman окончательно стал взрослым. Главная фишка пятой версии — полностью переписанный сетевой стек (pasta), который сделал Rootless-контейнеры (запуск от обычного юзера) такими же быстрыми, как и обычные.

Техническая суть:
Podman не требует запущенного демона (daemonless) и позволяет запускать контейнеры в изолированных User Namespaces. Если хакер «сломает» контейнер, он окажется внутри системы с правами обычного бесправного пользователя.


Команды для старта:

# Запуск контейнера от обычного пользователя (без sudo!)
podman run -d --name my-app -p 8080:80 nginx

# Генерируем systemd-юнит, чтобы контейнер сам стартовал после ребута
podman generate systemd --name my-app --files --new

Зачем это нужно: Это стандарт безопасности. В 2026 году запуск Docker под root в продакшене без веской причины считается дурным тоном.

#devops #containers #podman #docker #security #sysadmin #admin_future
📦 Linux: Наводим порядок в Docker — удаляем «висячие» ресурсы

Коллеги, признавайтесь: как часто вы заходите на сервер и обнаруживаете, что Docker сожрал всё место образами годичной давности и остановленными контейнерами, которые «может еще пригодятся»? В 2026-м контейнеризация повсюду, и мусор в /var/lib/docker — это главная причина алертов по дискам.

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


Магическая команда для терминала:


# Удаляем неиспользуемые контейнеры, сети и "висячие" (dangling) образы
docker system prune -f

# А если нужно вычистить ВООБЩЕ всё неиспользуемое (включая старые тома)
docker system prune -a --volumes -f


Чтобы не плодить сущности. Каждый docker build оставляет после себя слои, а каждый docker stop — мертвое тело контейнера. Регулярный запуск этой команды (лучше в cron раз в неделю) экономит десятки гигабайт и избавляет от путаницы при просмотре списка образов.


Вывод: Чистый Docker — залог быстрого деплоя. Не превращайте свой сервер в кладбище контейнеров.

#linux #docker #devops #cleanup #sysadmin #admin_future
🐧 Linux: живёшь под root в контейнере — живёшь опасно. Исправляем за 10 минут

Коллеги, воскресный пост про вещь, которую игнорируют даже опытные администраторы. Зайди в любой Docker-окружение на среднестатистическом сервере и запусти:


docker inspect $(docker ps -q) --format '{{.Name}}: User={{.Config.User}}'


Готов поспорить — большинство контейнеров покажут пустой User. Это означает root внутри. 79% Linux-атак в 2026 году используют легитимные системные инструменты — bash, cron, curl. Контейнер с root-процессом при любом побеге из namespace превращается в полноценный вектор атаки на хост.

Исправляется в три шага:


# В Dockerfile: создаём непривилегированного пользователя
FROM ubuntu:24.04

RUN groupadd -r appgroup && \
useradd -r -g appgroup -s /sbin/nologin appuser

# Устанавливаем зависимости под root — пока ещё нужно
RUN apt-get update && apt-get install -y nginx && \
chown -R appuser:appgroup /var/log/nginx /var/cache/nginx

# Переключаемся на непривилегированного
USER appuser

CMD ["nginx", "-g", "daemon off;"]



# Для уже запущенных контейнеров — аудит прямо сейчас:
# Кто реально запускает процессы внутри:
docker exec <container> ps aux | head -5

# В docker-compose.yml — добавляем user для каждого сервиса:
# services:
# app:
# image: myapp:latest
# user: "1001:1001" # uid:gid непривилегированного пользователя

# Запрещаем privilege escalation на уровне демона Docker:
# В /etc/docker/daemon.json:
# {
# "userns-remap": "default",
# "no-new-privileges": true
# }

# Проверяем что флаг no-new-privileges работает:
docker run --security-opt no-new-privileges:true \
--user 1001 alpine whoami


Зачем это нужно:
Контейнер не является изолированной средой по умолчанию. Безопасность зависит от корректной настройки. Запуск под root — это не дефолт ради удобства, это дефолт ради лени. После вчерашней CVE-2026-31431 «Copy Fail» — любой непривилегированный пользователь на хосте мог стать root. Если контейнер уже запускается как root — второй шаг атаки не нужен.

Итог: один Dockerfile и десять минут — и твои контейнеры перестают быть тривиальным вектором атаки. Запусти аудит сегодня.

#linux #docker #containers #security #hardening #sysadmin #admin_future