October 18

Ультимативный гайд (тест)

Как запустить VPS на Hetzner и управлять им удаленно с помощью Termius

Запустите свой собственный частный сервер Linux и управляйте им со своего смартфона.

Перевод Iruwen

Многие люди просили меня написать руководство о Hetzner как об альтернативе таким платформам, как Amazon и Google, потому что это относительно недорого, но очень надежно. Я решил включить сюда Termius вместо обычных SSH-клиентов, таких как PuTTY, потому что это хорошая современная мобильная альтернатива мощным, но устаревшим настольным клиентам. Он доступен для всех основных настольных и мобильных платформ (с явным акцентом на мобильные устройства) и бесплатен для использования в базовой версии. Даже если вы решите не использовать Hetzner, процесс получения SSH-доступа очень похож у всех провайдеров, поэтому вы все равно можете взять это руководство в качестве примера.

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

Компания hetzner Online GmbH является сертифицированным по стандарту ISO 27001 и многократно награжденным оператором дата-центров и хостинг-провайдером в Германии с многолетним опытом, предлагающим широкий спектр услуг.

Чтобы получить доступ к их платформе, сначала зарегистрируйтесь. Убедитесь, что вы выбрали сложный для угадывания, длинный пароль с несколькими специальными символами (я использую KeePass и автоматически генерирую пароли из 16 символов), потому что любой, кто получает доступ к вашей учетной записи, также имеет доступ к вашему серверу!

Hetzner не любит анонимные регистрации, поэтому используйте действующий адрес электронной почты (они отправят вам ссылку для подтверждения) и ваши фактические личные данные. После завершения регистрации вы можете войти в Cloud Console. В зависимости от данных, которые вы указали при регистрации, вы можете увидеть это уведомление, когда захотите начать использовать консоль:

В этом случае, пожалуйста, сделайте так, как требуется, и перейдите в раздел «Верификация учетной записи». Вы можете либо предоставить действительный паспорт, либо внести предоплату, чтобы подтвердить, что вы являетесь законным пользователем.

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

После того, как вы снова введете пароль от своей учетной записи, вам будет предоставлен отдельный логин и ключ для восстановления на случай, если вам когда-нибудь понадобится сбросить информацию 2FA, например, из-за потери смартфона. Храните эту информацию в надежном месте, то есть не на вашем компьютере или, по крайней мере, в надежном зашифрованном виде. В случае, если вы потеряете и эту информацию, например, из-за того, что ваш дом сгорел, Хетцнер отправит вам письмо на адрес, на который вы зарегистрировались (что довольно печально, если ваш дом сгорит; просто избегайте этого).

Затем вы можете настроить Yubikey или приложение для аутентификации, как вы, вероятно, делали это раньше в своей жизни, особенно когда вы имеете дело с криптовалютой. Yubikeys довольно дорогие, поэтому вы, скорее всего, будете использовать приложение для смартфона, такое как Google Authenticator или Authy. Просто отсканируйте QR-код, снова введите пароль от своей учетной записи, введите одноразовый пароль (OTP), который вы видите на своем устройстве, и все. В будущем вам понадобится одноразовый пароль при каждом входе в Cloud Console.

Если вы ждете, когда вас проверит Хетцнер, вы уже можете установить Termius на свой смартфон. Он доступен как для Android, так и для iOS. Лично я использую Android (потому что это Linux, в некотором роде), но я предполагаю, что он выглядит так же на iOS для стабильного пользовательского опыта.

Вы просто хотите использовать базовую версию и не создавайте учетную запись (по крайней мере, на данный момент, если вам нравится приложение, пожалуйста, поддержите разработчика!), поэтому нажмите на стрелку влево вверху и затем продолжите без учетной записи. Затем откройте главное меню, выберите связку ключей и нажмите кнопку +, чтобы добавить новую клавишу SSH.

Введите имя и при необходимости выберите другой тип и размер ключа. Здесь я использую 4096-битный RSA, но это вряд ли имеет значение, нет небезопасного варианта. Также введите необязательную кодовую фразу для защиты ключа, которую вы можете сохранить для удобства. Как правило, вы хотите, чтобы ключ был защищен (например, когда вы экспортируете его в файл позже), но, возможно, не хотите вводить его каждый раз при использовании приложения. В этом случае я настоятельно рекомендую также включить блокировку PIN-кодом в общих настройках приложения (платная версия также поддерживает отпечатки пальцев).

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

Чтобы получить публичный ключ, вы можете

  • Коснитесь клавиши в меню «Связка ключей», прокрутите вниз до раздела «Ключ P» UBLIC, выберите «Все» и скопируйте
  • Коснитесь клавиши в меню «Связка ключей» и выберите «Экспортировать в файл» или «Отправить по электронной почте» в меню с тремя точками
  • Нажмите и удерживайте клавишу в меню «Связка ключей» и выберите «Экспортировать в файл или отправить по электронной почте» в меню с тремя точками

Открытый ключ будет экспортирован в файл с именем Key.pub. Его формат зависит от выбранного ранее типа ключа. Используйте любой способ, чтобы перенести его на свой компьютер, вставьте его в Gmail или Evernote, например, в конце концов, это открытый ключ. Кроме того, вы также можете открыть Cloud Console с помощью браузера смартфона.

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

После создания нового проекта выберите «Доступ» в меню слева и нажмите «Добавить ключ SSH».

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

NВыберите серверы в меню слева в Cloud Console и нажмите «Добавить сервер», чтобы начать настройку сервера.

Здесь сначала необходимо выбрать местоположение дата-центра. В настоящее время у Hetzner есть два филиала в Германии, а также один в Финляндии. Обычно я выбираю Финляндию только потому, что мне нравится страна и ее люди.
Также выберите образ операционной системы по вашему выбору, где по умолчанию используется Ubuntu 18.04 LTS.
Тип сервера определяет количество виртуальных ЦП, объем памяти и доступное хранилище. Вы все еще можете добавить объем на следующем шаге или в любое время позже, чтобы продлить его, поэтому не зацикливайтесь на этом слишком сильно.

Вы также можете выбрать между локальным и сетевым хранилищем. Локальное хранилище работает очень быстро, а сетевое хранилище — очень устойчиво. Используя сетевое хранилище, в случае локального аппаратного сбоя, сервер можно просто перезагрузить в другом месте. С помощью локального хранилища вы также можете получить выделенные виртуальные ЦП, то есть фактические физические ядра ЦПУ, которые зарезервированы только для вас, в отличие от общих ядер, которые вы обычно получаете. Это может повысить производительность при большой нагрузке или при работе с приложениями, требующими срочного выполнения.
Я уже упоминал о томах, которые вы можете добавить, которые состоят из быстрого SSD-накопителя емкостью до 10 ТБ (хотя сначала вам придется написать запрос о том, что вы хотите увеличить свои лимиты).
Сеть позволяет подключать несколько серверов в локальной частной сети (например, в локальной сети) вместо того, чтобы просто использовать их общедоступные внешние IP-адреса.
Опция пользовательских данных позволяет настроить сервер при инициализации путем вызова набора скриптов и утилит под названием cloud-init.
Вы также можете включить резервное копирование для вашего сервера; По умолчанию вы потеряете свои данные в случае критического сбоя, особенно при использовании локального хранилища.
Опция ключа SSH важна, пожалуйста, выберите ключ, который вы добавили ранее здесь, иначе вы не сможете получить доступ к серверу через SSH!
Наконец, дайте серверу какое-то уникальное имя.

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

Нажмите кнопку «Создать и купить», чтобы создать и запустить настроенный сервер(ы). Это займет несколько минут.

Вы можете найти гораздо больше информации об облачных серверах в вики Хетцнера.

Теперь вы увидите имя вновь созданного сервера в списке. Вы можете скопировать его IP-адрес, просто кликнув по нему. Запишите его или просто запомните, он вам скоро понадобится для настройки Termius. В меню с тремя точками вы увидите еще несколько вариантов, включая выключение сервера или запуск простой браузерной консоли, которую вы можете использовать для доступа к ней, если SSH не работает (например, из-за неправильной настройки ключей SSH или системного брандмауэра).

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

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

Обратите внимание на меню ISO-образов, из которого у вас есть доступ к гораздо большему количеству образов операционной системы, чем во время первоначальной установки, включая Windows.

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

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

Back в Termius, откройте главное меню, выберите узлы сети и нажмите кнопку +, чтобы добавить новый узел сети.

Введите псевдоним (имя) для нового хоста и IP-адрес, который вы указали ранее (если вы этого не сделали, вы можете просто найти его еще раз в Cloud Console). Прокрутите немного вниз и введите root в качестве вашего имени пользователя (Hetzner не создает непривилегированного пользователя по умолчанию, а просто позволяет вам войти как root), затем выберите сгенерированный вами ключ SSH. После того, как вы коснетесь значка с галочкой, новый узел сети будет добавлен.

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

Если вы работаете с большим количеством хостов в Termius, вы можете захотеть добавить идентификатор. Удостоверение — это предварительно настроенный набор имени пользователя, пароля и ключа, который вы можете выбрать во время настройки узла сети, а не назначать эту информацию каждому узлу по отдельности. Таким образом, если вам когда-нибудь понадобится поменять ключ, например, вам придется сделать это только в одном месте.

Последнее замечание о Hetzner: они также предлагают мощный API и клиент командной строки (CLI) с открытым исходным кодом под названием hcloud, который использует этот API для управления серверами помимо веб-интерфейса Cloud Console, так что вы можете полностью автоматизировать управление своими облачными серверами. В магазинах приложений для iOS и Android также есть приложение под названием My Hetzner, но поскольку это не официальное приложение, я не могу его рекомендовать, вы должны попробовать его сами, если считаете, что можете доверять разработчику.
Чтобы использовать любую из этих функций, вам необходимо создать токен API в меню доступа Cloud Console, который служит данными аутентификации для API управления вашим проектом. Вы можете создавать отдельные токены для всех различных вариантов использования.

WebVirtCloud - виртуальные машины на вашем сервере

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и не только, раньше всех! Вокруг Крипты и Youtube👍

Благодарность Илья Nixon за подготовку материала

Всем привет, дорогие нодеры!

Данный гайд не является чем-то сверхъестественным, скорее наоборот упрощенная инструкция рассчитанная на СНГ сегмент для поднятия виртуальных машин на Вашем железе. От мала до велика, от чайников до более менее "продвинутых" пользователей.

Официальный гайд на гитхаб: https://github.com/retspen/webvirtcloud

Данная инструкция является частью одного большого гайда, по поднятию нод-сканеров Forta. И да, гайд будет очень длинным.

Установка будет происходить на Ubuntu 20.04

По моим прикидкам, на 1-ую машину будет до 4-5 виртуальных машин, а на 2-ую до 5-6. Пока будем делать 5+5 с характеристиками 2-4CPU/8-16GB RAM/50GB. Для наших целей более чем достаточно, а почему такой разброс в CPU и RAM вы поймете позже.

Также у меня есть внешний роутер, через который происходит "открытие/закрытие" портов.

Кроме того, я отдельно рассмотрю установку на сервере у хостера.

p.s. В вашем случае сервер может быть другим, например Hetzner AX101 или другое.

Проверка железа на виртуализацию

Прежде чем начать, обновляемся:

sudo apt update

Проверим наше железо на возможность запуска виртуализации

grep -E -c "vmx|svm" /proc/cpuinfo

Если выдало больше 0, значит переходим к следующему шагу

apt-get install cpu-checker -y

Вводим команду

kvm-ok

Если выдает нечто подобное, то всё ок, можно переходить к установке.

INFO: /dev/kvm exists
KVM acceleration can be used

Установка WebVirtCloud

Загружаем необходимые пакеты:

sudo apt install git virtualenv python3-virtualenv python3-dev \
python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor \
libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev \
libssl-dev -y 

Копируем git и создаем файл settings.py из шаблона

git clone https://github.com/retspen/webvirtcloud
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py

Далее необходимо сгенерировать ключ

openssl rand -base64 32

Копируем ключ и записываем его в файл settings.py

sudo nano $HOME/webvirtcloud/webvirtcloud/settings.py

Жмем Ctrl+O, Enter, Ctrl+X

Далее вводим команды

sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
cd ..
sudo mv webvirtcloud /srv
sudo chown -R www-data:www-data /srv/webvirtcloud
cd /srv/webvirtcloud
virtualenv -p python3 venv
source venv/bin/activate
pip install -r conf/requirements.txt
python3 manage.py migrate
python3 manage.py collectstatic --noinput
sudo chown -R www-data:www-data /srv/webvirtcloud
sudo rm /etc/nginx/sites-enabled/default

Перезапускаем ngnix, supervisor

sudo service nginx restart
sudo service supervisor restart

Устанавливаем libvirt и KVM на сервер

wget -O - https://bit.ly/36baWUu | sudo sh

Прежде чем начать настраивать непосредственно сервер в WEB-панели, нужно добавить права доступа к файлам

echo "chmod 777 /var/run/libvirt/libvirt-sock" >> ~/.bash_profile
source ~/.bash_profile

Работа с панелью

Переходим в браузере по ссылке http://serverip

Появляется окно с авторизацией,
логин: admin
пароль: admin

Если данные манипуляции выполняются на арендованном сервере, то в первую очередь необходимо зайти в наш профиль и поменять пароль

Переходим в настройки(Settings)

Меняем Disk Cahe на None
Меняем Disk IO на Native

Переходим в Computes, жмем Local

Вводим имя, такое же как у нас имя сервера либо localhost

Т.к. у меня fortamain, я его и запишу

Далее переходим внутрь компьюта, нажав на глазок.

Прежде чем продолжить, выполняем на сервере команду для создания одной папки и двух подпапок iso и images

mkdir /home/kvm/
mkdir /home/kvm/{iso,images}

Сразу сохраним образ ubuntu 20.04 на машину, выполняем следующие команды:

cd /home/kvm/iso/
wget https://releases.ubuntu.com/20.04/ubuntu-20.04.5-live-server-amd64.iso

Пока на сервере будет скачиваться образ, продолжим настройки в веб-панели.

Переходим в Storages, жмем плюсик чтобы добавить хранилище

Создаем первое хранилище со следующими настройками

Аналогично следующее хранилище, только вкладка iso

В нем, как раз и будет находится наш образ Ubuntu.

Настройка сети(локально)

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

Еще раз! Данные манипуляции подходят только для установки на локальной машине. Для Hetzner такое делать нельзя! Получите предупреждение от хостера, особенно если смените mac адрес!

Ниже мы рассмотрим оба варианта. Начнем с локальной машины.

Сейчас все делаем с предельной осторожностью, иначе вы потеряете доступ к серверу

Устанавливаем bridge

sudo apt install bridge-utils

Теперь надо поправить файл 00-installer-config.yaml в папке /etc/netplan/ под Ваше оборудование

/etc/netplan/

Перед тем как начать редактировать config файл, надо запомнить название устройства:

В моем случае enp9s0, который мы запоминаем, а mac-адрес мы подставим либо наш уже имеющийся, либо рандомный

Редактируем файл 00-installer-config.yaml

network:
  ethernets:
    enp9s0:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      macaddress: 16:76:1a:3b:be:03
      interfaces:
        - enp9s0
      dhcp4: true
      dhcp6: false
      parameters:
        stp: true
        forward-delay: 4

enp9s0(дважды), macaddress меняем на свои!

Менять я буду вручную в файле через mobaxterm.

Теперь надо применить новые настройки.

sudo netplan apply

Если всё ок, то настройки примутся, если же нет, то мы или потеряем доступ к серверу или же выдаст ошибку.

Далее еще один важный момент. Чтобы наш kvm хост мог осуществлять транзит пакетов через себя, надо это явно разрешить в sysctl. Добавляем в /etc/sysctl.d/99-sysctl.conf новый параметр. Он там уже есть, надо только снять пометку комментария.

net.ipv4.ip_forward=1

Применяем новую настройку ядра.

sudo sysctl -p /etc/sysctl.d/99-sysctl.conf

Перезагружаем сервер

reboot

В конце манипуляций в разделе interfaces появится наш бридж

Если всё сделано правильно, то сервер перезагрузится и у вас будет доступ к нему. А если не будет доступа к серверу, то поздравляю - бегом переустанавливать систему!

Настройка сети (арендованный сервер)

В случае работы с hetzner, может не запуститься virbr0(virtual bridge), а он нам нужен, для этого выполняем следующие манипуляции

Переходим в наш сервер из раздела Computes

Заходим в раздел Networks и жмем на default

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

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

Продолжаем настройку

Машина настроена, пора создать intance

Жмем сверху intances и плюсик справа, потом выбираем нашу машину, жмем chose

Далее оставляем как есть, жмем next

Можно создать свой шаблон, но я буду использовать micro, потом делать для него resize

Жмем плюсик напротив micro(1-ая строка)

Заполняем Name, ну и при желании выбираем Storage, но я оставлю как есть.

Поздравляю, первая виртуальная машина сделана, необходимо ее настроить

Первым делом, заходим в Resize. Указываем настройки процессора и жмем Resize. У меня будут Current:2, Maximum:4.

Вы выбираете для себя необходимое количество.
Исходя из требований и кол-ва виртуальных машин.

Идем опять в Resize и выбираем вкладку Memory. Аналогично CPU я указываю 8gb ram/16gb ram и жму Resize.
Наблюдения: для форты хватит и 8gb/8gb, но не меньше, иначе будет ругаться сканер!

Таким же образом захожу в Resize, вкладка Disk. Указываю 50GB(хотя хватит и 20GB), подтверждаю настройки, нажатием кнопки Resize.

После всех манипуляций сверху мы увидим наши настройки виртуальной машины(ВМ).

Далее переходим в раздел настройки(Settings), подраздел Disk, жмем Mount напротив нашего образа

Далее, в случае если у Вас машина стоит дома или же Вы "поднимаете на локалке", то также необходимо зайти в Settings, подраздел Network и поменять Source на br0, т.е. на наш созданный бридж. Если Вы поднимаете у хостера, то у Вас будет Interface virbr0.

Клонирование виртуальных машин

Теперь чтобы упростить процесс, можно клонировать ВМ. Для этого заходите в раздел Settings. подраздел Clone.

Важное замечание! Делать это нужно до запуска и установки ВМ, во избежание косяков.

Таким образом мы сделали 5 ВМ

Запуск и установка Ubuntu 20.04

Для первого запуска, нам необходимо установить нашу ВМ.

Для тех кто "продвинут" в этом вопросе, могут просто пропустить данный шаг.

Переходим в нашу виртуальную машину(ВМ), жмем кнопку Power On

Далее раздел Access, жмем кнопку консоль. При нажатии на нее будет всплывающее окно с доступом к серверу

Выбираем необходимый нам язык, я же буду по старинке на English.

Язык клавиатуры English (US) в обоих вариантах, по стандарту.

Жмем Done. Идем дальше.

Настройки сети. Здесь должно определиться само. Если внутри локальной сети, смотрите чтобы ip соответствовал ей. Если не так, проверьте настройки Network(сети) в WebVirtCloud, возможно у вас не включен бридж.

В случае если данные манипуляции производятся на арендованном сервере, то должен отобразиться ip подсети, у меня это 192.168.122.XXX.

Необходимо запомнить или записать данный адрес, он нам пригодится чуть позже!

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

Следующий шаг оставляем как есть

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

Здесь необходимо сделать Unmount раздела / и добавить оставшееся свободное место, но это необязательно, т.к. для Forta хватит и этого пространства. Либо вы можете добавить раздел /home чтобы сохранять рабочие файлы там.
Я же объединяю всё под /, чтобы не заморачиваться, хотя правильнее будет хранить рабочие файлы в другой папке.

Указываем максимальное пространство, а также не забываем в графе выбора Mount указать раздел /

После того как с разметкой разделов закончили, выбираем Done и жмем Enter

Нас предупредят, что мы потеряем всю информацию на данных дисках, с чем я и соглашаюсь.

Далее необходимо указать:

  1. Ваше Имя
  2. Имя сервера
  3. Выбрать логин(советую каждый раз выбирать новый)
  4. Указать пароль дважды

После ввода данных, подтверждаем и появляется следующий экран с предложением установить OpenSSH сервер, жмем Enter(ставим крестик), потом Done. При желании вы можете импортировать SSH ключ, но в данном гайде я не буду рассматривать этот подпункт.

Из всего имеющегося ниже, я бы установил только Docker, но я буду его ставить отдельно для сканера Forta, поэтому кручу вниз и жму Done.

Пошел процесс установки. Ждем пока не появится кнопка reboot

Кнопка появилась, жмем ее

Теперь система ругается что у нас смонтирован образ системы.

Необходимо перейти в WebVirtCloud, Settings, Disk и нажать Unmount.

Возвращаемся к нашему окну и жмем Enter, чтобы запустилась система.

На этом установка закончилась, можно подключиться к серверу по своему ip и логин\паролю.

P.s. для удобства, можно нажать в веб-панели на глазок, чтобы зайти в vnc консоль сразу.

Вход на каждую ВМ под собственным портом

В случае если мы делаем на локальной машине и у нас есть dhcp(автоматическое определение машин и назначение им ip адреса в сети), то данный пункт будет нам неинтересен, ибо каждый раз будет новый ip на виртуалке.

Однако если делать ВМ на сервере, то при наличии нескольких машин с одним логином, возникнут проблемы.

Чтобы не возникало проблем, нужно сделать следующие манипуляции на нужной нам ВМ.

При установке я говорил запомнить данный адрес, в данном случае 192.168.122.136

Далее на основной машине, где у нас установлена KVM, необходимо выполнить следующие команды в iptables

sudo iptables -I FORWARD -o virbr0 -d 192.168.122.XXX -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport NNN -j DNAT \
--to 192.168.122.XXX:22

Где XXX - окончание ip адреса нашего сервера, в моем примере это будет 136,
а NNN - номер порта, по которому будет происходить подключение к серверу.

Пример:

sudo iptables -I FORWARD -o virbr0 -d 192.168.122.136 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 2201 -j DNAT --to 192.168.122.136:22

Пример копировать не надо! У Вас будут свои настройки!

Повторяем данные команды для нужного нам количества серверов!

Поздравляю. Настройка закончена!

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

Как установить Proxmox VE

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и не только, раньше всех! Вокруг Крипты и Youtube👍

Введение

Proxmox VE — серверная платформа с открытым исходным кодом для корпоративной виртуализации. Как дистрибутив Linux на базе Debian, Proxmox использует модифицированное ядро ​​Ubuntu для запуска нескольких виртуальных машин и контейнеров на одном сервере.

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

В этом руководстве показано, как установить и настроить Proxmox.

Предпосылки

  • Физический или выделенный сервер .
  • 64-битный процессор .
  • Не менее 1 ГБ оперативной памяти (и дополнительная оперативная память, необходимая для гостевых виртуальных машин).
  • USB-накопитель емкостью не менее 1 ГБ.

Установка виртуальной среды Proxmox через графический интерфейс

Чтобы установить Proxmox VE на физический или выделенный сервер, выполните следующие действия.

Примечание: Для лучшей производительности используйте Proxmox на bare metal оборудовании, особенно в производственных средах. Загрузите сервер phoenixNAP Bare Metal Cloud с установленным и настроенным Proxmox из коробки.

Bare Metal Cloud предлагает автоматизированное развертывание с серверами Proxmox, которые обычно развертываются за 8 минут (без дополнительных затрат). Посмотрите, как легко развернуть сервер Bare Metal Cloud .

Шаг 1: Загрузите ISO-образ Proxmox

Первый шаг — загрузить образ Proxmox VE ISO. Выполните следующие шаги:

1. Перейдите на официальную страницу загрузок Proxmox ISO и найдите последнюю доступную версию установщика Proxmox. На момент написания статьи последней версией была 8.2-1. Если доступна более новая версия, она указана вверху. Нажмите « Загрузить» и сохраните файл .

Шаг 2: Подготовка установочного носителя

Скопируйте образ Proxmox ISO на CD/DVD или USB-флешку. Хотя оба варианта возможны, предполагается, что большинство систем не имеют оптического привода.

Подключите USB-накопитель и скопируйте образ ISO на USB-накопитель с помощью командной строки или утилиты форматирования USB (например, Etcher или Rufus).

