ServerAdmin.ru
25.9K subscribers
203 photos
24 videos
7 files
2.41K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Когда работаешь в консоли Linux, постоянно приходится использовать команду systemctl для управления службами systemd. Решил собрать наиболее популярные команды в шпаргалку, чтобы удобно было сохранить и пользоваться.

Запустить службу. После внедрения systemd постоянно путался и сначала писал имя службы, а потом команду start. Сейчас уже переучился.
systemctl start mysql

Добавить в автозагрузку:
systemctl enable nginx

Добавить сервис в автозагрузку и сразу запустить. Заменяет две предыдущие команды. Я не так давно узнал и стал использовать именно объединённую команду:
systemctl enable --now mariadb

Перечитать настройки служб. Обязательно нужно выполнить после того, как изменили какие-то настройки юнитов systemd.
systemctl daemon-reload

Список всех unit-files, а так же их состояний:
systemctl list-unit-files
Список выше можно ограничить по типам:
systemctl -t service
systemctl -t timer
systemctl -t mount

Посмотреть статус конкретной службы:
systemctl | grep ssh

Проверить статус автозапуска:
systemctl is-enabled nginx

Посмотреть конфигурацию юнита:
systemctl cat sshd

Перечислил основное, с чем самому приходится сталкиваться. Если пропустил какую-то популярную и полезную команду, дайте знать, добавлю в список. Про stop, restart, reload, status не стал писать. Очевидные команды. Есть еще is-active и try-restart, но на практике я их вообще не использую.

Добавлю еще, что с помощью systemctl можно перезагружать и завершать работу системы, но лично я по старинке использую старые команды reboot и shutdown.
systemctl poweroff
systemctl reboot

#terminal
Освойте востребованные ИТ-профессии в Университете Иннополис со скидкой 50%.

Набор проводится по направлениям DevOps и разработка на Android. Старт - 15 сентября.

Университет Иннополис запускает онлайн-курсы в рамках федерального проекта «Цифровые профессии». Государство оплачивает 50% стоимости обучения.

Онлайн-курсы идут 3,5 месяца с поддержкой преподавателя и наставника, опытных ИТ-специалистов. Выпускникам выдается диплом о профессиональной переподготовке.

Программа курса "Разработка мобильных приложений на базе Android":

— Языки программирования Java, Kotlin
— Android SDK
— Серверное администрирование
— Утилитарные библиотеки и сборщики
— Итоговый проект для портфолио

Программа курса "Linux и инструменты DevOps":

— Linux-системы
— DevOps-инструменты
— язык программирования Python
— сетевая диагностика и DNS
— настройка серверов и сервисов

Если вы начинающий разработчик, хотите профессионально прокачаться, то выбирайте понравившийся курс!
⠀⠀
По всем вопросам пишите 👉 @IT_Innopolis

#реклама
​​Все слышали про очень известный в прошлом сервис Hamachi, который потом переименовали в LogMeIn? Когда он только появился, это был прорыв. Можно было через интернет объединиться в локальную сеть и играть в сетевые игрушки, которые работали только в локальной сети.

С тех пор много воды утекло и подобных сервисов стало много, а сам Hamachi по моему, стал полностью платным. Я потестировал его современный аналог - Tailscale. Принцип работы тот же самый. Ставите себе на систему клиента, он все делает автоматически, подключая вас к вашей виртуальной локальной сети.

Клиенты есть под все современные платформы. Я для теста установил клиент на Windows и Centos 8. Они оба получили по новому сетевому интерфейсу с серым ip. По этим ip адресам они видят друг друга. Настройка максимально простая и удобная. В Windows просто ставишь клиент и авторизуешься своей учётной записью. В Centos было интереснее. Подключаешь репозиторий и ставишь консольный клиент. После установки получаешь ссылку, которую нужно открыть в браузере. После этого сервер тоже подключился к виртуальной локальной сети.

Сам сервис платный, но есть тариф Free, который позволяет одному пользователю подключить до 20-ти своих устройств. Для личного использования этого тарифа хватает за глаза. В платных тарифах куча дополнительных возможностей - управление сетями, разные авторизации и т.д.

Проект интересный и функциональный. Никаких лишних заморочек, настраивается максимально просто. Иметь какие-то особенные знания в сетях и сисадминстве в целом не надо. Настроить может любой пользователь компьютера. В личном кабинете удобная панель управления всем своим сетевым хозяйством.

https://tailscale.com

