Архив рубрики: Публикации

Просмотр системной информации и управление процессами из CMD или PowerShell

Самый простой способ просмотра информации о вашем компьютере — использовать графические инструменты Windows, такие как диспетчер задач или системная информация. Однако некоторые люди предпочитают использовать командную строку или PowerShell практически для чего угодно. Если вам интересно, как получить системную информацию в CMD (командная строка), или если вы хотите узнать, как управлять запущенными процессами из командной строки, читайте дальше. Мы собираемся показать, как вы можете делать все эти вещи

ПРИМЕЧАНИЕ. Информация в этом руководстве относится к Windows 10, Windows 8.1 и Windows 7, и команды работают как в командной строке, так и в PowerShell.

1. Используйте команду systeminfo для получения системной информации

В Windows есть встроенная команда для проверки конфигурации системы. Он называется systeminfo и, когда вы его запускаете, показывает длинный список информации о вашем компьютере. Откройте командную строку или PowerShell, введите systeminfo и нажмите Enter.

Вы видите, что происходит? Команда systeminfo отображает список деталей о вашей операционной системе, компьютерном оборудовании и программных компонентах. Вы видите детали, такие как версия операционной системы, установленной на вашем компьютере, состояние вашей оперативной памяти или процессора, который у вас есть. Также есть некоторая информация о сети, такая как IP и MAC- адреса ваших сетевых карт.

2. Используйте команду tasklist, чтобы увидеть список запущенных процессов в Windows

Чтобы просмотреть список запущенных процессов, вы можете использовать команду tasklist, как в командной строке, так и в PowerShell. Введите список задач и нажмите Enter.

Команда должна вывести список, аналогичный приведенному выше, с подробной информацией об именах запущенных процессов, их PID (идентификатор процесса) и используемой ими памяти.

3. Используйте команду taskkill, чтобы остановить процесс

Чтобы убить или остановить запущенный процесс из командной строки или PowerShell, вы можете использовать команду taskkill. Давайте предположим, что вы хотите остановить OneDrive. Его процесс называется OneDrive.exe. Чтобы убить его, вы должны запустить команду taskkill /f /im OneDrive.exe. Параметр /f указывает Windows принудительно завершить процесс, а параметр /im используется для идентификации и остановки процесса путем ввода его имени.

Есть моменты, когда вам нужно открыть программу дважды или даже несколько раз. Каждое новое окно, а иногда и вкладки определенной программы (например, Firefox) создают отдельный процесс, называемый экземпляром, с прикрепленным к нему уникальным PID (идентификатор процесса).

Чтобы остановить один экземпляр процесса, вам нужно указать его PID (идентификатор процесса) . Давайте предположим, что на вашем компьютере открыто несколько экземпляров Firefox. Имя процесса — firefox.exe, но вы хотите закрыть только один из запущенных экземпляров (вкладки, окна).

Если вы хотите завершить процесс с PID 2492, вам нужно набрать taskkill /PID 2492 и нажать Enter.

Другой параметр, который вы можете использовать для команды taskkill — это /t. Этот параметр позволяет завершить указанный процесс и любые дочерние процессы, которые были запущены им. Возьмите тот же пример: процесс Firefox. Давайте предположим, что у вас есть восемь процессов, и вы хотите убить их всех с помощью параметра /t. Вы должны ввести команду «taskkill /t /im firefox.exe» и затем нажать Enter. Посмотрите на скриншот ниже, чтобы увидеть подтверждение введенной вами команды.

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

ПРИМЕЧАНИЕ. Чтобы уничтожить любой запущенный процесс, вам нужно запустить командную строку или PowerShell от имени администратора. Если вы не знаете, как, прочитайте: 9 способов запуска программ с правами администратора в Windows .

Вам нравится использовать командную строку для проверки системной информации и управления запущенными процессами?

Вы знаете, как отобразить системную информацию вашего ПК и как остановить процессы, используя несколько текстовых команд в командной строке или PowerShell. Вы не чувствуете себя сейчас отвратительно? Если вы это сделаете, прокомментируйте ниже и расскажите, насколько вам нравится использование CMD или PowerShell. 🙂



2019-10-14T11:42:01
Вопросы читателей

Сборка собственного дистрибутива GNU/Linux. Шаг 1 – подготовка.

Решил я собрать собственный LFS. Причин тут несколько:

  • Давно хотелось и чесалось.
  • Присутствует желание лучше понять устройство операционной системы.
  • Нужно мигрировать с 32-битной архитектуры на 64. Инструкцию для Debian нашел, но лучше бы иметь запасную систему на всякий случай.
  • У меня достаточно устойчивый набор программного обеспечения, поэтому есть представление о том, что именно мне нужно.

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

Выделение раздела для системы

Я сделал достаточно просто – отмонтировал /home и отрезал от него 10 Гб места под root’ом программой GParted. Это достаточно простая и полезная программа:

Как вариант, можно загрузиться с live-cd той же Ubuntu и проделать те же манипуляции.

Подготовка к началу

Добавление глобальных переменных для пользователя

Предположим, что у нас в системе есть пользователь user. В файл /home/user/.bashrc занесём следующие строки:

  1. Точка монтирования устройства с собираемой ОС:

    export LFS64="/mnt/x64lfs"
  2. Аббревиатура системы, на которой происходит сборка:

    export LFS64_HOST="i586-cross-linux-gnu"
  3. Аббревиатура системы, для которой происходит сборка:

    export LFS64_TARGET="x86_64-unknown-linux-gnu"
  4. Флаги компилятора, для целевой системы:

    export BUILD64="-m64 -march=native"
  5. Включаем путь к приложения из в будующем созданной папки для пользователя:

    PATH=/cross-tools/bin:$PATH