Примечание: Создайте резервную копию и удалите все данные на устройстве, так как этот процесс приведет к удалению всех ранее сохраненных данных.

Если вы работаете в Linux , самый быстрый способ создать загрузочный USB-накопитель — использовать следующий синтаксис:

dd bs=1M conv=fdatasync if=./proxmox-ve_*.iso of=/device/name

Измените имя файла и путь if=./proxmox-ve_*.isoи обязательно укажите правильное имя USB-устройства в of=/device/name.

Чтобы узнать имя вашего USB-накопителя, выполните следующую команду до и после подключения устройства:

lsblk

Сравните вывод. Дополнительная запись во втором выводе — это имя устройства.

Шаг 3: Запустите установщик Proxmox

1. Перейдите на сервер (машину), на который вы хотите установить Proxmox, и подключите USB-устройство.

2. Пока сервер загружается, войдите в меню загрузки, нажав нужную клавишу(и) клавиатуры. Чаще всего это Esc , F2 , F10 , F11 , или F12 .

3. Выберите установочный носитель с ISO-образом Proxmox и загрузитесь с него.

4. Появится меню Proxmox VE. Выберите Install Proxmox VE , чтобы начать стандартную установку.

5. Прочитайте и примите лицензионное соглашение, чтобы продолжить.

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

7. Далее задайте местоположение, часовой пояс и раскладку клавиатуры. Установщик автоматически определяет большинство этих конфигураций.

8. Создайте надежный пароль для своих учетных данных администратора, введите пароль еще раз для подтверждения и введите адрес электронной почты для уведомлений системного администратора.

9. Последний шаг в установке Proxmox — настройка конфигурации сети. Выберите интерфейс управления, имя хоста для сервера, доступный IP-адрес, шлюз по умолчанию и DNS-сервер . В процессе установки используйте адрес IPv4 или IPv6 . Чтобы использовать оба, измените конфигурацию после установки.

10. Установщик суммирует выбранные параметры. Убедившись, что все в порядке, нажмите Установить .

11. Извлеките USB-накопитель и перезагрузите систему после установки.

Шаг 4: Запустите Proxmox

1. После перезагрузки системы загрузится меню Proxmox GRUB. Выберите Proxmox Virtual Environment GNU/Linux и нажмите Enter .

2. Далее появится приветственное сообщение Proxmox VE. Оно включает IP-адрес, с которого загружается Proxmox. Перейдите по этому IP-адресу в веб-браузере по вашему выбору.

3. После перехода по нужному IP-адресу вы можете увидеть предупреждающее сообщение о том, что страница небезопасна, поскольку Proxmox VE использует самоподписанные SSL-сертификаты . Щелкните ссылку IP, чтобы перейти к веб-интерфейсу управления Proxmox.

4. Чтобы получить доступ к интерфейсу, войдите в систему как root и введите пароль, который вы указали при установке Proxmox.

5. Появляется диалоговое окно с сообщением о том, что для сервера нет действительной подписки. Proxmox предлагает дополнительную услугу, на которую вы можете подписаться. Чтобы проигнорировать сообщение, нажмите O K.

Шаг 5: Создание виртуальной машины

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

1. Убедитесь, что у вас есть образы ISO для установочных носителей. Перейдите в дерево ресурсов в левой части вашего GUI .

Выберите сервер, который вы используете, и нажмите на локальный (pve1) . Выберите ISO-образы в меню и выберите загрузку образа или его скачивание с URL-адреса.

2. После добавления образа ISO запустите виртуальную машину. Нажмите кнопку Create VM .

3. Предоставьте общую информацию о виртуальной машине :

  • Начните с выбора Node . Если вы начинаете и у вас еще нет узлов, Proxmox автоматически выберет узел 1 ( pve1 ).
  • Укажите идентификатор виртуальной машины . Каждый ресурс должен иметь уникальный идентификатор.
  • Наконец, укажите имя виртуальной машины.

3. Далее перейдите на вкладку ОС и выберите нужный вам образ ISO для вашей виртуальной машины. Определите тип ОС и версию ядра . Нажмите Далее, чтобы продолжить.

4. Измените параметры системы (например, графическую карту и контроллер SCSI ) или оставьте настройки по умолчанию.

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

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

7. Далее выберите объем оперативной памяти (МиБ), который вы хотите выделить виртуальной машине.

8. Перейдите на вкладку Сеть . Рекомендуется отделить интерфейс управления от сети ВМ. Пока оставьте настройки по умолчанию и нажмите Далее .

9. Proxmox загружает вкладку «Подтверждение» , которая суммирует выбранные параметры виртуальной машины. Чтобы запустить виртуальную машину немедленно, установите флажок под указанной информацией или запустите виртуальную машину вручную позже. Нажмите « Завершить» , чтобы создать виртуальную машину.

10. Вновь созданная ВМ появится в дереве ресурсов в левой части экрана. Щелкните ВМ, чтобы увидеть ее характеристики и параметры.

Примечание: Узнайте, как удалить виртуальную машину в Proxmox . Руководство включает в себя методы командной строки и графического интерфейса для удаления виртуальной машины, дисков виртуальной машины и снимков виртуальной машины.

Установка виртуальной среды Proxmox через командную строку

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

Поскольку Proxmox основан на Debian, его не следует устанавливать поверх других дистрибутивов Linux. Хотя установка на Ubuntu может сработать, вы, скорее всего, столкнетесь с проблемами во время установки и использования программного обеспечения.

Если у вас есть машина с системой, отличной от Debian, и вы хотите сохранить эту систему и запустить Proxmox, используйте KVM для создания виртуальной машины Proxmox и запуска других виртуальных машин под ней.

Чтобы установить Proxmox VE с помощью CLI, выполните следующие действия.

Шаг 1: Обновите информацию о репозитории

Обновите информацию о репозитории пакетов вашей системы, выполнив следующую команду:

sudo apt update

Шаг 2: Настройте IP-адрес

Настройка IP-адреса сервера имеет важное значение, особенно если вы хотите получить удаленный доступ к Proxmox или при настройке сетевой среды. Вы можете настроить IP-адрес как статический или динамический:

  • Статический IP- адрес. Обычно рекомендуется назначать статический IP-адрес вашему серверу, особенно для таких служб, как Proxmox VE. Это гарантирует, что сервер всегда будет иметь один и тот же IP-адрес, что упрощает управление и доступ.
  • Динамический IP- адрес (DHCP). Если вы используете DHCP для назначения IP-адресов в своей сети, Debian может автоматически получить IP-адрес от вашего DHCP-сервера во время установки.

Чтобы настроить статический IP-адрес в Debian, выполните следующие действия:

1. Откройте файл конфигурации сети с помощью текстового редактора :

sudo nano /etc/network/interfaces

2. Найдите сетевой интерфейс, который вы хотите настроить ( eth0для подключений Ethernet или wlan0для беспроводных подключений), и измените файл, включив в него нужную вам конфигурацию сети.

Например, чтобы задать статический IP-адрес, маску сети, шлюз и DNS-серверы, добавьте строки, подобные приведенным ниже, и замените значения на соответствующие значения для вашей сети:

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Убедитесь, что заданный вами IP-адрес доступен из вашей сети и с машины, которую вы собираетесь использовать для управления Proxmox VE.

3. Сохраните файл и выйдите из текстового редактора.

4. Перезапустите сетевую службу, чтобы изменения вступили в силу:

sudo systemctl restart networking

Шаг 3: Добавьте репозиторий Proxmox

1. Расширьте свой доступ :

su -

2. Выполните следующую команду, чтобы установить необходимые пакеты для установки Proxmox:

apt install curl software-properties-common apt-transport-https ca-certificates gnupg2 -y

3. После завершения установки добавьте репозиторий Proxmox в каталог sources.list.d . Выполните следующую команду:

echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list

4. После добавления репозитория используйте команду wget для загрузки и добавления ключа репозитория Proxmox VE:

wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

5. Наконец, обновите локальный кэш APT и обновите пакеты до последней версии:

apt update && sudo apt full-upgrade

Шаг 4: Установка ядра Proxmox

После обновления установите ядро ​​Proxmox, чтобы обеспечить оптимизированную, безопасную и полностью совместимую среду для работы Proxmox VE. Замена ядра Linux на Proxmox обеспечивает лучшую производительность и стабильность для вашей виртуализированной инфраструктуры.

Выполните следующую команду:

apt install proxmox-default-kernel -y

После завершения установки появится подтверждение того, что ядро ​​Proxmox успешно установлено:

Шаг 5: Установка пакетов Proxmox

Следующий шаг — установка Proxmox VE и дополнительных пакетов, таких как postfix и chrony . Postfix — это агент передачи почты (MTA), который Proxmox использует для отправки системных уведомлений, оповещений и других административных писем.

Chrony — это реализация сетевого протокола времени ( NTP ), которая синхронизирует системные часы с серверами NTP. Хотя они не являются обязательными, их функциональные возможности имеют решающее значение для управления виртуализированными средами.

Выполните следующие действия:

1. Установите пакеты с помощью следующей команды:

apt install proxmox-ve postfix open-iscsi chrony

Дождитесь завершения процесса.

2. Система предложит вам настроить Postfix. Нажмите Ok, чтобы начать настройку, выберите Local only в типе конфигурации почты и нажмите Enter для подтверждения.

3. Укажите предпочитаемое вами имя электронной почты и нажмите Enter .

Дождитесь завершения установки.

4. Убедитесь, что Proxmox установлен, выполнив команду ниже:

ss -tunelp | grep 8006

Как видно из вывода, Proxmox VE установлен и прослушивает TCP- порт 8006.

Шаг 6: Удалите ядро ​​Linux

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

apt remove linux-image-amd64 'linux-image-6.1*'

Появится запрос на подтверждение удаления ядра. Используйте клавиши со стрелками, чтобы выбрать Ok , и нажмите Enter для подтверждения.

Шаг 7: Обновите GRUB

Завершите процесс, обновив файл конфигурации GRUB:

update-grub

Кроме того, рекомендуется удалить пакет os-prober, чтобы он не отображал в меню загрузки любые виртуальные машины, созданные с помощью Proxmox. Выполните следующую команду:

apt remove os-prober

Перезагрузите систему для завершения процесса:

reboot

Шаг 7: Доступ к веб-интерфейсу Proxmox

При загрузке загрузчик GRUB показывает запись Proxmox VE . Выберите ее и нажмите Enter для продолжения.

Когда система загрузится, откройте веб-браузер и перейдите в веб-интерфейс администратора. Используйте следующий URL:

https://[your_IP_address]:8006/

Замените [your_IP_address]на IP-адрес вашей машины. Войдите в систему с вашими учетными данными root, чтобы создавать и управлять вашими виртуальными машинами, контейнерами и т. д.

Настройка виртуальной среды Proxmox

После создания виртуальной машины переходим к настройке среды.

Запустить виртуальную машину при загрузке

Если параметр Start at boot установлен на No , виртуальная машина не запустится автоматически после перезагрузки сервера. Это означает, что вам нужно войти в интерфейс Proxmox и запустить виртуальную машину вручную.

Чтобы изменить настройку по умолчанию, выделите параметр и нажмите кнопку «Изменить» .

Установите флажок и нажмите «ОК» .

Увеличить/уменьшить размер виртуального диска

Самый простой способ увеличить или уменьшить размер виртуального диска виртуальной машины — через интерфейс командной строки, что можно сделать онлайн или офлайн. При увеличении дискового пространства измените таблицу разделов и файловую систему внутри виртуальной машины, чтобы обновить ее до нового размера.

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

Общий синтаксис для увеличения/уменьшения размера виртуального диска:

qm resize [virtual_machine_ID] [disk] [size]

Например, чтобы добавить 10 ГБ на диск virtio0 на виртуальной машине с идентификатором 100, выполните:

qm resize 100 virtio0 +10G

Включить сетевой режим NAT

Как упоминалось выше, хорошей идеей будет изменить сетевой режим моста по умолчанию, чтобы предотвратить нахождение хоста Proxmox и виртуальных машин в одной сети. Чтобы создать отдельную сеть, включите сетевой режим NAT. Выполните следующие действия:

1. Отредактируйте файл Interfaces . Откройте командную строку и выполните:

sudo nano /etc/network/interfaces

В файле показано, что vmbr0это мостовая публичная сеть по умолчанию для Proxmox, как в примере ниже:

auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
        address 131.10.22.115
        netmask 255.255.255.0
        gateway 131.10.22.1
        bridge_ports eno1
        bridge_stp off
        bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE

2. Сохраните и выйдите из файла.

3. Перезапустите сетевую службу, чтобы изменения вступили в силу:

sudo systemctl restart networking

Режим сети NAT теперь включен.

Установка Proxmox: часто задаваемые вопросы

В этом разделе рассматриваются часто задаваемые вопросы об установке и использовании Proxmox.

Каковы минимальные системные требования для установки Proxmox?

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

  • ЦП : 64-битный процессор (Intel EMT64 или AMD64). Материнская плата и ЦП должны поддерживать Intel VT/AMD-V для полной виртуализации KVM.
  • Оперативная память : 1 ГБ, плюс дополнительная память по мере необходимости для виртуальных машин.
  • Хранилище : Жесткий диск/SSD.
  • Сеть : одна сетевая интерфейсная карта (NIC).

Каковы рекомендуемые системные требования для установки Proxmox?

Рекомендуемые системные требования для установки и использования Proxmox:

  • ЦП : 64-разрядный процессор (Intel EMT64 или AMD64) с поддержкой Intel VT/AMD-V.
  • RAM : не менее 2 ГБ для ОС и служб Proxmox VE, с дополнительной памятью, выделенной для виртуальных машин. Решения для хранения, такие как Ceph и ZFS, требуют примерно 1 ГБ RAM на ТБ используемого хранилища.
  • Хранилище : Предпочтительны быстрые и избыточные хранилища, а SSD-накопители обеспечивают оптимальную производительность. Для лучшей производительности рекомендуются SSD-накопители с защитой от потери питания (PLP).
  • Сеть : рекомендуются избыточные многогигабитные сетевые карты, а также дополнительные сетевые карты по мере необходимости в зависимости от технологии хранения данных и настройки кластера.
  • PCI(e) Passthrough : ЦП должен поддерживать VT-d/AMD-d.

На какой системе следует устанавливать Proxmox?

Proxmox VE (виртуальная среда) — это полное, автономное решение для управления виртуализацией, включающее собственную операционную систему . Таким образом, Proxmox VE устанавливается непосредственно на оборудование как операционная система и не требует другой базовой ОС. Он поставляется с собственным установщиком ISO, который включает операционную систему Linux на основе Debian вместе с интерфейсом управления Proxmox и инструментами.

Хотя это обычно не рекомендуется для производственных сред, Proxmox VE можно установить поверх существующей системы Debian, как описано в разделе «Установка CLI» выше. Это может быть полезно для тестирования или в особых случаях использования.

Какие операционные системы могут работать на Proxmox?

Proxmox может запускать на своих виртуальных машинах различные операционные системы, включая:

  • Дистрибутивы Linux. Ubuntu, Debian, Rocky Linux, Fedora, Red Hat Enterprise Linux ( RHEL ) и многие другие.
  • Windows: Windows Server (все версии), Windows 10, Windows 11.
  • Варианты BSD: FreeBSD, OpenBSD, NetBSD.
  • Другие Unix-подобные системы: Solaris, OpenIndiana.

Операционные системы поддерживаются посредством виртуализации на базе KVM и контейнеров LXC.

Заключение

В этой статье вы узнали, как установить и настроить Proxmox VE. Для получения дополнительной информации ознакомьтесь с официальной документацией Proxmox . Изучите автоматизированные развертывания Proxmox, проверив доступные экземпляры Bare Metal Cloud , и выберите конфигурацию, которая соответствует вашим потребностям и бюджету.

Изменение размера дисковой виртуальной машины на Proxmox

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

Изменение размера диска на Proxmox VM / LVM — это действие по увеличению емкости жесткого диска на виртуальной машине без потери данных и без необходимости добавления нового раздела диска в группе томов LVM.

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

1. Добавление емкости в пользовательском интерфейсе Proxmox

Первым делом заходим на номер виртуальной машины на proxmox, выделяем его, выбираем оборудование и выбираем жесткий диск.

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

После добавления дополнительной емкости вы можете перейти к виртуальной машине и еще раз проверить размер раздела

Видите ли, по-прежнему нет никаких изменений в емкости жесткого диска. Так что же нам нужно сделать, чтобы решить эту проблему? Мы добавили 80 Гб дополнительной емкости, так что жесткий диск уже должен быть 120 Гб, но все равно 40 Гб. Хорошо, нам нужно запустить следующий шаг, нам нужно изменить размер диска в виртуальной машине, чтобы ОС (в данном случае я использовал Ubuntu 20.04) могла прочитать всю емкость жесткого диска.

2. Как изменить емкость жесткого диска

процесс, который мы должны выполнить в пользовательском интерфейсе proxmox, завершен, поэтому мы должны сообщить нашей ОС изменить размер нового жесткого диска:

в консольной ОС вы можете набрать:

Команда parted /dev/sda > затем команда Print

как вы можете видеть, раздел по-прежнему 80 ГБ, хотя я добавил дополнительную емкость до 120 ГБ.

Поэтому нам приходится подталкивать ОС к распознаванию размера нового раздела

Просто введите: resizepart 3 100% > print

Результат будет выглядеть следующим образом:

Но подождите.. Не радуйтесь пока...

Если мы запустим команду df -h, то ОС все равно будет считывать старую емкость.

поэтому нам нужно проверить объем виртуальной машины в proxmox и показать текущий физический объем с помощью команды "pvdisplay"

Proxmox все еще считывает старую емкость жесткого диска:

поэтому нам нужно изменить размер емкости виртуальной машины с помощью команды:

pvresize /dev/sda3 > pvdisplay

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

Просто введите :

lvresize --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv

Да... Время для счастья сейчас, мы можем проверить с помощью команды df -h ,

Таким образом, вы можете видеть, что объем емкости увеличился в соответствии с объёмом, который мы добавили ранее.

Дорожная карта DevOps: от новичка до эксперта

MWSБлог

Медианная зарплата DevOps-инженеров в России — 235 000 руб. Выглядит заманчиво, но порог входа в профессию высокий. Чтобы стать экспертом в области DevOps, нужно получить опыт работы с Linux и облачными платформами, выучить языки программирования, освоить инструменты автоматизации и виртуализации.

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

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

Коротко о терминах DevOps

В основе DevOps лежит идея, что разработка, тестирование и эксплуатация продукта — это единый циклический процесс.

DevOps состоит из следующих компонентов:

  • автоматизированные инструменты для тестирования и развертывания;
  • средства автоматизации DevOps;
  • процессы DevOps;
  • команда DevOps.

DevOps — это методология разработки программного обеспечения (Dev) и IT-операций (Ops), которая помогает быстро и эффективно поставлять программные продукты и обеспечивать бесперебойное течение всего процесса.

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

Кто такой DevOps-инженер

Ключевую роль во внедрении методологии DevOps и обеспечении ее работы играет DevOps-инженер.

Основные задачи DevOps-инженера:

  • внедрение операций CI/CD;
  • автоматизация инфраструктуры;
  • сотрудничество с различными командами (в основном с командами SDE и ИТ-операций);
  • управление доступностью и производительностью программных приложений;
  • поиск багов и решение проблем организации процесса разработки.

Девопсер — многопрофильный специалист. Он берет на себя десяток задач, от решения которых зависит эффективность совместной работы разработчиков, тестировщиков и администраторов.

Языки программирования

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

Изучение концепций операционных систем

Поскольку DevOps-инженер работает непосредственно с программными системами, он должен иметь четкие знания об операционных системах и их базовых концепциях.

Зачем изучать концепции операционной системы:

  • для понимания архитектуры систем;
  • для автоматизации и настройки управления;
  • для устранения неполадок и отладки;
  • для применения инструментов безопасности.

Этот раздел знаний включает три разные области — операционные системы, сетевые протоколы и виртуализацию. Рассмотрим области подробнее.

Операционные системы

Большинство необходимых вам систем (виртуальные машины, контейнеры и т.д.) работают под управлением Linux. Изучите:

  • интерфейс systemd;
  • систему инициализации;
  • группы и пространства имен;
  • настройку производительности;
  • утилиты командной строки — awk, sed, jq, yq, curl, ssh, openssl и другие.

Сетевые протоколы

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

Что нужно знать:

  • HTTP/2;
  • QUIC или HTTP/3
  • протоколы уровня 4 и уровня 7 модели OSI;
  • MTL;
  • прокси;
  • DNS;
  • BGP;
  • как работает балансировка нагрузки;
  • таблицы IP и IP-адреса;
  • дизайн сети.

Виртуализация

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

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

Docker

Знание Docker позволяет DevOps-инженеру быстро создавать и развертывать тестовые среды, тестировать приложения в изолированной среде и упрощать процесс разработки.

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

Какие преимущества:

  • переносимый и гибкий;
  • обладает высокой масштабируемостью;
  • позволяет вести разработку совместно;
  • поддерживает согласованность.

Подробнее:

Kubernetes

Kubernetes — система для управления контейнерами на большом количестве хостов. Пользователям доступен функционал для масштабирования, деплоймента из готовых шаблонов, управление рабочими нагрузками и сервисами контейнеров. Популярность системе обеспечивает возможность построить DevOps или Development Operations, в которых Kubernetes используется для запуска процессов этого самого DevOps.

CI/CD

CI/CD (Continuous Integration/Continuous Delivery) — методология разработки программного обеспечения, которая позволяет автоматизировать процессы сборки, тестирования и доставки приложения в продакшн.

Continuous Integration (CI) — процесс автоматической сборки и тестирования кода после каждого изменения в репозитории. Позволяет быстро выявлять ошибки и проблемы в коде, что ускоряет процесс разработки.

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

Инструменты CI/CD: GitLab, Jenkins, Bamboo для автоматизации, тестирования и быстрой доставки различных модулей приложения разным отделам и командам.

Облачные сервисы

DevOps-инженер должен понимать принципы работы IaaS (инфраструктура как сервис), PaaS (платформенные решения), различных облачных сервисов (например, Containerum Managed Kubernetes), чтобы организовать эффективный процесс разработки приложений.

Информационная безопасность

Для большинства компаний, особенно небольших, безопасность долго была на первом месте с конца по приоритетности. Функциям продукта почти всегда уделялось больше внимания. Но из-за растущих атак и различных государственных требований компаниям приходится адаптировать свои стратегии безопасности. Сквозное шифрование, надежный RBAC, политики IAM, управление и аудит, а также внедрение таких критериев, как NIST, CIS, ISO27001, становятся общими правилами.

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

Дополнительные ресурсы

Даем список ресурсов, которые дадут общее представление о DevOps:

Коротко о главном

DevOps упрощает жизнь всех участников процесса разработки цифрового продукта.

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

Дорожная карта поможет определить конкретные цели, задачи и шаги, необходимые для того, чтобы стать DevOps-инженером.

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

Bash-скрипты: начало

Bash-скрипты: начало

Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

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

Итак, если говорить о командной строке, она позволяет выполнить несколько команд за один раз, введя их через точку с запятой:

pwd ; whoami

На самом деле, если вы опробовали это в своём терминале, ваш первый bash-скрипт, в котором задействованы две команды, уже написан. Работает он так. Сначала команда pwd выводит на экран сведения о текущей рабочей директории, потом команда whoamiпоказывает данные о пользователе, под которым вы вошли в систему.

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

getconf ARG_MAX

Командная строка — отличный инструмент, но команды в неё приходится вводить каждый раз, когда в них возникает необходимость. Что если записать набор команд в файл и просто вызывать этот файл для их выполнения? Собственно говоря, тот файл, о котором мы говорим, и называется сценарием командной строки.

Как устроены bash-скрипты

Создайте пустой файл с использованием команды touch. В его первой строке нужно указать, какую именно оболочку мы собираемся использовать. Нас интересует bash, поэтому первая строка файла будет такой:

#!/bin/bash

В других строках этого файла символ решётки используется для обозначения комментариев, которые оболочка не обрабатывает. Однако, первая строка — это особый случай, здесь решётка, за которой следует восклицательный знак (эту последовательность называют шебанг) и путь к bash, указывают системе на то, что сценарий создан именно для bash.