#vpn #tailscale
​​Небольшая шпаргалка по настройкам nginx для повышения безопасности веб сервера.

📌 Отключите server_tokens, чтобы nginx не показывал свою версию.
server_tokens off;

📌 Отключите старые версии tls и ssl. Сейчас нормально поддерживать только tls 1.2 и 1.3.
ssl_protocols TLSv1.2 TLSv1.3;
Также уделите внимание настройке ciphers, убрав те, что содержат уязвимости. Помочь в этом может сервис SSL Configuration Generator.

📌 Если есть возможность, ограничьте HTTP методы, убрав те, что вам точно не нужны.
location / {
limit_except GET HEAD POST { deny all; }
}

📌 Установите модуль ModSecurity.
https://github.com/SpiderLabs/ModSecurity
Хорошее видео по установке и настройке этого модуля:
https://www.youtube.com/watch?v=XzeO2EL4sLU

📌 Используйте заголовок X-Frame-Options. Это позволит защититься от click-jacking атак, явно указав, что страница может загружаться в том же frame, что и сам сайт.
add_header X-Frame-Options "SAMEORIGIN";

📌 Используйте заголовок Content-Security-Policy. Это позволит защититься от XSS атак.
add_header Content-Security-Policy "default-src 'self';" always;
Это только пример! Подобрать настройки политики стоит самостоятельно в каждом конкретном случае. Если нет желания разбираться, не настраивайте вообще. Еще информация по этой политике и nginx тут.

И не забывайте, что есть отличный сервис по генерации конфигов nginx на все случаи жизни. Я тестировал его, работает нормально, можно пользоваться.

Свой итоговый конфиг можно проверить на ошибки с помощью утилиты gixy, о которой я тоже уже писал ранее.

#nginx #webserver
DevSecOps Wine

В 2017 году происходит масштабная утечка данных Equifax в следствие отсутствии проверки SCA в процессе разработки.

В 2019 году уязвимость, связанная с runC, подвергает опасности тысячи кластеров Kubernetes.

В 2020 осуществляется серия атак на API Docker со стороны группировки TeamTNT с помощью легитимных образов Ubuntu и Weave Scope.

В 2021 уязвимость Dependency Confusion позволила внедрить вредоносный пакет в цепочки поставок Microsoft, Apple и сотни других компаний.  

Все это является следствием упущений в обеспечении DevSecOps

DevSecOps Wine - канал про выстраивание безопасной разработки и AppSec. Автор поднимает темы безопасности Kubernetes, Docker, облаков (AWS, GCP, Azure), а тажке того, что касается современных SAST, DAST, SCA и других средств, встраиваемых в CI/CD. Все это разбавляется темами Vault и Service Mesh.

Также обсудить тему devsecops можно в чате.

#реклама
​​Вчера потыкал любопытную панельку, которая умеет красиво отображать SLO (Service Level Objectives). Это примерно то же самое, что и SLA, которое все знают, но только для внутреннего пользования. То есть не обязательства перед другими, как в SLA, а внутренний показатель качества работы сервиса.

Речь пойдёт про SLO tracker. Это небольшая панелька для отображения в %% и минутах вашего SLO.

https://github.com/roshan8/slo-tracker
https://slotracker.com/

Зачем это нужно? Я хз, мне лично не нужно, потому что у меня нет отдельного монитора, куда можно выводить красивые дашборды и смотреть на них. И отчитываться мне ни перед кем не надо. Но если у вас есть отдел, который премируют по итогам месяца или квартала за отсутствие простоев, то такая панелька может быть как мотиватором, так и простой статистикой для отчётов.

SLO tracker имеет несколько готовых интеграций с Prometheus, NewRelic, Pingdom, Datatog. Для них в системе есть ссылка для вебхука, который надо повесить на нужное событие, за которым будете следить. Например, доступность сайта должна быть 99,9 в год. Значит можно поваляться примерно 526 минут за это время. Добавляем SLO в панель, вешаем вебхук в систему мониторинга на недоступность сайта и следим за SLO. Панель будет показывать, сколько уже повалялись в этом году и сколько еще можно провести в этом же состоянии.

Если нет системы мониторинга или готовой интеграции, события и их длительность можно руками добавлять через веб интерфейс. Самих метрик для SLO может быть много. Для просмотра их всех разом, есть отдельный дашборд. Можно завести подобную панель для контроля за аутсорсерами. Заносить туда руками простой по их вине, потом предъявлять.