Теперь можно выйти из терминала и зайти в него снова, чтобы данные глобальные переменные обновились.

Монтирование раздела и создание папок

Теперь можно подключить раздел, подготовленный для будущей операционной системы:

#mkdir $LFS64 #mount /dev/XXX $LFS64

Где /dev/XXX – собственно раздел.

Затем необходимо создать несколько папок и сделать символические ссылки на корень системы:

  1. Для временной системы, на базе которой будет происходить сборка основной:

    # mkdir $LFS64/tools # ln -sv $LFS64/tools /
  2. Для кросскомпилятора с x32 на x64:

    # mkdir -v $LFS64/cross-tools # ln -sv $LFS64/cross-tools /
  3. Для исходных текстов программ:

    # mkdir -v $LFS64/sources # ln -sv $LFS64/sources /

Осталось дать пользователю user права на чтение и запись в этих папках:

# chown -v user $LFS64/tools # chown -v user $LFS64/cross-tools # chown -v user $LFS64/sources

На это приготовления заканчиваются, следующий шаг – сборка кросскомпилятора.



2019-10-13T19:27:10
Без рубрики

Доработка темы wordpress Contango во славу гугля!

Зашел я на консоль вебмастера от гугля и увидел пару недочетов.

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

А другие посты несколько иначе – и автор указан, и дата стоит. Правда проблема в том, что дата указана создания поста, что для страниц не очень хорошо. Так как примеру страница с установкой Ubuntu у меня изменяется со временем выхода дистрибутивов и хорошо бы, чтобы дата при этом обновлялась. Поэтому стояли две задачи:

  1. сделать так, чтобы на страницах отображалась дата последнего изменения, а не их создания;
  2. привести вид начала страницы к такому, какой у постов.

Решал я их параллельно по мере сил, но опишу последовательно

Отображение даты последнего изменения поста в теме wordpress Contango

В файле wp-content/themes/contango/lib/functions/utility.php есть функция contango_post_date. Она вывод красивенько дату, но правда только создания. Поэтому я добавил один модификатор так, чтобы просто вызов contango_post_date работал как и прежде, а

contango_post_date( true );выводил дату последнего изменения:

function contango_post_date( $modified = false ) { if( $modified ){ $date_func = 'get_the_modified_date'; $time_func = 'get_the_modified_time'; }else{ $date_func = 'get_the_date'; $time_func = 'get_the_time'; } $post_date = esc_html( $date_func() ) . " " . esc_attr( $time_func() ); $post_date_day = esc_html( $date_func( 'd' ) ); $post_date_month = esc_html( $date_func( 'M' ) ); $post_date_year = esc_html( $date_func( 'Y' ) ); $output = sprintf( '<time class="entry-date entry-time updated" datetime="%7$s"><a href="%5$s" title="%1$s" rel="bookmark"><span class="entry-date-day">%2$s</span><span class="entry-date-month-year">%3$s %4$s</span></a></time>', $post_date, $post_date_day, $post_date_month, $post_date_year, esc_url( get_permalink() ), the_title_attribute( 'echo=0' ), esc_attr( $time_func( 'c' ) ) ); return $output; }

Изменение шаблона страницы темы Contango в wordpress

Необходимо отредактировать файл wp-content/themes/contango/content-page.php движка. Я просто взял начало из content-single.php и малость поправил с учетом изменений в функции contango_post_date.



2019-10-13T19:27:04
WordPress

Наиболее распространенные проблемы входа в WordPress и исправления

WordPress является идеальной платформой для любого типа сайта благодаря своей гибкости и интуитивности. Кроме того, WordPress является полностью бесплатным и с открытым исходным кодом. Однако, как и во всем, проблемы иногда возникают. Лучшим в этой платформе является сообщество, которое впечатляет своими размерами и знаниями. Независимо от проблемы, независимо от того, знаете ли вы, как  найти URL-адрес входа в WordPress,  или не можете подключиться к нему, кто-то всегда готов помочь или уже столкнулся с той же проблемой и знает решение.

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

Есть несколько сценариев, в которых вы не можете войти на свой сайт WordPress. Вот несколько из них:

 

Забыли или потерял свой пароль

В случае, если вы забыли или потеряли свой пароль, вы можете легко восстановить его, нажав «Забыли пароль?»  Как только вы нажмете на эту кнопку, вы будете перенаправлены на страницу, где вам нужно ввести свое имя пользователя или адрес электронной почты, для которого вы запрашиваете новый пароль. После ввода имени пользователя или адреса электронной почты вы получите электронное письмо с инструкциями и URL-адресом для создания нового.

 

Попробуйте свое_доменное_имя/wp-login.php

Для входа на ваш сайт WordPress вы обычно используете  свое_доменное_имя/wp-admin,  который, в свою очередь, перенаправляет вас на этот URL  -адрес свое_доменное_имя/wp-login.php, но время от времени это может не сработать. Чтобы решить эту проблему, вместо использования  wp-admin  вы можете использовать  wp-login.php, что по сути одно и то же.

 

Деактивируйте свои плагины

Общеизвестно, что иногда плагины мешают друг другу или темам, вызывая различные ошибки, которые могут помешать вам войти в свою учетную запись. Самый простой способ их деактивировать — через панель управления WordPress> Плагины>Выбрать все>Деактивировать. Если у вас нет доступа к вашей панели управления WordPress, вы можете удалить или переименовать имя их папки на что-то другое с вашего сервера. Вы найдете плагины внутри папки/wp-content/plugins. Этого можно достичь с помощью cPanel или FTP, используя бесплатное программное обеспечение, такое как FileZilla.

 