Команды оболочки отделяются знаком перевода строки, комментарии выделяют знаком решётки. Вот как это выглядит:

#!/bin/bash
# This is a comment
pwd
whoami

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

Установка разрешений для файла сценария

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

Попытка запуска файла сценария с неправильно настроенными разрешениями

Сделаем файл исполняемым:

chmod +x ./myscript

Теперь попытаемся его выполнить:

./myscript

После настройки разрешений всё работает как надо.

Успешный запуск bash-скрипта

Вывод сообщений

Для вывода текста в консоль Linux применяется команда echo. Воспользуемся знанием этого факта и отредактируем наш скрипт, добавив пояснения к данным, которые выводят уже имеющиеся в нём команды:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

Вот что получится после запуска обновлённого скрипта.

Вывод сообщений из скрипта

Теперь мы можем выводить поясняющие надписи, используя команду echo. Если вы не знаете, как отредактировать файл, пользуясь средствами Linux, или раньше не встречались с командой echo, взгляните на этот материал.

Использование переменных

Переменные позволяют хранить в файле сценария информацию, например — результаты работы команд для использования их другими командами.

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

Существуют два типа переменных, которые можно использовать в bash-скриптах:

  • Переменные среды
  • Пользовательские переменные

Переменные среды

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

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

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

Использование переменной среды в сценарии

А что если надо вывести на экран значок доллара? Попробуем так:

echo "I have $1 in my pocket"

Система обнаружит знак доллара в строке, ограниченной кавычками, и решит, что мы сослались на переменную. Скрипт попытается вывести на экран значение неопределённой переменной $1. Это не то, что нам нужно. Что делать?

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

echo "I have \$1 in my pocket"

Теперь сценарий выведет именно то, что ожидается.

Использование управляющей последовательности для вывода знака доллара

Пользовательские переменные

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

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

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

Вот что получится после запуска такого сценария.

Пользовательские переменные в сценарии

Подстановка команд

Одна из самых полезных возможностей bash-скриптов — это возможность извлекать информацию из вывода команд и назначать её переменным, что позволяет использовать эту информацию где угодно в файле сценария.