Чтобы все это добро потрогать, достаточно запустить в докере:

git clone https://github.com/roshan8/slo-tracker
cd slo-tracker
docker-compose up --build -d

Демо потыкать можно тут - http://demo.slotracker.com:3000/

Это было для простых парней поиграться с панельками. Если у вас всё серьезно, вы devops и вам реально нужен хороший инстрeмент для контроля SLO, то смотрите в эту сторону - Sloth:

https://github.com/slok/sloth
https://sloth.dev/

#мониторинг
​​Продолжаю тему чатов. В этот раз рассмотрю любимый многими Rocket.Chat. Я его никуда не внедрял и скорее всего не буду. Чтобы освежить свои впечатления, решил установить и пощупать последнюю версию. Сначала думал статью написать, но по факту я нашел полностью рабочую инструкцию, по которой за 15 минут всё настроил. Не вижу смысла повторять.

Как я уже упоминал ранее, Rocket.Chat это JavaScript, а приложение для общения на Electron. Для меня это приговор. Мне совершенно не нравится эта связка, потому что она тормозная. Это самый существенный минус данного чата. Ставить приложение на компьютер нет никакого смысла. Там под капотом тот же Chromium. Проще всё в одном браузере открывать, нежели плодить их в системе.

К сожалению, сейчас очень много приложений написаны на Electron и тормозят, поэтому однозначно давать минус рокет чату не стоит за это. Но в связке с JavaScript получается минус в квадрате. Дальше расскажу о плюсах. Их у Rocket.Chat хватает. Стоит отдать ему должное.

Рокет предлагает самый большой функционал в бесплатной версии среди всех известных мне чатов. Тут не нужны никакие компромиссы. Есть, пожалуй, всё, что надо от чата. Что мне больше всего понравилось - расширенное управление правами и доступами. Можно настроить практически всё, что угодно и как угодно. В mattermost этого вообще нет в бесплатной версии.

В плане внешнего вида у меня тоже нет никаких претензий. Выглядит приятно, гармонично, интуитивно понятно. Пользоваться удобно. Очень много интеграций с другими продуктами. Rocket.Chat известная платформа. Практически везде увидите возможность интеграции с ней.

Подвожу итог. Если подбираете себе selfhosted чат, пробовать Rocket.Chat однозначно надо. Если вас не смущают технологии, на которых он построен, и устраивает быстродействие и работа клиента, то внедряйте и пользуйтесь. Продукт зрелый, известный, много кто пользуется. Каких-то явных проблем с ним нет.

https://rocket.chat/
https://github.com/RocketChat

Помимо своего сервера, есть возможность покупать чат по подписке как saas сервис. Цены раза в 3 ниже, чем за Slack. Вместо картинки с чатом, покажу вам лучше админку и настройки, которые там есть.

#chat #selfhosted
​​На прошлой неделе в официальном блоге Zabbix прочитал статью "5 основных причин использовать Zabbix для мониторинга сети". Решил тезисно перевести её и сохранить, чтобы можно было показывать тем, кто будет спрашивать "Почему Zabbix?" Примерно для этого же я написал в свое время статью сравнение Zabbix vs Prometheus. Теперь всегда даю ссылку, если меня кто-то спрашивает, зачем еще нужен Zabbix, если есть Prom. Одно другому не мешает.

1️⃣ Бесплатное решение с открытым исходным кодом. Пояснять тут нечего. У Zabbix нет платной версии. В open source всегда доступен полнофункциональный продукт. Продаётся только тех. поддержка, доработки, обучение и сертификация.

2️⃣ Обширный функционал. С помощью Zabbix можно реализовать абсолютно любые проверки. Никаких компромиссов и ограничений. Доступен как агентный, так и безагентный мониторинг, snmp, ipmi, modbus и другие протоколы. Стандартные механизмы обработки получаемых данных дополняются постобработкой с помощью javascript. Для триггеров тоже нет практически никаких ограничений. Свой внутренний синтаксис для их написания позволяет реализовать практически любую логику. Доступно множество готовых интеграций с системами оповещений. Есть возможность настроить многоступенчатые, гибкие планы рассылок уведомлений с условиями и зависимостями.

3️⃣ Все данные хранятся только у вас. Zabbix позволяет выполнять self-hosted установку на различные устройства. Все ваши данные всегда под вашим контролем. Вы сами выбираете, где, как и сколько их хранить, а так же откуда собирать. Никакой зависимости от сторонних сервисов как в случае с saas мониторингом (отсылка к New Relic наверное).