Активировать тему WordPress по умолчанию

Тема также может вызывать различные проблемы или ошибки, и когда это происходит, лучше всего деактивировать ее и активировать одну из стандартных тем WordPress, например Twenty Seventeen. Вы можете сделать это либо из панели инструментов>Внешний вид>Темы, либо по FTP, удалив или переименовав папку с текущей темой в другое. Это заставит WordPress вернуться к теме по умолчанию. Если ваша страница входа работает после того, как вы это сделали, то ясно, что ваша тема была причиной проблемы, и вам нужно немедленно связаться с их службой поддержки.

 

Поврежденный файл wp-login.php

Если вы удалили его, он был поврежден или внес какие-либо изменения в wp-login.php, и он больше не работает, лучшее решение — загрузить его снова. Для этого вам нужно сначала создать резервную копию для вашего WordPress, а затем снова загрузить WordPress  отсюда.

После этого разархивируйте архив WordPress и найдите файл wp-login.php. Если у вас есть это, просто скопируйте и вставьте его в вашу установку WordPress. Проверьте страницу входа и посмотрите, работает ли она. Если это все еще не работает, откройте wp-login.php и найдите следующую строку кода: $user_login = $user_data[«user_login»];

Выделите его и замените на это: $user_login = $user_data->user_login;

Если это не решит ваши проблемы, то возможно, что проблема не была вызвана вашим файлом wp-login.php, и вам нужно больше отлаживать.

 

Завершение

Как бы досадно это ни было, проблемы, как правило, возникают независимо от того, насколько хороша платформа, темы и плагины. Вот почему лучше быть готовым ко всему. 5 проблем, которые мы представили выше, являются наиболее распространенными и имеют действительно простые исправления. Пожалуйста, сообщите нам, если есть какие-либо другие распространенные проблемы с URL-адресами для входа в WordPress, которые мы не рассмотрели, и мы расскажем о них!



2019-10-12T19:51:08
Лучшие учебники по Wodpress

Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox

Приветствую вас дорогие читатели на второй части цикла статей про домашний сервер!

Список цикла статей:

  1. Домашний Сервер: Часть 1 – Предисловие, аппаратная и софтовая начинка
  2. Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox (вы тут)
  3. Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
  4. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  5. Домашний Сервер: Часть 5 – Установка и настройка Plex Media Server в контейнере LXC Proxmox-VE

В прошлой части я указал на используемый софт и центральным узлом всего домашнего сервера будет использование системы виртуализации Proxmox
Выбор в целом был очевиден т.к. она настраивается через WEB, у меня есть опыт работы с ней и было бы глупо выбирать что-то другое.

Логично задать вопрос: «А это бесплатное ПО?»Да, это действительно бесплатное Open Source ПО, хотя есть корпоративная подписка.

Корпоративная подписка предоставляет доступ к закрытому репозиторию Proxmox VE Enterprise, который содержит более частые стабильные обновления ПО и обновления безопасности, а также техническую поддержку.

Если не использовать подписку никаких ограничений по функциональности не будет! И это по настоящему здорово!

Ну что, приступим к установке Proxmox Virtual Environment — далее PVE!
Установку я производил сначала на 2 SSD объемом по 256 Гб каждый. Другие 4 HDD я добавлял позже. Именно в таком ключе и предлагаю двигаться далее.

Подготовка Flash инсталлятора с образом системы

Для скачивания образа системы необходимо перейти на официальный сайт www.proxmox.com и скачать необходимую версию. Особых отличий в заливке или установке не будет.

На момент написания статьи доступны версии 6 и 5.4

Берем какую либо флешку и пишем ISO образ на неё с помощью специальных программ. Их много (Rufus, balenaEtcher и др.).

Я предпочитаю balenaEtcher. Там все просто до безобразия. Запустили, выбрали образ, убедились, что выбрана нужная флешка и нажали запись. Подождали и вытащили флешку.

Есть Portable версия.

 

gost-proxmox-flash-1
balenaEtcher

Подключаем флешку к серверу и продолжаем уже через монитор или IPMI/BMC интерфейс.

IPMI/BMC интерфейс для управления сервером по сети
Что такое IPMI?
Выдержка из Wikipedia:

IPMI (от англ. Intelligent Platform Management Interface) — интеллектуальный интерфейс управления платформой, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ. Ключевые характеристики IPMI — мониторинг, восстановление функций управления, журналирование и инвентаризация, которые доступны независимо от процессора, BIOS’a и операционной системы. Функции управления платформой могут быть доступны, даже если система находится в выключенном состоянии.

Что такое BMC?

Это «мозг» IPMI, отдельный микроконтроллер. BMC (Baseboard Management Controller). Через него как раз и происходит удаленное управление сервером. По сути, BMC ― это отдельный компьютер со своим программным обеспечением и сетевым интерфейсом, который распаивают на материнской плате или подключают как плату расширения по шине PCI management bus. В моем случае она уже есть на материнской плате.

На практике это выглядит так:

gost-proxmox-ipmi-1
Страница входа через обычный браузер

 

 

gost-proxmox-ipmi-2
Одна из страниц настройки

 

Для чего я это пишу тут?

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

И в чем особенность серверных материнских плат. На обычных предназначенных для дома или игровых вы такого не увидите.

Установка Proxmox VE на сервер

Для демонстрации буду использовать версию 5.4-1, как более близкую к своей 5.3-11, хоть она и поновей, но существенных изменений там нет.