Сделать это можно двумя способами.

  • С помощью значка обратного апострофа «`»
  • С помощью конструкции $()

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

mydir=`pwd`

При втором подходе то же самое записывают так:

mydir=$(pwd)

А скрипт, в итоге, может выглядеть так:

#!/bin/bash
mydir=$(pwd)
echo $mydir

В ходе его работы вывод команды pwdбудет сохранён в переменной mydir, содержимое которой, с помощью команды echo, попадёт в консоль.

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

Математические операции

Для выполнения математических операций в файле скрипта можно использовать конструкцию вида $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Математические операции в сценарии

Управляющая конструкция if-then

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

if команда
then
команды
fi

А вот рабочий пример:

#!/bin/bash
if pwd
then
echo "It works"
fi

В данном случае, если выполнение команды pwdзавершится успешно, в консоль будет выведен текст «it works».

Воспользуемся имеющимися у нас знаниями и напишем более сложный сценарий. Скажем, надо найти некоего пользователя в /etc/passwd, и если найти его удалось, сообщить о том, что он существует.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Вот что получается после запуска этого скрипта.

Поиск пользователя

Здесь мы воспользовались командой grepдля поиска пользователя в файле /etc/passwd. Если команда grepвам незнакома, её описание можно найти здесь.

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

Управляющая конструкция if-then-else

Для того, чтобы программа смогла сообщить и о результатах успешного поиска, и о неудаче, воспользуемся конструкцией if-then-else. Вот как она устроена:

if команда
then
команды
else
команды
fi

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

Напишем такой скрипт:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Его исполнение пошло по ветке else.

Запуск скрипта с конструкцией if-then-else

Ну что же, продолжаем двигаться дальше и зададимся вопросом о более сложных условиях. Что если надо проверить не одно условие, а несколько? Например, если нужный пользователь найден, надо вывести одно сообщение, если выполняется ещё какое-то условие — ещё одно сообщение, и так далее. В подобной ситуации нам помогут вложенные условия. Выглядит это так:

if команда1
then
команды
elif команда2
then
команды
fi

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

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

В подобном скрипте можно, например, создавать нового пользователя с помощью команды useradd, если поиск не дал результатов, или делать ещё что-нибудь полезное.

Сравнение чисел

В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.

n1 -eq n2Возвращает истинное значение, если n1 равно n2.
n1 -ge n2 Возвращает истинное значение, если n1больше или равно n2.
n1 -gt n2Возвращает истинное значение, если n1 больше n2.
n1 -le n2Возвращает истинное значение, если n1меньше или равно n2.
n1 -lt n2Возвращает истинное значение, если n1 меньше n2.
n1 -ne n2Возвращает истинное значение, если n1не равно n2.

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

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

Вот что выведет эта команда.

Сравнение чисел в скриптах

Значение переменной val1больше чем 5, в итоге выполняется ветвь thenоператора сравнения и в консоль выводится соответствующее сообщение.

Сравнение строк

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

str1 = str2 Проверяет строки на равенство, возвращает истину, если строки идентичны.
str1 != str2Возвращает истину, если строки не идентичны.
str1 < str2Возвращает истину, если str1меньше, чем str2.
str1 > str2 Возвращает истину, если str1больше, чем str2.
-n str1 Возвращает истину, если длина str1больше нуля.
-z str1Возвращает истину, если длина str1равна нулю.

Вот пример сравнения строк в сценарии:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

В результате выполнения скрипта получим следующее.

Сравнение строк в скриптах

Вот одна особенность сравнения строк, о которой стоит упомянуть. А именно, операторы «>» и «<» необходимо экранировать с помощью обратной косой черты, иначе скрипт будет работать неправильно, хотя сообщений об ошибках и не появится. Скрипт интерпретирует знак «>» как команду перенаправления вывода.

Вот как работа с этими операторами выглядит в коде:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 \> $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Вот результаты работы скрипта.

Сравнение строк, выведенное предупреждение

Обратите внимание на то, что скрипт, хотя и выполняется, выдаёт предупреждение:

./myscript: line 5: [: too many arguments

Для того, чтобы избавиться от этого предупреждения, заключим $val2 в двойные кавычки:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 \> "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Теперь всё работает как надо.

Сравнение строк

Ещё одна особенность операторов «>» и «<» заключается в том, как они работают с символами в верхнем и нижнем регистрах. Для того, чтобы понять эту особенность, подготовим текстовый файл с таким содержимым:

Likegeeks
likegeeks

Сохраним его, дав имя myfile, после чего выполним в терминале такую команду:

sort myfile

Она отсортирует строки из файла так:

likegeeks
Likegeeks

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

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 \> $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Если его запустить, окажется, что всё наоборот — строчная буква теперь больше прописной.

Команда sort и сравнение строк в файле сценария

В командах сравнения прописные буквы меньше строчных. Сравнение строк здесь выполняется путём сравнения ASCII-кодов символов, порядок сортировки, таким образом, зависит от кодов символов.

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

Проверки файлов

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

-d fileПроверяет, существует ли файл, и является ли он директорией.
-e fileПроверяет, существует ли файл.
-f file Проверяет, существует ли файл, и является ли он файлом.
-r fileПроверяет, существует ли файл, и доступен ли он для чтения.
-s file Проверяет, существует ли файл, и не является ли он пустым.
-w fileПроверяет, существует ли файл, и доступен ли он для записи.
-x fileПроверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 Проверяет, новее ли file1, чем file2.
file1 -ot file2Проверяет, старше ли file1, чем file2.
-O file Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G fileПроверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

Эти команды, как впрочем, и многие другие рассмотренные сегодня, несложно запомнить. Их имена, являясь сокращениями от различных слов, прямо указывают на выполняемые ими проверки.

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

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

Этот скрипт, для существующей директории, выведет её содержимое.

Вывод содержимого директории

Полагаем, с остальными командами вы сможете поэкспериментировать самостоятельно, все они применяются по тому же принципу.

Итоги

Сегодня мы рассказали о том, как приступить к написанию bash-скриптов и рассмотрели некоторые базовые вещи. На самом деле, тема bash-программирования огромна. Эта статья является переводом первой части большой серии из 11 материалов. Если вы хотите продолжения прямо сейчас — вот список оригиналов этих материалов. Для удобства сюда включён и тот, перевод которого вы только что прочли.

  1. Bash Script Step By Step — здесь речь идёт о том, как начать создание bash-скриптов, рассмотрено использование переменных, описаны условные конструкции, вычисления, сравнения чисел, строк, выяснение сведений о файлах.
  2. Bash Scripting Part 2, Bash the awesome — тут раскрываются особенности работы с циклами for и while.
  3. Bash Scripting Part 3, Parameters & options — этот материал посвящён параметрам командной строки и ключам, которые можно передавать скриптам, работе с данными, которые вводит пользователь, и которые можно читать из файлов.
  4. Bash Scripting Part 4, Input & Output — здесь речь идёт о дескрипторах файлов и о работе с ними, о потоках ввода, вывода, ошибок, о перенаправлении вывода.
  5. Bash Scripting Part 5, Sighals & Jobs — этот материал посвящён сигналам Linux, их обработке в скриптах, запуску сценариев по расписанию.
  6. Bash Scripting Part 6, Functions — тут можно узнать о создании и использовании функций в скриптах, о разработке библиотек.
  7. Bash Scripting Part 7, Using sed — эта статья посвящена работе с потоковым текстовым редактором sed.
  8. Bash Scripting Part 8, Using awk — данный материал посвящён программированию на языке обработки данных awk.
  9. Bash Scripting Part 9, Regular Expressions — тут можно почитать об использовании регулярных выражений в bash-скриптах.
  10. Bash Scripting Part 10, Practical Examples — здесь приведены приёмы работы с сообщениями, которые можно отправлять пользователям, а так же методика мониторинга диска.
  11. Bash Scripting Part 11, Expect Command — этот материал посвящён средству Expect, с помощью которого можно автоматизировать взаимодействие с интерактивными утилитами. В частности, здесь идёт речь об expect-скриптах и об их взаимодействии с bash-скриптами и другими программами.

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

Введение в Docker


МАТЕРИАЛ ОТ G7

Что это такое и как с ним работать?

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

Что такое контейнеры?

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

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

Основные компоненты Docker

  1. Docker Engine: Основной компонент Docker, который позволяет создавать, запускать и управлять контейнерами.
  2. Образы (Images): Шаблоны для создания контейнеров. Образ включает все необходимое для работы приложения — код, библиотеки, переменные окружения, файлы конфигурации и т.д.
  3. Контейнеры: Запущенные экземпляры образов. Каждый контейнер работает изолированно от других контейнеров и от хоста.
  4. Docker Hub: Облачное хранилище образов. Здесь можно найти и загрузить готовые образы для различных приложений.

Dockerfile: Что это такое и для чего нужно?

Dockerfile — это текстовый файл, в котором описаны инструкции для создания Docker-образа. С его помощью вы можете автоматизировать процесс создания образов, указывая, какие шаги и команды необходимо выполнить для настройки среды, в которой будет работать ваше приложение.

Для чего нужен Dockerfile?

Dockerfile используется для создания собственных образов, которые содержат все необходимое для запуска вашего приложения: операционную систему, библиотеки, зависимости, конфигурационные файлы и сам код приложения. С его помощью можно создать стандартизированные и воспроизводимые образы, которые можно развернуть на любой машине с установленным Docker.

Основные команды Dockerfile

  • FROM: Задает базовый образ, на основе которого будет создаваться новый образ.
    FROM ubuntu:20.04
  • COPY: Копирует файлы с хост-машины в контейнер.
    COPY . /app
  • RUN: Выполняет команды на этапе сборки образа (например, установка пакетов).
    RUN apt-get update && apt-get install -y nginx
  • CMD: Задает команду, которая будет выполнена при запуске контейнера.
    CMD ["nginx", "-g", "daemon off;"]
  • EXPOSE: Указывает, какие порты должны быть доступны из контейнера.
    EXPOSE 80

Вот небольшой пример Dockerfile, который создает образ для простого веб-сервера на базе Nginx:

# Указываем базовый образ
FROM nginx:alpine

# Копируем содержимое текущей директории на хосте в директорию /usr/share/nginx/html в контейнере
COPY . /usr/share/nginx/html

# Открываем порт 80 для доступа к веб-серверу
EXPOSE 80

# Устанавливаем команду для запуска Nginx при старте контейнера
CMD ["nginx", "-g", "daemon off;"]

Установка Docker

Docker поддерживается на большинстве популярных операционных систем: Windows, macOS и различных дистрибутивах Linux. Процесс установки отличается в зависимости от ОС, но в большинстве случаев достаточно следовать официальной документации на сайте Docker.

Основные команды Docker

После установки Docker, вы можете использовать следующие команды для работы с ним:

  1. docker pull [имя образа]: Загружает образ из Docker Hub на вашу машину.
    docker pull nginx
  2. docker run [опции] [имя образа]: Создает и запускает контейнер из образа.
    docker run -d -p 8080:80 nginx
    • -d запускает контейнер в фоновом режиме.
    • -p 8080:80 перенаправляет порт 8080 на хосте на порт 80 в контейнере.
    • --restart [политика]: Опция, которая определяет, будет ли Docker автоматически перезапускать контейнер в случае его сбоя или остановки. Примеры политики:
      docker run -d --restart always nginx
      • no — (по умолчанию) не перезапускать контейнер.
      • on-failure — перезапускать контейнер, если он завершился с ошибкой (не с кодом 0).
      • always — всегда перезапускать контейнер, даже если он был остановлен вручную.
      • unless-stopped — перезапускать контейнер всегда, за исключением случаев, когда он был остановлен вручную.
  3. docker ps: Показывает список запущенных контейнеров.
    docker ps
    • docker ps -a: Показывает список всех контейнеров, включая остановленные и завершенные.
      docker ps -a
  4. docker stop [ID контейнера]: Останавливает запущенный контейнер.
    docker stop c3f279d17e0a
  5. docker start [ID контейнера]: Запускает остановленный контейнер.
  6. docker restart [ID контейнера]: Перезапускает контейнер
  7. docker rm [ID контейнера]: Удаляет остановленный контейнер.
    docker rm c3f279d17e0a
  8. docker images: Показывает список всех загруженных образов.
    docker images
  9. docker rmi [ID образа]: Удаляет образ с вашей машины.
    docker rmi 7d9495d03763
  10. docker logs [ID контейнера]: Выводит логи контейнера.
    • docker logs -f [ID контейнера]: Включает «живой» просмотр логов контейнера в реальном времени.
      docker logs -f c3f279d17e0a
    • docker logs --tail [число строк] [ID контейнера]: Выводит последние N строк логов контейнера.
      docker logs --tail 100 c3f279d17e0a
  11. docker exec -it [ID контейнера] [команда]: Позволяет выполнить команду внутри запущенного контейнера. Часто используется для доступа к командной строке контейнера.
    docker exec -it c3f279d17e0a /bin/bash
  12. docker build [опции] [путь к Dockerfile]: Создает Docker-образ на основе Dockerfile, находящегося в указанной директории.
    docker build -t my-custom-image .
  • -t my-custom-image задает имя создаваемому образу.
  • . указывает на текущую директорию, где находится Dockerfile.

Управление контейнерами

Для управления контейнерами можно использовать команды Docker CLI или специальные оркестрационные инструменты, такие как Docker Compose или Kubernetes.

  1. Docker Compose: Инструмент для управления многоконтейнерными приложениями. Он позволяет описывать многоконтейнерное приложение с помощью YAML-файла.
    • Пример docker-compose.yml:
      version: '3' services: web: image: nginx ports: - "8080:80" restart: always db: image: mysql environment: MYSQL_ROOT_PASSWORD: example restart: on-failure
    • Команды:
      • docker-compose up -d — Запускает все сервисы, описанные в docker-compose.yml.
      • docker-compose down — Останавливает и удаляет все контейнеры, созданные docker-compose.
  2. Kubernetes: Система для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Подходит для управления большими и сложными инфраструктурами.

Статусы контейнеров

Контейнеры в Docker могут находиться в различных состояниях, которые отражают их текущий статус:

  1. Created: Контейнер был создан, но еще не запущен.
  2. Running: Контейнер запущен и выполняется.
  3. Exited: Контейнер завершил свою работу. Если контейнер завершился с ошибкой, это также будет указано в статусе.
  4. Paused: Контейнер был приостановлен и временно не выполняет никаких операций.
  5. Restarting: Контейнер перезапускается после сбоя или по заданной политике перезапуска.
  6. Dead: Контейнер в состоянии "мертвый", что означает, что произошла ошибка при завершении контейнера или его удалении.

Для проверки статусов контейнеров используйте команду docker ps или docker ps -a для просмотра всех контейнеров.

Хранение данных в Docker

Контейнеры Docker по своей природе эфемерны, то есть их состояние не сохраняется после остановки и удаления. Чтобы сохранить данные, используются тома (volumes) или bind mounts.

  • Тома (Volumes): Специальные директории, управляемые Docker, которые могут быть смонтированы в контейнер. Они остаются на хосте, даже если контейнер удален.
    docker run -v /data:/var/lib/mysql mysql
  • Bind mounts: Связывают директорию хоста с директорией контейнера.
    docker run -v /path/on/host:/path/in/container nginx

Работа с .env файлами и передача переменных окружения в Docker

.env файл — это файл, в котором хранятся переменные окружения. В контексте Docker он используется для передачи конфигурационных данных в контейнеры, таких как пароли, ключи API, порты и другие параметры, которые могут изменяться в зависимости от среды (разработка, тестирование, продакшн).

Как использовать .env файл с Docker?

  1. Создание .env файла: В корневой директории вашего проекта создайте файл .env и укажите в нем переменные окружения в формате ключ=значение
MYSQL_ROOT_PASSWORD=supersecretpassword 
MYSQL_DATABASE=mydatabase 

2. Использование с Docker Compose: Docker Compose автоматически загружает переменные из .env файла и передает их в ваши сервисы

version: '3'
services: 
  db:
    image: mysql 
    environment: 
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 
      MYSQL_DATABASE: ${MYSQL_DATABASE} 

3. Передача переменных окружения через аргумент -e в docker run: Переменные окружения также можно передавать напрямую при запуске контейнера с помощью опции -e.

docker run -d -e MYSQL_ROOT_PASSWORD=supersecretpassword -e MYSQL_DATABASE=mydatabase mysql 

В этом примере -e указывает Docker, что нужно задать переменные окружения MYSQL_ROOT_PASSWORD и MYSQL_DATABASE в контейнере.

4. Передача переменных в Dockerfile: Можно использовать переменные окружения из .env файла и в Dockerfile, если задать их через ARG и ENV.

ARG MYSQL_ROOT_PASSWORD 
ENV MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} 

Полезные команды и опции Docker

  1. docker ps -a: Показывает все контейнеры, включая остановленные.
  2. docker logs -f [ID контейнера]: «Живой» просмотр логов контейнера.
  3. docker logs --tail [число строк] [ID контейнера]: Вывод последних N строк логов.
  4. docker exec -it [ID контейнера] /bin/bash: Доступ к командной строке контейнера.
  5. docker inspect [ID контейнера]: Выводит детальную информацию о контейнере или образе в формате JSON.
  6. docker cp [ID контейнера]:/path/in/container /path/on/host: Копирует файлы из контейнера на хост.
    docker cp c3f279d17e0a:/app/logs ./logs
  7. docker run --restart [политика] [имя образа]: Устанавливает политику автоматического перезапуска контейнера.

Заключение

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

Руководство по работе с портами на серверах

Материал от G7


Что такое порты?

Порт — это логическая точка, используемая для обмена данными между сервером и клиентом. Порты различаются по типам: TCP и UDP.

Основные типы портов

  1. TCP (Transmission Control Protocol): Обеспечивает надежную передачу данных с подтверждением доставки.
  2. UDP (User Datagram Protocol): Быстрый, но ненадежный метод передачи данных без подтверждения доставки.

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

Файрволл: защита и управление трафиком

Файрволл (брандмауэр) — это инструмент для контроля и управления входящими и исходящими соединениями. Он позволяет задавать правила, которые определяют, какой трафик может проходить через сервер.

Управление портами и файрволлом

Прежде чем включать или отключать UFW(Uncomplicated Firewall), рекомендуется проверить его текущий статус:

1. Проверка состояния UFW

sudo ufw status

2. Включение и отключение UFW

Включение

sudo ufw enable

Выключение

sudo ufw disable

3. Просмотр всех правил UFW

sudo ufw status verbose

4. Открытие порта

sudo ufw allow 8080/tcp

5. Закрытие порта:

sudo ufw deny 8080/tcp

iptables

Если UFW не включен, используется iptables для управления правилами:

1. Открытие порта с помощью iptables:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

2. Закрытие порта:

sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

3. Сохранение правил iptables

Чтобы изменения не терялись после перезагрузки системы, необходимо сохранить правила:

sudo iptables-save > /etc/iptables/rules.v4

4. Просмотр всех правил iptables

sudo iptables -L

Перенаправление трафика с одного порта на другой

Для перенаправления трафика с одного порта на другой используется iptables:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Этот пример перенаправляет весь входящий трафик с порта 80 на порт 8080.

Проверка открытых портов

Чтобы проверить, какие порты открыты на сервере, можно использовать следующие команды:

ss -tuln
netstat -tuln

Проверка прослушиваемых портов

Прослушивание порта — это процесс, при котором определенный сервис или приложение на сервере ожидает входящих соединений на заданном порте. Когда приложение или сервис начинает работать, оно открывает один или несколько портов для прослушивания, чтобы принимать входящие запросы от клиентов. Например, веб-сервер может прослушивать порт 80 (HTTP) или 443 (HTTPS) для обработки запросов пользователей.

sudo lsof -nP -i | grep LISTEN

Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu

Определения VPN и прокси-сервера

Как VPN, так и прокси-серверы обеспечивают конфиденциальность за счет того, что позволяют различными способами скрывать IP-адрес. Однако используемые способы и набор дополнительных функций конфиденциальности значительно различаются.

Что такое прокси-сервер?

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

Таким образом прокси-серверы маскируют IP-адреса и позволяют пользователям обходить ограничения на контент и мониторинг. Например, пользователи могут просматривать контент с географическими ограничениями: подписчик Netflix из Великобритании, подключающийся к прокси-серверу в США, может получить доступ к контенту Netflix для США.

Что такое VPN?

VPN – это виртуальная частная сеть (Virtual Private Network). VPN создает зашифрованный туннель для передачи данных, защищает личность в интернете, скрывая IP-адрес, и позволяет безопасно использовать публичные точки доступа Wi-Fi. Более подробно VPN описан в этой статье «Лаборатории Касперского».

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

Введение

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и не только, раньше всех! Вокруг Крипты и Youtube👍

В этой статье мы расскажем, как установить и настроить прокси-сервер. Прокси-сервер (от англ. proxy — «представитель, уполномоченный») выступает в роли посредника в коммуникациях между вашим ПК/мобильным и интернетом.

Причин использовать его может быть множество, включая:

  • обход ограничений доступа к определенным веб-ресурсам установленным администратором локальной сети;
  • обход региональных ограничений доступа у определенных веб-ресурсов;
  • анонимный доступ к веб-ресурсам путем сокрытия реального IP-адреса.

Среди всего многообразия прокси-серверов остановим свой выбор на открытом бесплатном кроссплатформенном сервере 3proxy, опубликованном под BSD-подобной лицензией. Официальный сайт — http://3proxy.ru/.

Исходный код на GitHub — https://github.com/z3APA3A/3proxy

3proxy включает в себя:

  • HTTP прокси с поддержкой HTTPS и FTP.
  • SOCKSv4/SOCKSv4.5/SOCKSv5 прокси.
  • POP3 прокси.
  • SMTP прокси.
  • AIM/ICQ прокси.
  • MSN messenger / Live messenger прокси.
  • FTP прокси.
  • Кэширующий DNS прокси.
  • TCP и UDP портмапперы.

Также доступны дополнительные возможности, такие как:

  • Управление доступом.
  • Ограничение ширины потребляемого канала.
  • Ограничение трафика на день, неделю и месяц.
  • Перенаправление соединений.
  • Построение цепочек соединений.
  • Ротация лог-файлов.
  • Ведение журналов через ODBC и syslog.
  • Поддержка IPv6.

К недостаткам можно отнести:

  • Отсутствие поддержки кеширования веб-страниц.
  • Отсутствие в официальных репозиториях некоторых linux-дистрибутивов (включая Debian и Ubuntu), но в репозиториях Gentoo, RedHat, Alt Linux присутствует.

Технические требования

  • Операционная система Debian GNU/Linux (версии с 9 по 11) или Ubuntu (версии с 18.04 по 21.10) любой разрядности (32/64 бита).
  • Пользователь с привилегиями root (как вариант доступ через sudo).

Шаг 1. Подготавливаем инструментарий

В связи с тем что он отсутствует в официальных репозиториях Debian и Ubuntu, мы будем устанавливать его из исходников. Но перед этим установим все необходимое для дальнейшей работы.

    sudo apt-get update
    sudo apt-get install -y build-essential

Шаг 2. Скачиваем и распаковываем исходники

Последняя версия 0.9.3 (на момент написания руководства). Узнать последнюю версию можно на официальном сайте, при необходимости просто замените цифры на необходимые в следующих командах:

    cd ~
    wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz

    tar xzf 0.9.3.tar.gz

Шаг 3. Компилируем

    cd ~/3proxy-0.9.3

    sudo make -f Makefile.Linux

Шаг 4. Устанавливаем

Копируем получившийся бинарный файл:

    sudo mkdir /etc/3proxy


    cd ~/3proxy-0.9.3/bin
    sudo cp 3proxy /usr/bin/

Создадим отдельного системного пользователя proxy3, от имени которого и будет работать сервер:

    sudo adduser --system --no-create-home --disabled-login --group proxy3

Узнаем UID и GID пользователя командой:

    id proxy3

В ответ, например, получим:

    uid=109(proxy3) gid=115(proxy3) groups=115(proxy3)

Создаем файл настроек:

    sudo nano /etc/3proxy/3proxy.cfg

Вставляем в него следующий код:

    # Запускаем сервер от пользователя proxy3
# (возможно в вашей ОС uid и gid пользователя proxy3
# будут другими. Для их определения воспользуйтесь командой id proxy3)
setgid 115
setuid 109
#
# Пропишите правильные серверы имен посмотрев их
# на своем сервере в /etc/resolv.conf
nserver 188.93.16.19
nserver 188.93.17.19
#
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
#
# Равно как и таймауты
timeouts 1 5 30 60 180 1800 15 60
#
# Если несколько IP на одном сервере, указываем тот,
# через который будем ходить во внешний мир.
# Иначе эту строку игнорируем
#external <YOURSERVERIP>
# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокси слушает все адреса на сервере
#internal <YOURSERVERIP>
#
# Указываем на расположение файла с пользователями и паролями
users $/etc/3proxy/.proxyauth
#
# укажите режим запуска как deamon
daemon
#
# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
#
# Включаем авторизацию по логинам и паролям
auth cache strong
#
# Конфигурация http(s) proxy
# Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
# c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a

Комментарии начинаются со знака # и допустимы только с начала строки. Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152–65535.

Пример с другой конфигурацией

    nano ~/3proxy-0.9.3/cfg/3proxy.cfg.sample

    nano ~/3proxy-0.9.3/doc/ru/example1.txt

или же в одном из следующих руководств, на которые ссылается официальный сайт:

Вот пример конфигурации без ведения логов:

    setgid 115
setuid 109
nserver 8.8.8.8
nserver 77.88.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users $/etc/3proxy/.proxyauth
daemon
auth cache strong
proxy -n -p3128 -a

Создаем файл с пользователями и паролями:

    sudo nano /etc/3proxy/.proxyauth

Вставляем в него следующий код:

    ## addusers in this format:
#user:CL:password
##see for documentation: http://www.3proxy.ru/howtoe.asp#USERS
username:CL:strongpassword

Где логин username и пароль strongpassword следует изменить на свои. Каждый новый пользователь указывается с новой строки. Выставляем права доступа к файлам прокси-сервера:

    sudo chown proxy3:proxy3 -R /etc/3proxy

    sudo chown proxy3:proxy3 /usr/bin/3proxy
    sudo chmod 444 /etc/3proxy/3proxy.cfg

    sudo chmod 400 /etc/3proxy/.proxyauth

Создаем папку для ведения логов и назначаем права на нее:

    sudo mkdir /var/log/3proxy
    sudo chown proxy3:proxy3 /var/log/3proxy

В случае наличия IPv6 на сервере, рекомендуем запускать прокси со следующей строкой в /etc/3proxy/3proxy.cfg:

    proxy -46 -n -p3128 -a -i95.213.255.16 -e95.213.255.16 -e2002:5fd5:ff010::1

Для сервера с IPv4:95.213.255.16 и IPv6:2002:5fd5:ff010::1 у вас же они будут иные. В таком случае будет поддержка IPv6 на выходе с прокси, например, https://yandex.ru/internet отобразит оба адреса.

Шаг 5. Добавляем в автозагрузку и запускаем прокси-сервер

Создаем файл-инициализации для systemd:

    sudo nano/etc/systemd/system/3proxy.service

Вставляем в него следующий код:

    [Unit]
Description=3proxy Proxy Server
After=network.target


[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure

[Install]
WantedBy=multi-user.target

Еще один вариант скрипта инициализации:

    nano ~/3proxy-0.9.3/scripts/3proxy.service

Теперь нужно обновить конфигурацию systemd:

    sudo systemctl daemon-reload

Добавляем в автозагрузку:

    sudo systemctl enable 3proxy

Запускаем прокси-сервер:

    sudo systemctl start 3proxy

Если с первого раза сервис не запустился, проверьте наличие ошибок:

    systemctl status 3proxy.service

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Также мы увидим его в списке запущенных процессов в ответе на команду:

    ps -ela | grep "3proxy"

Шаг 6. Открываем порт

Открываем порт (3128/tcp) на сервере. Либо указываем свой, который указан в файле /etc/3proxy/3proxy.cfg.

При использовании Uncomplicated Firewall (UFW):

    sudo ufw allow 3128/tcp
    sudo ufw enable

При использовании iptables:

    sudo iptables -I INPUT -p tcp -m tcp --dport 3128 -j ACCEPT

Шаг 7. Настраиваем окружение

Множество программ (включая веб-браузеры) поддерживают работу через прокси по умолчанию. Интерфейс настроек у каждой свой.

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

Либо использование программы проксификатора.

Например такой как:

Для подключения к сети Google Chrome использует системные настройки прокси-сервера.

В случае Microsoft Windows это настройки можно также найти в Internet Explorer / MS Edge.

Настройки для браузера Mozilla Firefox, настройки для Opera и Safari.

Форма с предложением ввода логина и пароля (username:strongpassword) появится, после первой попытки открытия любой веб-страницы.

Затем любые сервисы по проверки IP-адреса, например, такие как:

сообщат IP-адрес вашего сервера вместо текущего.

Шаг 8. Удаляем временные файлы

    rm ~/0.9.3.tar.gz
    sudo rm -r ~/3proxy-0.9.3

Шаг 9. Удаляем 3Proxy (опционально)

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

    sudo systemctl stop 3proxy.service 
    sudo rm /etc/systemd/system/3proxy.service
    sudo rm -rf /etc/3proxy
    sudo rm -rf /var/log/3proxy
    sudo rm /usr/bin/3proxy
    sudo systemctl daemon-reload

Заключение

Мы рассмотрели установку и базовую настройку 3proxy. Безусловно у данного прокси-сервера есть еще множество настроек, которые мы не затронули, в том числе настройку SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени, но это тема уже для отдельного руководства.

Таким образом, после выполненных действий вы получаете свой собственный прокси-сервер, который более безопасен для вас, так как ваш трафик заведомо не будет перехвачен и проанализирован третьими лицами, от чего вы не застрахованы при использовании сторонних решений. Хотя с этой точки зрения более эффективна настройка VPN-туннеля с шифрованием.

3proxy может выступать в роли высоко анонимного прокси-сервера. Признаком использования подобного может быть лишь принадлежность выходного IP-адреса сервера к пулу адресов, закрепленных за хостинговой компанией при просмотре WHOIS-данных и PTR-записи. В целом он хорош тем, что является маленьким и простым, но в то же время функциональным.

Установка и настройка мониторинга/алертинга Prometheus+Grafana

Материал от G7


В данной статье разберем как установить и настроить связку для мониторинга: Node Exporter - Prometheus - Grafana, загрузим красивый и удобный дашборд и добавим на него все наши сервера

Введение

Что такое Prometheus, Grafana

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

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

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

Что будем делать

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

Последовательность действий

1) Установить на сервер с нодой, программное обеспечение node-exporter. Этот инструмент предназначен для сбора и передачи информации о работе аппаратных ресурсов.

2) Арендовать минимальный сервер (1 CPU, 1 RAM, 10 GB), который будет выполнять функции обработчика узлов. На этом сервере следует установить Prometheus для сбора данных от node-exporter, а также Grafana для их наглядного отображения.(так же можно подселить эту связку к Uptime Kuma, порты у них не конфликтуют)

Установка Node Exporter на отслеживаемый сервер

Для удобство пользователей был сделан автоматический скрипт, который установит на ваш сервер(отслеживаемый) node_exporter, что позволит вам его установить за одну команду

. <(wget -qO- https://raw.githubusercontent.com/g7AzaZLO/NodeExporter-autoinstaller/main/NodeExporter-auto-install.sh)

После выполнения команды мы должны увидеть следующее

Далее посмотрим логи и убедимся что все хорошо

 sudo journalctl -u exporterd -f

Перейдем по адресу http://<IP_ADDRESS>:9100/metrics , где <IP_ADDRESS> - ip нашего сервера, на который мы только что поставили экспортер

И увидим все метрики, которые экспортируются

Установка сервера-обработчика

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

Заходим на наш второй сервер(нода-обработчик)

Устанавливаем Prometheus

 wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz && \tar xvf prometheus-2.28.1.linux-amd64.tar.gz && \rm prometheus-2.28.1.linux-amd64.tar.gz && \mv prometheus-2.28.1.linux-amd64 prometheus

Открываем конфиг нашего Prometheus для настройки

 nano $HOME/prometheus/prometheus.yml

В место красной стрелки вписываем ip на который мы устанавливали node_exporter

Для сохранения и выхода из nano(редактора текста) последовательно нажимаем(проверьте что стоит eng раскладка)

ctrl+x

y

enter

Далее выдаем права на исполнение нашего файла

 chmod +x $HOME/prometheus/prometheus

Создаем сервисный файл

sudo tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF
[Unit]
Description=node_exporter
After=network-online.target
[Service]
User=$USER
ExecStart=$HOME/prometheus/prometheus --config.file="$HOME/prometheus/prometheus.yml" 
Restart=always 
RestartSec=3 
LimitNOFILE=65535 
[Install] 
WantedBy=multi-user.target 
EOF

После чего запускаем сервис

 sudo systemctl daemon-reload && \sudo systemctl enable prometheusd && \sudo systemctl restart prometheusd

Проверяем логи

 sudo journalctl -u prometheusd -f

Переходим в браузере по адресу: http://<IP_ADDRESS>:9090/targets, где <IP_ADDRESS> - IP сервера, на который мы только что установили prometheus.

Здесь мы видим сервер на котором стоит обработчик(localhost) и сервер на который мы ставили экспортер

Установка и настройка Grafana

Установка

Теперь на этот же сервер с Prometheus мы устанавливаем Grafana

 sudo apt-get install -y adduser libfontconfig1 && \ wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb && \ sudo dpkg -i grafana_8.0.6_amd64.deb

Запускаем службу с графаной

sudo systemctl daemon-reload && \ sudo systemctl enable grafana-server && \ sudo systemctl restart grafana-server

Смотрим логи

 sudo journalctl -u grafana-server -f

Переходим в браузере на своём домашнем устройстве по адресу: http://<IP_ADDRESS>:3000, где <IP_ADDRESS> - IP сервера, на который мы установили prometheus и grafana.

Логин, пароль: admin admin

Далее задаем свой пароль и попадаем в дашборд

Добавление Data Source

Нажимаем на кнопку Data Sources

Выбираем Prometheus

В графе URL вводим http://<IP_ADDRESS>:9090 , где <IP_ADDRESS> - ip сервера на котором стоит прометеус и графана. После чего нажимаем Save & test

Далее переходим в импорт дашбордов

Переходим на гитхаб и качаем файл с дашбордом

После чего импортируем его

На выходе получаем следующее

Нажимаем кнопку импорт и попадем в наш дашборд

После того как мы убедились что все работает, нам необходимо заполнить дашборд нашими нодами

Заполнение нодами

Устанавливаем на все сервера, которые хотим отслеживать node_exporter, командой из первого раздела.

После того как установили все node_exporter переходим на сервер с prometheus+grafana

На сервере с прометеусом и графаной переходим в конфиг прометеуса

 nano $HOME/prometheus/prometheus.yml

И переделываем его под множество нод. Строго соблюдаем пробелы

Нас интересует только раздел static_configs.

targets - это сервер на которую мы устанавливали ноду-экспортёр и откуда желаем собирать метрики.

label - название этого сервера для отображения в графане.

targets: [<IP>:9100] - меняем только IP.
label: "<label>" - меняем на своё название сервера.

Строго соблюдаем синтаксис: каждый отступ - 2 пробела.

Не используйте в названиях пробелы

 scrape_configs:
   - job_name: "node_exporter"
     static_configs:
     - targets: [<IP-1>:9100] 
       labels: 
         label: "<label_1>" 
     - targets: [<IP-2>:9100] 
       labels: 
         label: "<label_2>" 
     - targets: [<IP-3>:9100] 
         labels: 
           label: "<label_3>"
           
И так до бесконечности

Далее для сохранения нажимаем последовательно

ctrl+x

y

enter

После того как прописали все наши ноды сохраняем и перезапускаем

 sudo systemctl daemon-reload && \sudo systemctl enable grafana-server && \sudo systemctl restart grafana-server && \sudo systemctl restart prometheusd

Получаем красивый и аккуратный дашборд с всеми нашими серверами

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

Установка Grafana и настройка её для работы с Proxmox

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и не только, раньше всех! Вокруг Крипты и Youtube👍

Благодарим CyanRed за подготовленный материал

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


Часть 1. Подготовка

Для начала нам надо графану где-то запускать. Да и не только графану, но об этом позже. Поэтому мы создадим LXC контейнер. Нет, не виртуалку с линуксом, ибо жрет много и смысла в данном случае нет, a LXC контейнер, который ест в разы меньше.

Заходим в хранилище "local" (не local-lvm) в веб интерфейсе proxmox (если у вас его нет, то посмотрите, где у вас хранятся iso образы и резервные копии, вот туда вам надо). Там будет вкладка "CT Templates"

нужная нам вкладка

После того как мы сюда зашли, нажимаем кнопку "Templates", у меня же она "Шаблоны", ибо у меня прокс на русском.

ого, там есть арчик

Перед нами открывается выбор шаблонов. Я выбираю дебиан 11, что и вам советую.

Выбираем образ Debian 11 и нажимаем "загрузка"

блин у меня чай кончился

После того как мы скачали Debian, он отобразится у нас во вкладке "CT Templates"

После чего вверху нажимаем кнопку "создать CT"

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

В следующей вкладке выбираем шаблон

Далее можно не менять размер диска, ибо 8 гигабайт нам в принципе хватит

Настройки памяти и сети можно так же не трогать, ибо 1 ядра и 512МБ памяти нам хватит.

В вкладке "сеть" для IPv4 и IPv6 выбираем DHCP и нужный сетевой мост.

Дальше просто протыкиваем "далее" и всё.

После чего переходим в новосозданный контейнер и выбираем "сеть"

Тыкаем два раза на нашу "сетевую карту", и снимаем галочку "брандмауэр" (firewall)

Контейнер создан, нажимаем на него, переходим во вкладку "консоль", нажимаем "включить", ждем пока загрузится и логинимся с паролем, который мы указали в самом начале создания контейнера, и вуаля:

Вводим команду "ip a", чтобы не гадать потом на кофейной гуще почему же не работает apt update.

Как видим, ip адрес успешно получен, а значит и интернет у нас есть.

Теперь надо присвоить статику. Присвоение статики зависит от того роутера, который вы используете, поэтому тут я подробно показывать не буду, т.к у меня OpenWrt

Находим наш контейнер, нажимаем "set static", подтверждаем и статика присвоена.

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

Вводим следующие команды:

apt update

apt install -y gnupg2 curl wget

wget -qO- https://repos.influxdata.com/influxdb.key | apt-key add -

source /etc/os-release

echo "deb https://repos.influxdata.com/debian bullseye stable" | tee /etc/apt/sources.list.d/influxdb.list

apt install -y adduser libfontconfig1

wget https://dl.grafana.com/oss/release/grafana_9.4.7_amd64.deb

dpkg -i grafana_9.4.7_amd64.deb

apt update

apt install -y influxdb

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl unmask influxdb.service
systemctl enable influxdb
systemctl start influxdb

Проверить, запущены ли службы influxdb и grafana можно, введя
systemctl status [название того, что вы хотите провеить]

пример работающей графаны

influxd - это influxdb
grafana-server - графана

Смотрим, работает ли графана, зайдя через браузер:

Чтобы зайти в графану, надо ввести

[ip адрес контейнера метрики*]:3000

В моем случае это 192.168.1.149:3000

*ip адрес контейнера метрики можно получить, введя "ip a" на сервере, где хостится графана


Часть 2. Я твою базу данных вертел.

Мы всё установили и запустили, теперь надо настроить базу данных.

Тут всё предельно просто, надо просто ввести это:

influx

В открывшейся командной строке influx вводим это:

CREATE DATABASE proxmox

quit

База данных создана


Часть 3. Скручиваем медь к алюминьке.

Вводим следующее:

nano /etc/influxdb/influxdb.conf

и перед нами открывается это:

Нажимаем Ctrl+W и вводим [[udp]], и тыкаем Enter, и находим вот это:

После чего нам надо раскомментировать строчки:

  • Enabled
  • bind-address
  • database
  • batch-size
  • batch-timeout

Настройте их как на фото

После чего жмите Ctrl+O, Enter и Ctrl+X

И перезапускаем influx

systemctl restart influxdb

Переходим в proxmox, выбираем вкладку "датацентр" (ну или же datacenter, если у вас английский) и выбираем вкладку "metric server"

Вверху нажимаем "добавить"->"InfluxDB"

В открывшемся окне вводим имя сервера (любое абсолютно, главное на латинице, а то пошлёт громко, далеко и надолго), ip адрес и нажимаем "создать"

Снова переходим в графану. Если не вошли и не сменили пароль, то вам надо будет это сделать.

Стандартные логин и пароль в графане - admin, прямо как в роутерах TP-Link

И попадаем мы сюда:

Нам надо перейти в "Configuration"->"Data sources"

После чего нажимаем на большую синенькую кнопочку "add data source", и выбираем influxDB

В поле "URL" вводим "http://localhost:8086"

Пролистываем ниже, и в "database" вводим "proxmox" (ну или то название, которое вы присвоили БД прокса)

И после всех проделанных действий нажимаем "save&test", и должна вылезти эта плашка:

Это значит, что база данных работает и чего то там 7 найдено.

После чего переходим в "Dashboards"->"Browse"

Выбираем "import"

И импортируем этот дашборд (хотя при желании вы можете найти другой или, если готовы разобраться (или таки разбираетесь), можете сделать свой, но мы тут ленивые и хотим попроще)

10048

Если хотим, то меняем имя в следующем окне

Указываем источник данных:

И нажимаем "import"

Всё! Grafana работает и мы видим красивые графики и шкалы, и можем выпендриваться перед людьми в гостях, выведя это на телевизор.

Знакомство с нодами

Спасибо за материал InCrypTop

Что такое нода?

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

Мы не зарабатываем на Вас. Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

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

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

Как долго будет актуальна тема нод и тестнетов?

Данное направление только начинает развиваться. Пока будут выходить проекты на протоколе Proof Of Stake, проектам нужны будут тестовые сети, люди поднимающие ноды и валидирующие эти тестовые сети.

Проекты на протоколе Proof Of Stake только начинают развиваться.

И так поехали...

Для того что бы начинать ставить ноды, необходимо для этого подготовиться.

Этот манул написал для "чайников" которые только начинают познавать изучать это крипто направление.

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

Компаний где это можно сделать масса, но исходя из своего опыта, самым хорошим вариантом это Hetzner

Цены тут демократичные, проблем с регистрацией и прохождения KYC нет.

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

Опять таки, лучшая по моему мнению консоль это MobaXterm

Как купить сервер на Hetzner

1.В правом верхнем углу нажимаем войти и выбираем Cloud

2. Далее нажимаем REGISTER NOW

3.Заполняем данные и нажимаем CONTINUE

4. Далее, на почту придёт письмо с ссылкой подтверждения.

5. Заполняем и нажимаем продолжить

6. Указываем свои контакты нажимаем продолжить.

7. На данном этапе у вам происходит (КУС), проще всего привязать карту, с ее спишется 1€ и сразу же вернется.

8. Осталось выбрать сервер который нужен для этого:

Подписываем как вам надо папку где будут находится ваши сервера

Заходим в нее и нажимаем ADD SERVER

И уже исходя из требований проекта подбираем себе сервер.

После того как создали сервер на почту придут данные для доступа
Еще, оплата - на почту будет приходить счет-фактура раз в месяц (т.е. первая оплата будет через месяц пользования серверов)

Гайд по MobaXterm: доступ к удалённым серверам

В этом гайде я подробно рассмотрю программу «MobaXterm»: где её скачать, как установить и как настроить для комфортной работы с удалёнными серверами.

Где скачать?

Выдумывать ничего не будем. Программа условно бесплатная. Для наших потребностей с головой хватит и домашней версии.

Скачиваем последнюю версию программы с официального сайта: https://mobaxterm.mobatek.net/download.html

Устанавливаем, как обычную программу: «Next», «Next», «Next», «Install».

Настройка программы

Запускаем и переходим в «Settings» > «Configuration» > «Display»:

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

Во вкладке «SSH» нажимаем галочку напротив «Remote-monitoring». Эта функция позволяет отслеживать нагрузку на сервер в режиме реального времени:

Обзор функционала

В левой части экрана есть 2 прекрасные вкладки — «Sessions»и «Macros»:

Удаляем дефолтные сесии, они нам не понадобятся:

Создание сессии

Для примера возьму ивент от «Swarm Bee» и я хочу установить ноду для участия в этом ивенте.

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

Далее правой кнопкой мыши кликаем по только что созданной папке, чтобы добавить в неё первую сессию:

Выбираем тип сессии. Для меня это «SSH»:

Вводим «IP» нашего сервера в первую форму, редактируем имя сессии (чтобы в будущем быстро найти нужную), по желанию редактируем иконку и добавляем ссылку на сессию на рабочий стол:

Когда всё настроили, нажимаем «OK». Откроется наш терминал:

Вводим логин, обычно «root» и пароль. Пароль лучше скопировать из информации о сервере и просто вставить в терминал.

P.S. Чтобы вставить какой-либо текст в терминал, нужно нажать колёсико мыши или shift+insert. Команда «Ctrl + V» в «MobaXterm» не является сочетанием клавиш для вставки текста. По умолчанию, за эту функцию отвечает колёсико мыши.
P.S.S. Пароль не отображается при вводе в терминал. Вставили с помощью щелчка колёсиком, нажали «Enter». Всё, вы залогинились.

В левой части экрана откроется файловый менеджер, аналог проводника в «Windows». В этом блоке можно удобно загружать файлы на сервер, скачивать целые папки с сервера на свою локальную машину, создавать файлы и директории — в общем, всё, что вы можете делать на обычной машине, вы можете теперь делать и на сервере, буквально в пару кликов.

P.S.S.S. При долгом отсутствии взаимодействия с окном терминала, будет обрываться сессия. Чтобы её рестартануть, нажимаем клавишу «R».