4️⃣ Хороший баланс функционала и простоты настройки. Стандартные настройки и шаблоны закрывают базовые потребности в мониторинге. Но при этом нет никаких ограничений в расширении функционала путём создания своих собственных шаблонов. Для этого есть все инструменты. Также Zabbix хорошо масштабируется на работу множества пользователей с ним без усложнения процедуры управления всем этим хозяйством.

5️⃣ Коммерческие услуги. Помимо помощи от большого open source сообщества вокруг Zabbix, у вас всегда есть возможность получить профессиональную техническую поддержку. И этим пользуются многие крупные коммерческие организации. Так же у Zabbix есть своя программа обучения и сертификации.

Видео на английском по этой же теме - https://www.youtube.com/watch?v=R525x4O89Qw Много конкретных примеров веб интерфейса на настроенном сервере. Если смотреть в Яндекс.Браузере, будет доступен синхронный перевод на русский язык (забавно послушать, docker image - образ доктора 😂).

#zabbix #мониторинг
​​Недавно узнал любопытную тему из области информационной безопасности, с которой раньше не пересекался. Как-то не было необходимости. По роду своей деятельности я обычно единоличный посетитель вверенных мне серверов. Редко кого-то приходится туда пускать в консоль. А даже если приходится, то чаще всего временно и несистемно.

Есть shell для пользователей, которые позволяют настраивать различные ограничения (restricted shell) на выполнение команд. Например, rsh или rbash. У них есть ряд встроенных ограничений. И есть целый набор трюков, которые позволяют эти ограничения обходить. Например, открыть vi и выполнить там:
:set shell=/bin/bash

Еще более простой трюк с awk:
awk 'BEGIN {system("/bin/sh")}'

То же самое можно сделать через find:
find / -name file01 -exec /bin/awk 'BEGIN {system("/bin/sh")}' \;

Если запрещены редакторы и использование > и >>, а нужно создать скрипт, существует такой ход:
echo "rm -rf /" | tee script.sh

И таких способов очень много. Я где-то видел репозиторий с десятками подобных способов обхода различных ограничений. Ссылку не сохранил, а сейчас не получилось найти. Буду рад, если кто-то подскажет.

Посмотрел на всё это и еще раз убедился, что в хорошего безопасника можно вырасти только из крепкого админа. Сама по себе эта профессия не может существовать, а должна быть ответвлением или следующим этапом профессии системного администратора. Та же самая история с devops.

Кто-то на практике занимался подобными настройками? В случае с linux терминалом мне кажется это нереально всё закрыть. Постоянно найдется какая-то лазейка. Я когда то давно подобными ограничениями занимался на терминальном сервере Windows. Отключал и ограничивал все инструменты, которые может использовать пользователь, чтобы что-то сломать. Оставлял только то, что надо для непосредственной задачи.

#bash #terminal #security
​​Если вам необходимо регулярно проверять хосты и сервисы на уязвимости, и не хочется колхозить различные проверки с помощью nmap и других сканеров, можете попробовать OpenVAS. Это Open Source проект.

https://github.com/atomicorp/gvm
https://github.com/atomicorp/openvas-docker
https://www.openvas.org/

Openvas представляет из себя сканер уязвимостей и всю соответствующую обвязку вокруг него для организации полноценной системы. Он автоматически обновляет базы уязвимостей, запускает запланированные задачи по базе добавленных хостов, отправляет задачи и т.д.

Для установки есть свой репозиторий для rpm-based дистрибутивов. Попробовать проще всего, запустив openvas в docker.

docker run -d -p 443:443 --name openvas atomicorp/openvas

Далее идём в веб интерфейс, авторизуемся как admin / admin. Первым делом нужно добавить host в разделе Configuration -> Targets. Затем создать задачу в Scans -> Tasks. Теперь задачу можно запустить и посмотреть, как всё это работает. Настройка интуитивна, так что больших проблем возникнуть не должно.

После работы задачи, можно посмотреть отчёт. Ниже пример подобного отчёта при сканировании чистой системы Centos 8 с единственно открытым ssh портом.

#security #selfhosted
​​Я регулярно пользуюсь терминалом Windows. Решил его немного украсить. Результат можете посмотреть в прикреплённом изображении. Если хотите себе что-то подобное, то читайте дальше, как это сделать.

1️⃣ Идём в Microsoft Store и устанавливаем Windows Terminal.