Все изображения спрятаны под спойлеры для вашего удобства!

После загрузки мы увидим такое окно…

 

gost-proxmox-install-1
Начало установки Proxmox VE

Ожидаем окончания загрузки системы установки…

Соглашаемся с лицензионным соглашением…

 

gost-proxmox-install-2
Соглашаемся с лицензионным соглашением

 

Переходим к настройке места для установки…

 

gost-proxmox-install-3
Переходим к настройке места для установки

 

gost-proxmox-install-4
Выбираем ZFS RAID-1

 

gost-proxmox-install-5
Используется два диска, как и положено

 

gost-proxmox-install-6
Место хранения настроили, движемся далее

 

Указываем страну, временную зону, а раскладку не трогаем…

 

gost-proxmox-install-7
Указываем страну, временную зону, а раскладку не трогаем

 

Указываем пароль и наш email для оповещений…

 

gost-proxmox-install-8
Указываем пароль и наш email для оповещений

 

Настраиваем сеть…

Тут хочется остановиться более подробно.

 

gost-proxmox-install-9
Настройка сети

 

  1. Учтите сразу, у Proxmox сеть указывается вручную. Я несколько раз пробовал настраивать DHCP-Client для него, но почему-то он его не очень любит. Потому биндинг адреса в DHCP-Lease особого смысла не имеет, разве только, чтобы понимать какой девайс на нем сидит.
    Hostname (FQDN): рекомендую задавать осмысленно с учетом того, какое доменное имя планируете использовать. Это необходимо для следующей статьи по DNS. Вы же планируете заходить по доменному имени, а не по IP адресу, правда? 🙂
    Я задал свой pve1.gregory-gost.ru и по такому URL теперь захожу на WEB интерфейс Proxmox. Подумайте заранее!
  2. Я указал в DNS IP контейнера в котором у меня работает DNS служба, но вам для начала необходимо указать свои стандартные DNS. Иначе PVE не будет иметь нормального выхода в интернет. Часто совпадает с Gateway.

 

 

 

Проверяем финальные данные…

 

gost-proxmox-install-10
Проверяем финальные данные

 

 

Дожидаемся окончания процесса установки…

 

gost-proxmox-install-11
Дожидаемся окончания процесса установки

 

 

Проводим финальную перезагрузку…

 

gost-proxmox-install-12
Проводим финальную перезагрузку

 

И наконец, после непродолжительных процедур нам позволено войти в систему.

 

gost-proxmox-install-13
После установки видим строку приглашения и информирующий баннер

 

Как можно наблюдать нам вежливо сообщили о том, по какому адресу и порту работает WEB интерфейс PVE:

https://192.168.88.5:8006

Давайте зайдем и посмотрим, что там!

Обратите особое внимание на адрес по которому работает WEB интерфейс PVE!

Как можно не сразу заметить используется защищенный протокол https вместо http. Автоматического перенаправления в системе не предусмотрено! Будьте внимательны!

Настройка Proxmox VE после установки

После ввода в браузере нужного адреса перед нами предстает WEB интерфейс PVE

 

 

gost-proxmox-configure-1
Окно входа в PVE

 

Логин для входа: root
Пароль тот, который вы указали при установке.

 

Далее я не буду производить обзор всей системы т.к. это еще не на одну статью. Знающие администраторы разберутся в ней без труда.
Система поддерживает Русский язык, который вы можете выбрать при входе.
Дополню только минимальными настройками для начала и покажу, как скачать шаблон для LXC контейнера. В следующей статье нам это пригодится.

Настраиваем репозиторий для обновлений

Перво наперво откроем консоль нашего сервера

 

gost-proxmox-configure-2
Путь до консоли самого сервера

 

Нас попросят ввести логин и пароль, вводим те же данные, которые вводили для входа в WEB.

 

Открываем Enterprise репозиторий…

 

nano /etc/apt/sources.list.d/pve-enterprise.list

 

и комментируем его (добавляем решетку в начало строки)

 

#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise

 

Создаем отдельный лист для репозитория без подписки

 

touch /etc/apt/sources.list.d/pve-no-subscription.list

 

Открываем его

 

nano /etc/apt/sources.list.d/pve-no-subscription.list

 

И добавляем в него репозиторий

 

# proxmox no subscriptions repo
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription

 

Если вы устанавливаете Proxmox другой версии, то версия базовой ОС Debian может отличаться от stretch. В этом случае вам необходимо указать аналогичный тому, что есть в pve-enterprise.list.Также узнать имя дистрибутива можно командой:

cat /etc/*-release | grep VERSION_CODENAME

Ответ будет примерно такой:

VERSION_CODENAME=stretch

К примеру уже 6-я версия PVE – buster а не stretch

А 7-я версия PVE – bullseye

 

Для обновления списков подаем команду

 

apt update

 

Если вы хотите сразу проапгрейдить систему, то:

 

apt update && apt dist-upgrade -y
reboot

 

Убираем всплывающее окно о подписке

 

После входа вы могли заметить сообщение о подписке, которое со временем может надоесть.
В принципе его можно оставить если оно вам не мешает. А для тех кому мешает необходимо сделать следующее:

 

Сохраняем резервную копию файла:

 

cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak

 

Подаем команду:

 

sed -i "s/getNoSubKeyHtml:/getNoSubKeyHtml_:/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

 

Команда заменяет нужную переменную getNoSubKeyHtml: на ошибочную getNoSubKeyHtml_: и окно более нам не мешает.

 

Все просто 🙂

 

Работает только для PVE версий выше 5.1

Для более старых необходим другой метод, который вы можете найти на просторах интернета.

 

Настраиваем базовую отправку уведомлений на почту

 

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

 

За этот функционал в PVE отвечает сервис Postfix, его и будем настраивать.
Для примера я буду использовать придуманный почтовый адрес: ggost@yandex.ru. Вы конечно используете свой!

 

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

 

Проверяем установлена ли библиотека libsasl2-modules

 

apt install libsasl2-modules

 

Делаем бекап основного файла конфигурации

 

cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

 

Вносим правки в файл. Я привел его к такому виду:

 

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
myhostname = pve1.gregory-gost.ru
default_transport = smtp
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost = [smtp.yandex.ru]:587
mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only
recipient_delimiter = +
header_checks = pcre:/etc/postfix/rewrite_subject
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhost.hash
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_auth.hash
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_generic_maps = hash:/etc/postfix/generic

 

Создаем хеш файл авторизации для доступа к почтовому ящику

 

echo [smtp.yandex.ru]:587 ggost@yandex.ru:yourpassword > /etc/postfix/sasl_auth.hash

 

Создаем хеш файл sender_relayhost (он гарантирует, что мы всегда используем свой почтовый ящик в качестве отправителя)

 

echo ggost@yandex.ru [smtp.yandex.ru]:587 > /etc/postfix/sender_relayhost.hash

 

И скобки [] обязательны!

 

У Яндекса есть проблема, а именно для успешной отправки письма, Яндекс требует, чтобы адрес отправителя в письме совпадал с адресом для авторизации на сервере.
Если это не будет сделано, то мы получим ошибку во время отправки — Sender address rejected: not owned by auth user
Чтобы этого избежать мы добавили в конфиг файл /etc/postfix/main.cf пункт smtp_generic_maps = hash:/etc/postfix/generic
Происходит это потому, что отправка системных сообщений идет от локального пользователя root.
Имя отправителя в письме у меня такое — root@pve1.gregory-gost.ru
В данном случае pve1.gregory-gost.ru это локальное имя сервера. Мы его заменим на учетную запись Яндекса.

 

Откройте файл блокнотом

 

nano /etc/postfix/generic

 

Добавьте в файл generic одну строку:

 

root@pve1.gregory-gost.ru ggost@yandex.ru

 

Шифруем файлы с помощью postmap

 

postmap /etc/postfix/sender_relayhost.hash
postmap /etc/postfix/sasl_auth.hash
postmap /etc/postfix/generic

 

Устанавливаем уровень доступа 0600 на файлы sasl_auth

 

chmod 0600 /etc/postfix/sasl_auth.*

 

Дополнительно я ввел формирование специального заголовка для темы. За это отвечает параметр

 

header_checks = pcre:/etc/postfix/rewrite_subject

 

Давайте создадим этот файл:

 

nano /etc/postfix/rewrite_subject

 

Добавляем в него такую строку:

 

/^Subject: (.*)$/ REPLACE Subject: [PVE1]: $1

 

Это регулярное выражение, которое меняет заголовок письма, начинающийся с Subject. Оно добавляет в начало темы имя сервера с двоеточием — [PVE1]:
Вы можете добавлять свой вариант. А $1 это исходное содержание темы, которое будет без изменений оставлено далее, после добавки.

 

Но для того, чтобы это работало, просто создать файл и поправить конфиг мало. Необходимо доустановить специальную библиотеку postfix-pcre
Вы ведь помните, как выглядит строка с этой настройкой: pcre:/etc/postfix/rewrite_subject
Давайте поставим нужный сервис:

 

apt install postfix-pcre

 

Перезапускаем Postfix

 

service postfix restart

 

или

 

systemctl restart postfix.service

 

Пробуем отправить тестовое сообщение адресату:

 

echo "Test mail from proxmox" | mail -s test my-email@gmail.com

 

Проверяйте почту 😉

 

 

gost-proxmox-configure-3
Итоговый вид полученного письма на Gmail через Yandex

 

Проверка работы Postfix:

 

cat /var/log/mail.log | grep postfix

 

Подключение четырех дисков как ZFS массив RAID-5 (raidz1)

 

Не забудем и про дополнительные четыре диска, которые в моем случае будут использоваться для хранения медиа файлов (фильмы, сериалы и др.)

 

И да, я знаю про специфику работы с RAID-5 и что к нему есть много вопросов, я решил пойти именно таким путем, вы же можете использовать свои знания и выбрать то, что кажется вам наиболее правильным. Но у ZFS RAID-5 есть одно преимущество, он восстановит потерянные данные, хоть и не целиком. А т.к. у меня там медиа данные, их можно без особого труда скачать снова. Это выгодно отличает его от обычного RAID-5. В итоге я потеряю файл/часть файла, но не потеряю весь массив данных.

 

Дополнительно ознакомиться с тем, что такое ZFS, посмотреть сравнение с RAID на mdadm можно по ссылкам ниже. Мне они кажутся достаточно полезными и наглядными. Осторожно English!1. ZFS 101 — Understanding ZFS storage and performance

2. ZFS versus RAID: Eight Ironwolf disks, two filesystems, one winner

 

Для начала проверим, видны ли они в системе, в этом нам поможет команда lsblk:

 

root@pve1:~# lsblk

 

В ответ мы увидим, что-то такое…

 

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   236G  0 disk 
├─sda1   8:1    0  1007K  0 part 
├─sda2   8:2    0   512M  0 part 
└─sda3   8:3    0 235.5G  0 part 
sdb      8:16   0   236G  0 disk 
├─sdb1   8:17   0  1007K  0 part 
├─sdb2   8:18   0   512M  0 part 
└─sdb3   8:19   0 235.5G  0 part 
sdc      8:32   0   2.7T  0 disk 
sdd      8:48   0   2.7T  0 disk 
sde      8:64   0   2.7T  0 disk 
sdf      8:80   0   2.7T  0 disk

 

Активные диски уже используются и на них можно наблюдать уже логические разделы, это два SSD диска: sda и sdb

 

А вот sdc, sdd, sde и sdf пока не задействованы, давайте это исправим!

 

Проверим созданный нами ранее RAID-1 из двух SSD

 

zpool list

 

Ответ

 

NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
rpool    234G  8.07G   226G         -     0%     0%  1.00x  ONLINE  -

 

Создадим RAID-5 из нужных нам дисков. Массив назовем rpoolz и пропишем полные пути к дискам (через /dev):

 

zpool create -f -o ashift=12 rpoolz raidz1 /dev/sdc /dev/sdd /dev/sde /dev/sdf

 

Не путайте с raidz2, это немного другое.

 

Проверяем более детально:

 

root@pve1:~# zpool list -v

 

NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
rpool   234G   8.07G   226G         -     0%     0%  1.00x  ONLINE  -
  mirror   234G   8.07G   226G         -     0%     0%
    sda3      -      -      -         -      -      -
    sdb3      -      -      -         -      -      -
rpoolz   10.9T   2.14T   8.73T         -     0%     0%  1.00x  ONLINE  -
  raidz1   10.9T   2.14T   8.73T         -     0%     0%
    sdc      -      -      -         -      -      -
    sdd      -      -      -         -      -      -
    sde      -      -      -         -      -      -
    sdf      -      -      -         -      -      -

 

Папка массива в файловой системе доступна по пути, который мы прописали при создании: /rpoolz

В целом этого будет достаточно, но есть еще один момент, это вопрос «Как подключить данный массив как папку для хранения данных?»

Для начала необходимо отправиться в раздел Datacenter -> Storage
Например я добавил папку, куда сохраняю Backup архивы.

 

 

gost-proxmox-configure-4
Добавляем папку для Backup архивов

 

 

gost-proxmox-configure-5
Заполняем параметры для папки

 

Тут нужно заполнить ID — это имя директории, Directory — это путь в файловой системе к нужной папке. Выбрать тип хранимых данных. При добавлении типа VZDump backup file появится дополнительная настройка, где нудно указать количество хранимых Backup архивов для каждой виртуальной машины. (Настройка архивации виртуальных машин выполняется отдельно!)

Подключение папки массива в контейнерах LXC будем рассматривать уже в отдельных статьях.

Изменение размера ARC кэша

Преимуществом и одновременно недостатком ZFS перед другими файловыми системами (хотя ZFS это не только файловая система) является её непомерное потребление оперативной памяти.

Этому способствует специальный функционал ZFS, а именно ARC(Adjustable Replacement Cache — кэш адаптивной замены) — это очень быстрый кэш, расположенный в оперативной памяти сервера (ОЗУ/DDR). Фактически все наиболее частые запросы и последние запросы на чтение, могут быть обслужены прямо из физической оперативной памяти. А как мы знаем оперативная память очень быстрая, не говоря уже про сравнение с обычными медленными HDD.

В большей степени в OpenZFS используется реализация запатентованного IBM adaptive replacement cache с некоторыми изменениями.

По умолчанию нашему серверу доступно 50% оперативной памяти хоста. Многовато вам не кажется? Особенно для домашнего использования, когда на компактных серверах всего-то от 8 до 16 Гб доступно. Ну или 32Гб.
У нас же будут еще контейнеры, виртуалки и бог его знает что еще, для чего оперативная память гораздо нужнее.

Соответственно мы можем уменьшить этот размер до приемлемого, от 4 до 6 Гб в моем случае.

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

 

Из рекомендаций Proxmox: 2Гб для хоста и далее по 1Гб на 1Тб данных хранилища (грабеж)
Если исходить из этих рекомендаций, у меня 4HDD по 3Тб, 2Гб на хост и 12Гб на хранилище, итого 14Гб из 16Гб доступных для ZFS. Что простите? Для контейнеров останется всего 2Гб … это шутка да?

 

Тем не менее я решил выделить до 6Гб для ZFS и оставить 10Гб для контейнеров и хоста.

 

Давайте установим лимиты. Делается это через конфигурирование.

 

nano /etc/modprobe.d/zfs.conf

 

options zfs zfs_arc_min=4294967296
options zfs zfs_arc_max=6442450944

 

Формула для расчёта: Кол-во гигабайт умноженное на 1024*1024*1024
6Гб = 6*1024*1024*1024 = 6442450944

 

Далее нам нужно обновить initramfs

 

update-initramfs -u -k all

 

Дожидаемся обновления и обязательно необходимо перезагрузить хост! Изменения применяться после перезагрузки. Сразу увидите уменьшенное потребление памяти.

Добавление L2ARC и ZIL(SLOG) с помощью отдельного NVME SSD накопителя

Итак. Размер потребляемой памяти для ZFS мы уменьшили, но при этом увеличили возможное кол-во обращений к медленным HDD для операций чтения. Но в действительности это еще не все прелести ZFS!

У ZFS есть еще одна возможность, от которой было бы глупо отказываться, особенно, когда у вас в материнской плате есть разъем для M.2 NVME накопителя.

 

 

M.2 NVME разъем в материнской плате Asus P10S-I

 

Представляю вам L2ARC(Layer 2 Adaptive Replacement Cache) — он же кэш адаптивной замены второго уровня. По сути это тот же ARC только уже не в оперативной памяти, а на SSD. SSD конечно не такие быстрые как оперативная память, но гораздо быстрее обычных HDD.

1700 Мб/сек на чтение в NVME SSD против средних 200-250 Мб/сек для малообъемных HDD (до 6Тб)

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

 

 

Архитектура возможных способов организации хранилища ZFS

 

Что касательно ZIL(ZFS Intent Log) — это механизм ведения журнала, в котором все данные для записи сохраняются, а затем сбрасываются как транзакционная запись. По функциям аналогичен журналу для журналируемых файловых систем, таких как ext3 или ext4. Обычно хранится на диске.
Т.к. данный функционал касается только записи, то лучше всего, чтобы это был SSD оптимизированный для записи, желательно SLC с алгоритмами выравнивания износа(wear-leveling algorithms). Также рекомендуют ставить ZIL в зеркало(RAID-1).
В моем случае нет еще одного M.2 разъема для подключения отдельного SSD и свободных SATA разъемов, поэтому попробуем использовать тот же SSD.

Взял для себя модель попроще, но от надежного производителя: Samsung PM991 128 ГБ M.2 MZALQ128HBHQ-000L2 (PCI-E 3.0, TLC 3D NAND)
L2ARC естественно буду применять для пула из обычных дисков т.к. системный пул и так на базе SSD, для него добавлять L2ARC не буду.

 

После установки нужно проверить определился ли диск. Все операции проводим естественно на хосте.

 

lsblk -a | grep nvme
nvme0n1     259:0    0 119.2G  0 disk

 

Нужно разделить SSD на разделы. Для этого будем использовать утилиту parted. Если не установлена, то ставим через APT.
ВАЖНО! Диск должен быть с GPT таблицей разделов. Перевести диск в этот формат возможно из интерфейса самого Proxmox -> Pve -> Disks

 

Выделим 4Гб для ZIL и все остальное под L2ARC (1Мб в начале оставил не размеченным)

 

parted /dev/nvme0n1 mkpart primary zfs 1 4G mkpart primary zfs 4G 100%

 

Проверяем

 

ls -l /dev/disk/by-id/ | grep nvme
lrwxrwxrwx 1 root root 13 Feb  3 21:12 nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Feb  3 21:14 nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Feb  3 21:15 nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part2 -> ../../nvme0n1p2

 

Некоторые материнские платы не будут последовательно представлять диски ядру Linux при перезагрузке. Таким образом, диск, идентифицированный как /dev/sda при одной загрузке, может быть /dev/sdb при следующей. Для основного пула, в котором хранятся ваши данные, это не проблема, поскольку ZFS может реконструировать VDEV на основе геометрии метаданных. Однако для ваших устройств L2ARC и SLOG таких метаданных не существует.

 

Добавляем ZIL к существующему пулу

 

zpool add <pool_name> log nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part1

 

Добавляем L2ARC кэш к существующему пулу

 

zpool add <pool_name> cache nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part2

 

Проверяем

 

zpool status -v

 

logs
          nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part1  ONLINE       0     0     0
        cache
          nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part2  ONLINE       0     0     0

 

Через некоторое время можем проверить как используется ZIL и L2ARC в пуле

 

zpool iostat -v

 

logs                                                        -      -      -      -      -      -
  nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part1   372K  3.50G      0      4      0  33.1K
cache                                                       -      -      -      -      -      -
  nvme-SAMSUNG_MZALQ128HBHQ-000L2_S4UNNX0R196876-part2   184M   115G      0      0      6  5.16K

 

Также вы можете задавать кэш и лог прямо при создании пула

 

zpool create -f -o ashift=12 <pool_name> raidz1 <device1> <device2> <device3> <device4> cache <cache_device> log <log_device>

 

Заключение

Ну вот мы и разобрались с базовой(и не только) установкой и подготовкой системы виртуализации Proxmox.
Как видно, ничего сложного в этом нет. Достаточно обычных знаний по работе с Linux системами. Для тех из вас, кто только начинает разбираться полагаю данный материал будет не плохим стартом!
Надеюсь данная статья оказалась для вас полезной. Возможно у кого-то уже используется данная система и вы не прочь поделиться с читателями своими мыслями, в этом случае прошу в комментарии 🙂

Ну а дальше… дальше будем ставить контейнеры и виртуалки с сервисами, продолжим с доменных имен в локальной сети с помощью DNS. Следите за обновлениями!

  1. DNS — доменные имена в локальной сети вместо IP адресов. Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
  2. Torrent Transmission — качалка торрентов. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  3. Plex Mediaserver — домашний медиа сервер. Домашний Сервер: Часть 5 – Установка и настройка Plex Media Server в контейнере LXC Proxmox-VE
  4. The Dude — мониторинг девайсов в домашней сети.
  5. Домашний IoT.
  6. IP телефония.

 

Делитесь в комментариях, чем пользуетесь вы для организации подобной системы. Готовый NAS, альтернативные системы виртуализации? В общем пишите 🙂

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

UPD: 03.02.2023

В статью добавлена информация по:

    • изменению размера ARC кэша
    • использованию NVME SSD для L2ARC кэша и ZIL (логов записи)

 

UPD: 10.11.2019

Добавлен блок с подключением дополнительных дисков, как массива RAID-5

UPD: 20.11.2019

Добавлена заметка по редактированию источников обновления, для разных версий дистрибутивов. Спасибо Константину за подсказку в комментарии.

Что делать, если telegram не подключается?

Телеграм — это удобный и популярный мессенджер, обеспечивающий защиту переписки с помощью секретных чатов. Также он обладает возможностью создавать каналы и группы. Помимо этого, Телеграм может быть установлен и на компьютер с Windows, и на Mac, доступен для Android и IOS.

Не смотря на все удобства использования, вы можете испытывать проблемы с подключением Telegram. При этом, если у других приложений доступ в интернет остаётся, и отсутствует исключительно для Телеграма, то возможным решением будет покупка личного прокси сервера, например, здесь proxyline.net/proksi-dlja-telegram и настройка приложения на его использование.

Как настроить прокси на Telegram для Windows

Откройте меню, кликнув на «гамбургер» в главном окне. Выберите пункт «Настройки» → «Продвинутые настройки» → «Тип соединения» в группе «Сеть и прокси». Отметьте пункт «Использовать собственный прокси».

Редактирование данных прокси на телеграм для windows

В открывшемся окошке следует указать:

  • Тип прокси: SOCKS5, HTTP или MPROTO
  • Его адрес и порт (example.com 8080 или 127.0.0.1 8080 — заменить на предоставленные провайдером)
  • Логин/пароль или ключ для MPROTO

И сохранить.

Теперь Телеграм должен подключиться через настроенный сервер.

Для отключения прокси-сервера в том же окошке «Настройки прокси» достаточно отметить соответствующий пункт.

Настройка прокси на Телеграм для Android

В этом случае действия тоже несложные. Откройте меню «Настройки» → «Данные и память». Прокрутите вниз до пункта «Настройки прокси» и нажмите на него. Затем — «Добавить прокси-сервер». Откроется окно, где потребуется выбрать тип и указать данные для подключения: сервер, порт, логин, пароль или ключ для mproto.

Параметры прокси для telegram на android

Для сохранения данных нажать на галочку в правом верхнем углу.

Чтобы подключиться к серверу, следует переключить тумблер вправо.

Включение прокси в телеграм на андроид

Что такое SOCKS5?

SOCKS — это интернет-протокол, который маршрутизирует пакеты между сервером и клиентом, используя прокси-сервер. Ваш трафик направляется через прокси-сервер, который генерирует произвольный IP-адрес, прежде чем вы достигнете места назначения. Технически говоря, SOCKS5 (последняя версия) использует прокси-серверы для формирования соединений протокола пользовательских дейтаграмм (UDP) или протокола управления передачей (TCP) через произвольные IP-адреса.

Если ваш IP-адрес 1.1.1.1, а ваш трафик направляется через прокси-сервер SOCKS с IP-адресом 2.2.2.2, целевой сервер (веб-сайт) будет считать, что запрос поступил от последнего. Веб-сайт не может видеть ваш оригинальный IP-адрес. Это обеспечивает некоторую анонимность, но это не означает, что ваш трафик защищен. В отличие от виртуальных частных сетей (VPN), прокси-серверы не шифруют ваш трафик — он все еще открыт, и любой может отследить то, что вы делаете.

SOCKS5 — это новейший и самый современный протокол SOCKS. Он имеет повышенную безопасность и предлагает три типа методов аутентификации:

  • Нулевая аутентификация — не требуется аутентификация для подключения к прокси;
  • Аутентификация по имени пользователя / паролю — вам необходимо предоставить данные для входа в систему, чтобы подключиться к прокси;
  • Аутентификация GSS-API — и вы, и сервер используете методы аутентификации на уровне операционной системы для проверки вашей личности.

Преимущества прокси-серверов SOCKS5

Есть много причин, почему люди используют прокси SOCKS:

1. Обход блокировок

Поскольку прокси-серверы действуют как реле между вашим устройством и Интернетом, они могут легко помочь вам обойти интернет-блоки. Например, если ваш IP был занесен в черный список определенным веб-сайтом (или вы используете VPN, а IP-адреса его серверов были занесены в черный список), вы можете направить свой трафик через прокси-сервер SOCKS5 и обойти этот блок. Однако это не поможет вам обойти национальные межсетевые экраны, так как большинство из них используют глубокую проверку пакетов (DPI). Это означает, что ваш трафик заблокирован вашим провайдером и до того, как он попадет на сайт.

2. Нет ограничений программ, протоколов или трафика

В отличие от прокси-серверов HTTP, которые могут интерпретировать и работать только с веб-страницами HTTP и HTTPS, прокси-серверы SOCKS5 могут работать с любым трафиком.

HTTP прокси — это высокоуровневые прокси, обычно разработанные для определенного протокола. Хотя это означает, что вы получаете лучшую скорость соединения, они не так гибки и безопасны, как прокси SOCKS. Прокси-серверы SOCKS — это прокси-серверы низкого уровня, которые могут обрабатывать любую программу или протокол и любой трафик.

3. Более быстрые и надежные соединения

В отличие от своих предшественников, которые использовали только протокол TCP, прокси-серверы SOCKS5 могут использовать протокол UDP, обеспечивая надежное соединение и эффективную работу. Почему

Интернет-протокол TCP формирует соединение между клиентом и сервером, гарантируя, что все пакеты поступают с одной стороны на другую. Это требует подгонки контента в фиксированный формат, чтобы его можно было легко перенести. UDP, с другой стороны, не фокусируется на том, достигают ли все пакеты от клиента или сервера другой стороны и передаются ли они в том же порядке. UDP не тратит время на преобразование пакетов данных в поток фиксированных пакетов. Поэтому, имея под рукой UDP, SOCKS5 может предложить более высокие скорости и надежное соединение.

4. Меньше ошибок и улучшена общая производительность

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

5. Лучшая производительность на платформах P2P

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



2019-10-11T18:35:03
Вопросы читателей