2️⃣ Скачиваем и устанавливаем шрифты Nerd Fonts.
https://github.com/ryanoasis/nerd-fonts/releases
Качаем файл CascadiaCode.zip, распаковываем шрифты и устанавливаем. Запускаем Windows Terminal и устанавливаем шрифт CaskaydiaCove NF.

3️⃣ Открываем консоль PowerShell и устанавливаем модуль oh-my-posh:
Install-Module oh-my-posh -Scope CurrentUser
Что это такое, читаем на сайте: https://ohmyposh.dev
Сморим список всех доступных тем и выбираем ту, что понравится.
Get-PoshThemes
Я выбрал Aliens, устанавливаю её в текущий терминал и смотрю на неё.
Set-PoshPrompt -Theme Aliens
Если нравится, то ставлю ее на постоянку. Для этого запускаю редактор профиля:
code $PROFILE
И пишу в текстовый файл:
Import-Module oh-my-posh
Set-PoshPrompt -Theme Aliens
Перезапускаем терминал и проверяем новую тему оформления.

4️⃣ Устанавливаем значки иконок и раскраску консоли:
Install-Module -Name Terminal-Icons -Repository PSGallery
Испортируем модуль в консоль и проверяем работу:
Import-Module -Name Terminal-Icons
Некоторые иконки директорий и файлов должны получить уникальные изображения и подсветку. Если всё в порядке, добавляем модуль в профиль для автозагрузки:
code $PROFILE
Добавляем в конец:
Import-Module -Name Terminal-Icons

5️⃣ Пользуемся настроенной красотой.

Этот же самый профиль можно настроить и для WSL консоли.

#windows #terminal
​​Достаточно известная и функциональная программа для нагрузочного тестирования - k6. Проект open source, можно установить у себя. Если есть желание, покупается по схеме saas в облаке. K6 недавно вошёл в состав Grafana Labs. Так что теперь этот продукт станет суперсовременным и молодёжным. Есть интеграция с InfluxDB и Grafana.

https://k6.io
https://github.com/grafana/k6

Если только подыскиваете себе подобный инструмент, то стоит начать с k6. Ранее я уже описывал тулзы подобного рода: yandex.tank и artillery.io. Аrtillery тоже молодёжный - yaml конфиги, автоматизация и javascript в бэкенде. А у k6 - go, что выглядит привлекательнее, так как быстрее. Сами же тесты на javascript пишутся.

Поставить k6 проще простого. Для rpm и deb based дистрибутивов есть репозитории. А запустить можно и в docker. Готовим docker-compose.yaml:

version: '3.4'
services:
 k6:
  image: loadimpact/k6:latest
  command: run /test.js
  volumes:
   - ./test.js:/test.js

Пишем простой скрипт для теста. В течении 30 секунд в 10 потоков бомбим https://test.k6.io (не роняйте сайт своей школы или управы района)

import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
 vus: 10,
 duration: '30s',
};
export default function () {
 http.get('https://test.k6.io');
 sleep(1);
}

Запускаем тест:

docker-compose up

Результат увидите тут же в консоли. Все остальные подробности в документации. Она там очень качественная, как и для всех продуктов Grafana Labs.

#нагрузочное_тестирование
​​У меня уже было много заметок про различные системы мониторинга (#мониторинг). Сегодня будет еще одна - Icinga. Это весьма зрелая и качественная система мониторинга, на которую стоит обратить внимание, если выбираете, на чём остановиться и еще не решили, что вам нужен Zabbix или Prometheus.

Изначально это был форк Nagios. Но со временем их пути сильно разошлись, так что можно считать Icinga самостоятельным продуктом. Причем качественным и полностью бесплатным:

https://icinga.com/
https://github.com/Icinga

Icinga полноценная система мониторинга, которая включает в себя:
- Автоматизацию мониторинга инфраструктуры, в том числе сетевой, в том числе с использованием иерархической распределенной структуры.
- Сбор метрик и логов.
- Аналитику.
- Оповещения.
- Отчёты.
- Визуализацию, в том числе с помощью дополнительных модулей для дашбордов.

В общем, там есть всё, что надо, для полноценного мониторинга. Данные может собирать как с помощью агентов, так и без них. Бэкенд написан на C++, веб интерфейс на php. В качестве БД поддерживает MySQL, Oracle Database, PostgreSQL.

Когда тестировал, очень понравился красивый, лакончиный, отызвчивый и шустрый веб интерфейс. Прям приятно по нему потыкать, все быстро открывается, логично распределено. Попробовать проще всего, развернув всё через docker-compose. Есть репозиторий:
https://github.com/lippserd/docker-compose-icinga
Там готовый compose файл, но есть ошибки в Dockerfile в /env/icingaweb2/. Рабочая версия файла будет такая:

FROM alpine/git
WORKDIR /
COPY icingadb-load-monitoring.patch .
RUN git clone https://github.com/Icinga/icingadb-web.git icingadb && \
cd icingadb && \
git checkout e6e5bb30d37eacaf5498f96412b4b5f400cc9309 && \
cd .. && \
git apply --directory icingadb icingadb-load-monitoring.patch

FROM icinga/icingaweb2:2.9
USER root
RUN rm -rf /usr/share/icingaweb2/modules/icingadb/*
USER www-data
COPY --from=0 /icingadb /usr/share/icingaweb2/modules/icingadb

Используйте эту репу только для тестов. Я не знаю, кто и зачем ее сделал и можно ли доверять всему. На постоянку лучше развернуть без докера.

После запуска всех контейнеров идите в веб интерфейс на порт 8080, учетка - icingaadmin / icinga.

Можете также публичное demo посмотреть:
https://icinga.com/demo/

#мониторинг #selfhosted
Очередная перегитлеровка. На этот раз речь пойдёт о Docker. Хипстеры взяли контейнеры, плотненько их забили по нодам кластера. Один из контейнеров вызвал kernel panic и всё упало.

Гитлер их разносит за то, что в прод тащат непроверенные контейнеры из docker hub, которые написали русские хакеры. За то, что там конструкции типа: curl | sudo bash, за то, что знают только то, что написано в статьях на hackernews и т.д.

Видео как бальзам на душу для тех, кто не любит Docker. Гитлер популярно объяснил, что с ним не так. Особенно доставила его фраза:

Isolation my ass!

и слова успокаивающей плачущую женщину:

Don't cry, you can run bash on Windows 10 now.

Юмор на 10 из 10, очень сочно.

https://www.youtube.com/watch?v=PivpCKEiQOQ

#юмор #видео
​​В репозиториях популярных дистрибутивов живёт небольшая утилита exa, которая делает всё то же самое, что и ls, только красиво окрашивает вывод. В Debian/Ubuntu она в unstable репе. В rpm-based дистрах в федореном репозитории.

https://github.com/ogham/exa
https://the.exa.website/

Утилита состоит из одного бинарника, так что можно просто скачать и запустить. Есть поддержка git, так что можно увидеть статус (modified, Untracked) каждого файла.

Exa умеет делать древовидное отображение каталогов и файлов с возможностью ограничивать глубину. Например:

# exa --tree --level=2 /boot

Удобная и функциональная утилита. Можно просто заменить ls символьной ссылкой и пользоваться только exa. Работает так же быстро.

#terminal #утилита
​​Еще одна тематическая игра с уклоном в программирование - MHRD. Дизайн в стиле командной строки. Вы будете выполнять задачи инженера по железу. Вам надо создавать и программировать печатные платы.

https://store.steampowered.com/app/576030/MHRD/

У вас будет своя среда для разработки программного обеспечения. Пишите код на MHRD hardware design language. Конечная цель, как я понял - разработать полностью свой CPU.

Игра для тех, кто любит поработать после работы 😁 🤡 Русского языка нет.

Немного отзывов:

Если ты более-менее знаешь английский и случайно можешь в двоичную логику - в этой игре можно пропасть надолго. Очень. Первые 15 минут ты будешь страдать, но стоит смочь в NOT - и только голод (ну или смерть) вытащит тебя из этой игры.

Игра затягивает настолько, что на силу оторвался написать обзор.
Если (вдруг) вы подружились с логикой, то игра для вас! Хоть эта игра очень сильно ломает мозг, она утягивает в чёрную дыру. Готовьтесь, будет сложно даже лечь спать, не пройдя её.

Классные задачки, решение которых происходит больше в оффлайне на бумаге, чем в игре. В начале проектируешь базовые элементы, потом на их основе более продвинутые. Самым сложным для меня оказался полный сумматор. Самым интересным - процессор. Ведь для его проектирования пришлось рисовать не один вариант схем на А4 и вычислять циклы на бумаге.

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

#игра
В комментариях к одной из заметок как-то затронули тему ошибочного сноса прав доступа на файлы в Linux. Оказывается, есть очень простой и быстрый способ восстановить дефолтные права доступа для конкретного пакета, либо на все установленные в системе пакеты. Делается это стандартно с помощью rpm. Способ только для rpm-based дистрибутивов.

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

Восстановить права доступа пакета или всех пакетов разом. И то же самое для владельца.
rpm --setperms package
for p in $(rpm -qa); do rpm --setperms $p; done
rpm --setugids package
for p in $(rpm -qa); do rpm --setugids $p; done

Установка пакета package.rpm:
rpm -ivh package.rpm

Обновление пакета package.rpm
rpm -Uvh package.rpm

Удаление пакета package. И его же удаление, но без зависимостей.
rpm -ev package
rpm -ev --nodeps --nosuggest package

Список всех установленных пакетов:
rpm -qa

Список файлов, установленных пакетом:
rpm -ql package

Определение пакета, которому принадлежит файл:
rpm -qf /path/to/file

Список конфигурационных файлов пакета:
rpm -qc package

Список зависимостей пакета:
rpm -qpR package

Посмотреть содержимое пакета package.rpm:
rpm2cpio package.rpm | cpio -t

Извлечение содержимого пакета package.rpm в текущую директорию. Будет воссоздана вся структура каталогов, которые используются в пакете.
rpm2cpio package.rpm | cpio -idv

#terminal #bash
​​Программу radmin я знаю очень давно. Мне даже кажется, что она уже существовала в тот момент, когда я начал подрабатывать системным администратором в институте (2005 г., подумать только, у меня стаж уже 16 лет 😱). Только недавно узнал, что существует бесплатная программа Radmin VPN для объединения компьютеров в одну локальную сеть по vpn. Это аналог программы Tailscale, про которую недавно рассказывал.

https://www.radmin-vpn.com/ru/

Radmin VPN – бесплатная и простая в использовании программа для создания виртуальных частных сетей (VPN). Программа позволяет пользователям устанавливать безопасное и надежное соединение между компьютерами через Интернет, как если бы они были соединены через локальную сеть.

Добавить тут особо нечего. Ставится и работает просто. Обычный установщик Windows. Другие системы не поддерживаются. Это большой минус. А плюс в том, что программа полностью бесплатная, без каких-либо ограничений или платных фич. Я так понял, что создана она для рекламы и продвижения другого коммерческого продукта этой компании - Radmin.

Настройка максимально простая. Ставите клиент. Он автоматически регистрируется где-то в облаке разработчика, подключается к нему и получает серый ip. Вы можете создать свою новую локальную сеть или подключиться к существующей. При создании сети указывается её имя и пароль. На другом устройстве достаточно установить клиент, ввести имя сети и пароль к ней. Оба устройства окажутся в этой сети.

#vpn
​​Вновь возвращаюсь к теме чатов. Ещё пара вариантов для рассмотрения осталась. Сегодня поговорим о Matrix Synapse. Это не совсем чат-сервер, скорее платформа для организации чатов. Расскажу подробнее.

Matrix - это открытый протокол для децентрализованной коммуникации. Он может быть реализован в различных серверах и мессенджерах - https://matrix.org.

Synapse - локальный сервер, который работает на протоколе matrix, обеспечивает возможность подключения и общения клиентов. Написан на Python - https://matrix.org/docs/projects/server/synapse. Можно быстро запустить в docker или воспользоваться публичным сервером.

Для данной связки можно использовать любой клиент. Наиболее популярным и зрелым является клиент Riot, который в настоящий момент переименован в Element. Я пробовал именно его, когда тестировал данную связку. Он есть как web клиент, desktop и android приложение - https://element.io. К сожалению, под капотом там javascript и какой-нибудь современный фреймворк (не уточнял, какой именно), так что большого смысла использовать именно приложение нет. Оно точно так же выглядит, как и страница в браузере.

В плане функционала данная связка не будет сильно отличаться от остальных чатов. Всё необходимое есть. Внешний вид тоже нормальный. Явным плюсом подобного решения является бесплатность и гибкость, возможность расширять функционал различными дополнениями и разными клиентами. Плюс, есть возможность интеграции с другими системами, например, сервером видеоконференций Jitsi-meet.

Минус сразу на виду и следует из плюсов. Подобный конструктор по определению будет менее стабилен и более требователен к настройке и управлению. Порог вхождения будет повыше, хотя какой-то кардинальной сложности нет. У меня есть статья-обзор по установке и настройке подобной связки. Она немного устарела, но получить представление о чат-сервере можно.

Будет неплохо, если протокол Matrix продолжит свое развитие и завоюет популярность, как в свое время irc или xmpp. Пользователи от этого только выиграют. Сейчас по факту почти все пользуются закрытыми проколами и проприетарным ПО в этой области. Если честно, я не уверен, что у Matrix что-то сильно популярное выйдет. Мне кажется, сфера общения в виде мессенджеров очень лакомая для коммерческих организаций. Они будут максимально развивать и наращивать бесплатный функционал, лишь бы вы пользовались их продуктами и сливали информацию о себе. Open Source продукту будет трудно с ними конкурировать.

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

#chat #selfhosted
​​Есть отличный инструмент для хранения любого вида информации, в том числе и по сетевому оборудованию - Exel. У меня целая куча всевозможных таблиц с информацией. Но если вам нужно что-то более удобное для учёта и инвентаризации всего, что связано с сетями и информации об IP адресах, предлагаю обратить внимание на NetBox.

Netbox - это приложение для infrastructure resource modeling (IRM). Написано командой сетевых инженеров DigitalOcean специально для системных администраторов. Изначально использовалось для управления внутренней инфраструктурой, потом было опубликовано в open source.

Полезные ссылки:
https://netbox.readthedocs.io/
https://github.com/netbox-community/netbox

С помощью Netbox можно вести учёт ip адресов, стоек, расположения оборудования в стойках, сетевых соединений, виртуальных машин, схем подключения операторов связи, учётных данных для доступа к устройствам. Есть интеграция с LDAP. В общем, зрелый программный продукт, готовый к промышленной эксплуатации. Отдельно подчеркну, что Netbox это в первую очередь учёт и инвентаризация, не мониторинг и управление.

Netbox построен на базе Django (Python), Nginx или Apache, PostgreSQL в качестве СУБД. Посмотреть и попробовать очень просто. Есть полнофункциональное demo - https://demo.netbox.dev.

Если будете ставить себе, есть подробная документация с видео по установке и связке всех компонентов. Если вы devops, у вас причёсанная борода, вы пьете крафтовый кофе, и вы выше всей этой ручной возни с пакетами и настройками, то для вас есть готовый docker-compose:
https://github.com/netbox-community/netbox-docker

#network #управление #ITSM #IPAM
​​Прочитал на stackoverflow ответ от DBA Postgresql на тему размещения субд в контейнерах. Ответу уже 3 года, но с тех пор принципиально ничего не изменилось. Кратко смысл такой:

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

Эти 2 условия практически полностью нивелируют удобства Docker. Большого смысла запускать СУБД в контейнере нет. Речь идёт о нагруженной базе данных в проде.

Есть большой опыт использования небольших баз данных и кластеров postgresql в kubernetes у компании Zalando. Я делал отдельную заметку по их выступлению с этой темой на конференции. Там идея такая - большие нагруженные базы в контейнерах не запускают. А вот небольшие базы отдельных микросервисов запускают в kubernetes. Это позволяет организовать удобное централизованное управление и деплой новых баз для различных сервисов и команд.

У меня была еще одна заметка на тему базы данных в Docker. Там я делаю выжимку из статьи компании Percona о её собственных тестах производительности БД в контейнерах. Там вывод такой же, как и в у DBA со stackoverflow. Нужно обязательно использовать сеть хоста, чтобы не было просадки производительности.

В итоге получается, что для хорошей производительности, БД жёстко мапится к самому хосту и сетью, и диском. Ни о каком stateless подходе, на который в первую очередь ориентированы контейнеры, речи не идёт. Польза контейнеров в истории с субд может быть только при использовании большого количества ненагруженных баз, управление которыми может быть организовано с помощью средств оркестрации контейнерами.

У меня в практике как то раз был случай, когда база данных Mysql, запущенная в контейнере, просто исчезла. Разработчики запустили один проект заказчику полностью в контейнерах. В какой-то момент замапленная директория с файлами БД оказалась полностью пустой. Был такой древний баг. Его уже давно пофиксили.

Написал заметку, чтобы вы лишний раз подумали, когда будете использовать докер, а нужен ли он тут. Запускать одиночную субд на хосте в контейнере нет никакого смысла. Точно так же ее можно установить через пакетный менеджер и запустить. Работать будет быстрее, проблем будет меньше.

#postgresql #mysql #docker