Перейти к содержанию

Лидеры

  1. Deniom

    Deniom

    Эксперты


    • Баллы

      28

    • Постов

      17


  2. CO_PY

    CO_PY

    Модераторы


    • Баллы

      21

    • Постов

      46


  3. ProBot

    ProBot

    Авторы


    • Баллы

      19

    • Постов

      57


  4. Кибер Лис

    Кибер Лис

    Модераторы


    • Баллы

      12

    • Постов

      25


Популярный контент

Показан контент с высокой репутацией за 03.02.2023 во всех областях

  1. Это небольшая заметка о том как буквально за 10 минут организовать пересылку уведомлений из системы Proxmox VE в телеграмм. Небольшое вступление В один не очень приятный момент я столкнулся с тем что резервное копирование proxmox из за ошибки не выполнялось несколько дней, а так как эксперименты над виртуалками с моей стороны очень частые для меня это очень плохой звоночек. В один не очень хороший момент я мог просто не найти бэкап на который рассчитывал. Для предотвращения подобной ситуации в будущем решил настроить уведомления в proxmox. Сама система proxmox поддерживает три типа уведомлений: smtp, gotify и встроенную отправку почты linux. По умолчанию настроен вариант отправки почты linux, но из коробки это решение работать не будет и все уведомления оседают где то в логах системы. Рассмотрим два других варианта более подробно: Gotify - интересная легкая система которая может удобно собирать по http все уведомления в одном месте. И... на этом все... как по мне в ней не хватает как минимум адекватной возможности пересылки в другие системы. Smtp - это классическая почта, фактически вы даете данные авторизации для отправки почты от вашего имени (или от имени специального почтового ящика). Вариант использовать почту был уже более приемлемый но хотелось все таки получать уведомления в телеграмм (у меня уже были ранее настроены уведомления для watchtower, sonar, radar и т.д.). На просторах интернета есть несколько ботов которые подключаются к proxmox api Для управления системой, но по большей степени это именно управление и уведомления они не получают, ну и для задачи это было избыточно. В сухом остатке имеем два пути решения задачи Gotify или Smtp, причем приложение Gotify работает по принципу что именно приложение идет за сообщением а не сервер отправляет на телефон, это серьезное ограничение которое требует внешний доступ к серверу Gotify. Простое и элегантное решение UPD 03.03.25: В proxmox появилась возможность отправлять уведомления с использованием вебхуков теперь настройка еще проще На просторах интернета и обсуждений проблемы в telegram каналах было найдено простое и элегантное решение, smtp_to_telegram. Это небольшое приложение поднимает smtp сервер для приема писем без авторизации и пересылает их в telegram бот. Данный метод можно использовать не только для proxmox но и для любого сервиса поддерживающего smtp отправку уведомлений. Подробнее о самом решении можете посмотреть на странице GitHub: https://github.com/KostyaEsmukov/smtp_to_telegram Фактически нам необходимо создать телеграмм бота (или использовать уже имеющийся) который будет только отправлять сообщения, но не будет читать. Это позволяет без проблем использовать одного бота для нескольких уведомлений как например для watchtower (автоматического обновления докер образов). На просторах интернета множество инструкций по созданию телеграмм ботов подробно расписывать не буду. Коротко идем к служебному боту https://t.me/BotFather и создаем нового бота через меню, нам надо от него токен API. Не забываем написать нашему боту что нибудь для запуска. Так же с помощью https://t.me/myidbot необходимо узнать наш id для отправки сообщений, все опять таки крайне просто пишем боту /getid и получаем циферки которые нам нужны. Само решение будем запускать как я люблю в докере, так как это банально проще и легко воспроизводится: version: '3' services: readeck: container_name: SmtpToTelegram image: kostyaesmukov/smtp_to_telegram:latest restart: unless-stopped volumes: - /DATA/AppData/readeck:/readeck environment: - ST_TELEGRAM_CHAT_IDS=779979797 - ST_TELEGRAM_BOT_TOKEN=7127345363:AAEarsdfsdtnYsZZasdasdx0OfFcDc1NLU - ST_TELEGRAM_MESSAGE_TEMPLATE={subject}\n\n{body}\n\n{attachments_details} ports: - 2525:2525 Сам автор проекта не очень коммуникабельный и не собирает дорабатывать как либо решение, или банально делать образ докера под arm64 но есть альтернативный вариант под эту архитектуру. Для arm64 используйте образ image: cobra1978/smtp_to_telegram После запуска докер контейнера на нашем сервере на порту 2525 поднимется smtp сервер пересылки без авторизации. Переходим в настройку proxmox, нас интересует раздел notification у центра обработки данных. Создадим новую цель уведомлений smtp с данными для нашего сервиса пересылки (сервер это ip нашего сервера на котором запущен докер контейнер пересылки): Фактически отправитель и получатель могут быть вообще любыми адресами у сервиса нет контроля релевантности адресов кроме общего шаблона <name>@domein Фактически все у нас есть возможность отправлять уведомления proxmox в телеграмм, нажимаем test и видимо сообщение от бота. Если не сработало проверьте что у пользователя заполнен почтовый адрес Настройка уведомлений на почту Кроме бота можно настроить еще и дополнительно уведомления на почту, я для таких целей использую свой же почтовый ящик gmail. Но необходимо выполнить несколько предварительных настроек. Установить у пользователя proxmox почту. Для этого переходим в управление пользователями proxmox, и заполняем для пользователя от имени которого будем отправлять уведомления электронный адрес. Следующий пункт это получение пароля приложения для нашей почты которая будет выполнять отправку. Каждый почтовый сервис имеет свои правила и настройки, но большая часть современных требует создания пароля приложения с ограниченными правами. Для гугл можно посмотреть тут: https://support.google.com/accounts/answer/185833?hl=ru После получения пароля возвращаемся в раздел уведомлений proxmox и создаем новую цель для рассылки smtp, для своего почтового сервиса ищите настройки в поиске по словам "smtp <название вашего сервиса>" Обратите внимание что получатель и отправитель (настраивается в пользователе) почты могут совпадать, это будет письмо самому себе. Нажимаем тест и проверяем почту. Отправителя по умолчанию можно выключить, но удалить не получиться. Уведомления о бэкапах proxmox В proxmox существует достаточно гибкая система условий для уведомлений, подробно о ней можно почитать тут https://pve.proxmox.com/wiki/Notifications Я приведу небольшой пример который я использую для получения уведомлений о бэкапах как успешных так и ошибочных. Переходим в раздел уведомлений proxmox и создаем новый Notification Matchers Данные настройки будут отправлять на телеграмм и почту сообщение о событиях бэкапа в любое время. Для дополнительных ограничений по времени или других типов событий рекомендую ознакомится с документацией. Пример уведомления о бэкапах в телеграмм, к сообщению дополнительно прикладывается лог. Телеграмм бот дополнительно прикладывает его в виде файла так как не всегда удобно читать логи в сообщении телеграмм. И оно же на почте Спасибо за внимание, удачной настройки и меньше тревожных ведомлений.
    3 балла
  2. DWG - UI Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Информация носит ознакомительный характер. Пожалуйста не нарушайте действующего законодательства вашей страны. Сборка DWG-UI включает в себя: Веб интерфейс для управления клиентами Wireguard - WG Easy. Контейнер c Unbound предоставляет собственный DNS сервер с кэшированием DNS и дополнительными параметрами конфиденциальности. Контейнер c AdGuard Home (более современный аналог чем PiHole) используется для блокировки рекламы, аналитических трекеров и редактирования списка используемых DNS серверов к которым обращается Unbound. Имеет очень полезную функцию параллельных запросов, DNS которой нет в PiHole. Контейнер с WireGuard используется непосредственно для запуска серверной части Wireguard VPN Основные репозитории с обновлениями на GitHub: GitHub - DigneZzZ/dwg: dwg-universal GitHub - DigneZzZ/dwg-ui: Combination Wireguard + Adguard Home + Unbound (DoH include) Требования: Чистый пустой сервер. Первым делом нам нужно арендовать хороший и быстрый сервер. Берем какой вам подходит лучше по скорости и получаем бонус 15% (если пополнить в первые 24часа регистрации) на пополнение баланса: https://aeza.net/?ref=377137 Замерить скорости можно здесь: Aéza (aeza.net) Поддерживаемые операционные системы (где проверена работоспособность): Ubuntu 20.04, 22.04, 23.10, Debian 11, 12, Centos 8,9 Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях. Команда установки: apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-ui/main/setup.sh && chmod +x setup.sh && ./setup.sh Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wg-easy - интерактивный режим введения пароля для веб AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. Напомнит установить ufw-docker и сам закроет доступ извне! ВНИМАНИЕ! Запускать только после того как создадите для себя клиента в WireGUARD!!! Адреса веб-интерфейсов: WG-Easy web-ui: yo.ur.ip.xx:51821 #вместо yo.ur.ip.xx введите IP своего сервера, пароль введите тот что присвоили при установке Доступ в web-ui из сети WG: http://10.2.0.3:51821 AdGuard HOME: http://10.2.0.100/ Логин: admin Пароль: admin # Скрипт для смены пароля AGH bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/change.sh)
    3 балла
  3. Вступление или зачем нам вообще это надо? В наше интересное время все чаше приходиться использовать VPN, но тут начинается другая проблема часть местных интернет ресурсов может быть недоступна через сервер VPN. И начинается постоянное передергивание включения выключения VPN соединения. Существует много вариантов концепции разделения трафика и обхода региональных блокировок я решил рассмотреть вариант реализации с использованием wireguard. Да это скорее всего (даже наверняка) не самый лучший инструмент для организации разделения трафика но во первых уже был работающий сервер wg во вторых заинтересовала сама идея реализации. Практически все материалы по разделению трафика были заимствованы и доработаны из статьи с хабр Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN я не претендую на авторство метода, скриптов или любых материалов из оригинальной статьи. А так же настоятельно рекомендую ознакомиться с оригиналом статьи для лучшего понимания идеи. Цель данной публикации познакомить с вариантом разделения трафика, предоставить сжатую инструкцию по настройке. Так же в отличии от оригинальной статьи настройка выполнялась с установкой веб интерфейса в виде wg-easy так как ручная генерация новых клиентов описанная автором мне кажется мягко говоря неудобной и не оправданной. Для реализации надо: 1. Удаленный сервер с настроенным wg сервером 2. Локальная машина Linux (желательно виртуальная отдельно от других приложений) для работы достаточно 256 мб ОЗУ но зависит от количества клиентов и объема трафика. Подготовка сервера Выполним первоначальную настройку сервера для установки. Основная настройка будет выполнятся с использованием скрипта, но для создания клиентских подключений используется wg-easy установленным с использованием docker-compose. Обновляем репозитории и пакеты: apt update -y && apt upgrade -y Устанавливаем Docker: apt install curl && curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh Запускаем и включаем службу Docker systemctl start docker && systemctl enable docker Устанавливаем Docker Compose: curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose Так же устанавливает пакеты необходимые для работы wg и скрипта настройки маршрутов. apt install -y wireguard iptables ipcalc qrencode curl jq traceroute net-tools netscript Настройка соединения с внешним сервером Наш внутренний сервер подключается как клиент к внешнему серверу с настроенным wireguard. Для этого на внешнем сервере разворачиваем серверную часть wg (рекомендую использовать скрипты dwg) или заходим на ранее созданный и генерируем нового клиента. Нам необходимо получить файл конфигурации для подключения клиента вида: [Interface] PrivateKey = <Seckret> Address = 10.10.10.14/24 DNS = 10.2.0.100 MTU = 1280 [Peer] PublicKey = <Seckret> PresharedKey = <Seckret> AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25 Endpoint = <Seckret>:51820 Данные этого файла конфигурации необходимо в неизменном виде разместить в wg-external.conf cd /etc/wireguard nano wg-external.conf Запускаем туннель до внешнего сервера wg-quick up wg-external Для проверки работы туннеля команда wg На текущий момент мы получили такую схему подключения Теперь нам надо обеспечить возможность конечным пользователям ходить в интернет через наш внутренний сервер. Настройка клиентской части внутреннего сервера Для настройки клиентской части был выбран WG-EASY но можно использовать любой вариант настройки wg от ручного как предлагает автор оригинальной статьи так и различные графические интерфейсы. Создадим каталог с docker-compose файлом для запуска wg-easy mkdir wg-easy && cd wg-easy nano docker-compose.yml Вставляем в файл следующее содержимое version: "3" services: wg-easy: environment: - WG_HOST=192.168.0.132 - PASSWORD=MySecretPassword - WG_PORT=51820 - WG_DEFAULT_ADDRESS=10.10.9.x - WG_DEFAULT_DNS=192.168.0.1 - WG_ALLOWED_IPS=0.0.0.0/0, ::/0 - WG_MTU=1280 image: ditek/wg-easy container_name: wg-easy volumes: - /wg-easy:/etc/wireguard ports: - "51820:51820/udp" - "51821:51821/tcp" restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 dns: - 192.168.0.1 Для корректной работы необходимо скорректировать некоторые параметры с учетом вашей сети. В параметр WG_HOST указываем IP адрес в вашей сети по которому можно будет обратиться к серверу WG. Сервер разделения трафика должен иметь фиксированный IP адрес. В параметр PASSWORD указываем пароль от веб интерфейса. Параметр WG_DEFAULT_ADDRESS можно оставить без изменений, но если планируете использовать на одном устройстве несколько подключений WG в активном состоянии одновременно необходимо что бы сети не пересекались (актуально для роутеров kenetik). Для этого достаточно изменить на 10.10.8.x или любую другую не используемую подсеть. Параметр WG_DEFAULT_DNS если мы используем только внутри локальной сети то указываем наш роутер или ip на котором установлен локальный DNS. Так же указываем его в секции dns. Запускаем сборку и установку контейнера docker-compose up -d Выходим в корневой каталог cd Проверяем работу контейнера docker ps Теперь нам доступно создание клиентов на локальном сервере через веб интерфейс по адресу http://IP_server:51821 Заходим с паролем указанным в докер файле и создаем клиента. Подключаемся к локальному серверу с любого устройства и проверяем работу сети. Проверяем IP адрес и видим наш адрес удаленного сервера. Теперь схема подключения выглядит так: Фактически мы сделали туннель до внешнего сервера через промежуточную точку, осталось сделать разделение трафика на промежуточном сервере. Настройка скрипта разделения Идея как и сам скрипт позаимствован из оригинальной статьи автора (рекомендую ознакомится для более точного понимания), Я же перескажу основную идею скрипта. Мы хотим что бы наш локальный интернет не ходил на удаленный сервер а выходил через обычный интернет. Создадим скрипт в отдельной директории mkdir exclude_routes nano update_exclude_routes.sh И вставляем сюда скрипт #!/bin/bash #To crontab (export EDITOR=nano; crontab -e) #@reboot sleep 30 && bash /root/update_exclude_routes.sh > /root/update_routes_log.txt 2>&1 #0 3 * * mon bash /root/update_exclude_routes.sh > /root/update_routes_log.txt 2>&1 function ProgressBar { let _progress=(${1}*100/${2}*100)/100 let _done=(${_progress}*4)/10 let _left=40-$_done _fill=$(printf "%${_done}s") _empty=$(printf "%${_left}s") printf "\rAdd routes to route table (${1}/${2}): [${_fill// /#}${_empty// /-}] ${_progress}%%" } #Variables file_raw="russian_subnets_list_raw.txt" file_user="subnets_user_list.txt" file_user_hostnames="hosts_user_list.txt" file_for_calc="russian_subnets_list_raw_for_calc.txt" file_processed="russian_subnets_list_processed.txt" gateway_for_internal_ip=`ip route | awk '/default/ {print $3; exit}'` interface=` ip link show | awk -F ': ' '/state UP/ && !/docker/ && !/veth/ {print $2}' | head -n 1 | sed 's/@.*//' ` #interface="eth0" #Get addresses RU segment echo "Download RU subnets..." curl --progress-bar "https://stat.ripe.net/data/country-resource-list/data.json?resource=ru" | jq -r ".data.resources.ipv4[]" > $file_raw echo "Deaggregate subnets..." cat $file_raw |grep "-" > $file_for_calc cat $file_raw |grep -v "-" > $file_processed for line in $(cat $file_for_calc); do ipcalc $line |grep -v "deaggregate" >> $file_processed; done if [ -e $file_user ] then echo "Add user subnets..." cat $file_user |grep -v "#" >> $file_processed fi if [ -e $file_user_hostnames ] then echo "Add user hostnames..." for line in $(cat $file_user_hostnames); do nslookup line |grep "Address" |grep -v "#" |awk '{print $2"/32"}' >> $file_processed; done fi #Flush route table echo "Flush route table (down interface $interface)..." ifdown $interface > /dev/null 2>&1 echo "Up interface $interface..." ifup $interface > /dev/null 2>&1 #Add route routes_count_in_file=`wc -l $file_processed` routes_count_current=0 for line in $(cat $file_processed); do ip route add $line via $gateway_for_internal_ip dev $interface; let "routes_count_current+=1" ; ProgressBar ${routes_count_current} ${routes_count_in_file}; done echo "" echo "Remove temp files..." rm $file_raw $file_processed $file_json $file_for_calc routes_count=`ip r | wc -l` echo "Routes in routing table: $routes_count" Сохраняем и проверяем работу: bash update_exclude_routes.sh Данный скрипт можно использовать не только для разделения на Ru и не RU сегмент интернета. Можно использовать любые списки сетей, фактически скрипт делает автоматическое добавление маршрутов. На данном этапе разделение по подсетям уже готово, все ip адреса которые относятся к RU сегменту будут идти через основной интернет. Дополнительно мы можем положить в данную папку файлы со списком сайтов и подстей которые мы хотим тоже пустить по короткому маршруту через основной интеренет. subnets_user_list.txt – для подсетей hosts_user_list.txt – для сайтов, адреса определяются через nslookup Отдельно хочу обратить внимание на параметр interface он должен указывать на ваш основной интерфейс по которому сервер подключен к интернету. Скрипт должен автоматически определить данный интерфейс, но если вы столкнулись с ошибкой вида «Cannot find device "eth0@if27"» при запуске необходимо скорректировать скрипт и вписать руками конкретный интерфейс. Для этого нам надо определить основной интерфейс подключения. Это можно сделать командой ifconfig Нас интересует имя того интерфейса который получил адрес в нашей локальной сети. Корректируем в файле скрипта параметр: interface="eth0" И запускаем скрипт bash update_exclude_routes.sh Фактически мы получили нашу целевую схему: Нам осталось только настроить автоматический запуск при перезагрузке и периодическое обновление таблицы маршрутов. Добавим авто запуск wg туннеля до удаленного сервера systemctl enable wg-quick@wg-external.service И добавим запуск скрипта при перезапуске в крон export EDITOR=nano; crontab -e Добавляем в конец следующие строчки @reboot sleep 30 && bash exclude_routes/update_exclude_routes.sh > exclude_routes/update_routes_log.txt 2>&1 0 3 * * mon bash exclude_routes/update_exclude_routes.sh > exclude_routes/update_routes_log.txt 2>&1 Перезапускаем сервер и проверяем. Для проверки наличия маршрутов можно воспользоваться командой: ip r | wc -l Команда возвращает количество прописанных маршрутов, по моим наблюдениям количество маршрутов должно быть более 10000 при корректной работе скрипта. Подключаем наших конечных пользователей (рекомендую напрямую роутер) и пользуемся. Заключение Скрипт не совершенен и в некоторых ситуациях выпадает с ошибками по типу блокировки записей маршрутов и т.д. Я не являюсь автором данного скрипта, моя задача была применить схему и показать другим как ее можно использовать. На текущий момент на моей системе происходит обкатка работы такой схемы разделения. Буду благодарен за идеи как можно доработать скрипт или другие варианты. Возможно кто то предложит телеграмм бота для управления скриптом или еще какие то идеи по улучшению. P.S. В оригинальной статье разобран так же разобран кейс добавления конкретных маршрутов на удаленный сервер которые мы должны были направить на обычный доступ в интернет. Я разбирал работу этой части скрипта но она полностью еще не адаптирована для использования с WG-EASY, по этому возможно позднее дополню публикацию.
    3 балла
  4. Fastpanel - невероятно быстрая, простая и надежная панель управления сайтами (рекомендуем) Сайт разработчика: https://fastpanel.direct/ Описание установки: https://fastpanel.direct/wiki/en/how-to-install-fastpanel Демоверсия: https://fastpanel.direct/demo Установка: После установки одной из поддерживаемых ОС необходимо выполнить следующие действия: 1. Подключиться к серверу по SSH с помощью root-пароля: ssh root@your.server 2. Убедитесь, что на сервере установлен wget. Эта утилита нужна для запуска скрипта установки панели. Если wget не установлен в ОС, выполните следующие команды, чтобы установить его: Debian / Ubuntu: apt-get update; apt-get install wget CentOS / AlmaLinux / Rocky Linux: yum makecache; yum install wget 3. Запустите процесс установки FASTPANEL®, выполнив следующую команду: wget http://repo.fastpanel.direct/install_fastpanel.sh -O - | bash - 4. После установки FASTPANEL® вы получите сообщение с данными доступа: Congratulations! FASTPANEL® successfully installed and available for you at https://1.2.3.4:8888 Login: fastuser Password: password 5. При первом входе в систему FASTPANEL® запросит лицензию, для ее получения введите свой адрес электронной почты. Данные лицензии будут отправлены на этот адрес электронной почты. Лицензия абсолютно бесплатна и в большей степени является формальностью.
    3 балла
  5. Что ж. Для начала хотел бы оставить немного отзыва. После некоторых проблем с Vultr, а именно блокировкой IP адресов со стороны РФ, пошел искать хорошие варианты для замены. И один из первых, на удивление, стал Kamatera, с заблокированным в РФ основным доменом Kamatera.com. Зато все остальные саб-домены, доступны без VPN. Данного провайдера я конечно рекомендую на 100%! По трафику в тарифе: 5Тб на скоростях до 10Гбс 0. Для начала, моя обычная рефералка: https://go.cloudwm.com/visit/?bta=36601&brand=kamatera 1. Лояльность. При регистрации на сайте, я указывал действительный адрес РФ. Я указывал свои действительные данные. Вопросов или проблем с оплатой или поддержкой не возникло. Пожалуй, это основной аргумент. 2. Регистрация. Регистрация для всех сервисов одна. 2.1 Вводим почту и пароль 2.2. После этого вам придет письмо на почту для подтверждения. 2.3. Подтверждаем учетку. 2.4. Входим в учетку. 2.5. Нам нужны данные платежной карты. 3. Привязка карты. 3.1. Сервис CashInOut Если вы все сделали правильно, то вам нужно будет добавить карту зарубежного банка. Сервисов сейчас очень много, я проверил один из них (не настаиваю на его использовании) и все работает прекрасно. Комиссии не большие. Это бот в телеграм называется CashInOut https://t.me/Cashinout_bot?start=25933 Обратите внимание на документ, где ведется статистика работы карт выпускаемых в боте на определенных сервисах: https://docs.google.com/spreadsheets/d/e/2PACX-1vS7AFiIXavL8FsZ9ybRI_XhBWesxSN_cpkKTDS0AqD6HKmo1UFT5z1q8lwhY3Hdtem52ZWufNGY-JX3/pubhtml?gid=814411110&amp;single=true Вот такое меню: Вам нужно будет зайти в раздел Виртуальные карты Для выпуска вам нужно иметь на счете 27$ (можно и больше), из них будет списана комиссия: Комиссия: 1.12 USD (4.5%) Сообщения при создании будет примерно таким: Для зачисления средств я выбирал USDT (мне так было удобнее) И все. Я выбирал тип карты виза, и за пару секунд создалась моя виртуальная карта: 3.2. Возвращаемся и вводим данные для регистрации. Первым этапом вам нужно будет ввести свои данные. Вводим реальные (или нет) как хотите. 3.3. Ввод данных карты Как видите, у вас уже будет указан необходимый промокод для бесплатного использования своего лимита. Данные карты вводим с сервиса который рассмотрели в начале пункта. Готово! Поздравляю с регистрацией! PS: Списаний проверочных не будет. 4. Обзор Главная страница представляет из себя дэшборд. Он выглядит достаточно сложный, но из полезного что можно вывести - это информацию по оплате. Остальное опционально. 5. Создание нового сервера. 5.1. Доступные страны: Китай - Гонк-конг СШа - 8 локацией Канада - Торонто Европа: Нидерланды, Германий, Швеция, Италия, Испания, Великобритания Ближний восток - Израиль - 5 локаций Бонусных денег вам хватит чтобы протестировать все страны! 5.2. Выбор ОС. Доступны для выбора все самые популярные ОСи, в т.ч. свежая Ubuntu 24.04 LTS. 5.3. Обзор тарифов (При выборе, очень рекомендую включать опцию Detailed View - чтобы сразу видеть изменения цен.) Тарифная сетка представляет собой выбор из 4 вариантов. Обычно я выбираю такой тариф: Но вы можете успеть попробовать все за месяц. 5.4. Настройка входа по SSH ключу. Одной из особенностей данного провайдера, является (к сожалению) необходимость постоянного ввода своего SSH ключа, при создании сервера. Для этого, нам нужно включить опцию как на скриншоте: 5.5 Последним этапом вводим название своего сервера И видим итоговый расчет стоимости. Обратите внимание, что на почасовом тарифе, трафик не включен в стоимость! После создания сервера, он будет доступен в разделе Servers 5.6. Вот такие действия доступны с серверами. 5.7. Детальная информация по каждому серверу: По каждому серверу на вкладках есть вся необходимая информация. На этом пожалуй все! Приятного использования!
    3 балла
  6. Это третья часть о мониторинге домашней системы с использованием influxdb и grafana первая часть про общую настройку и вторая часть про мониторинг proxmox Вступление Продолжая вопрос мониторинга состояния системы необходимо обсудить еще не маловажный вопрос мониторинга состояния роутеров в вашей системе как один из самых важных и критических элементов системы. В данной заметке рассмотрим вопрос мониторинга роутеров keenetic а в следующей мониторинг роутеров openwrt. Решения для других систем рассматриваться не будут так как я являюсь приверженцем именно этих двух систем и других устройств у меня нет. Все настройки будут выполняться на актуально на текущий момент времени версии KeeneticOS 4.1.3 У кинетика есть достаточно удобное и хорошее API у роутеров из коробки но по умолчанию он закрыт файрволлом, именно используя данное restfull api можно получить всю необходимую нам информацию даже для роутеров без entware. Для решения задачи мониторинга я буду использовать проект https://github.com/vitaliy-sk/keenetic-grafana-monitoring Подробная инструкция по созданию новых корзин и api токенов было разобрано в первой и второй части, так что в данной публикации будет крайний минимум побочной информации. Настройка мониторинга роутера В рассматриваемом решение применяется подход обращения к API или авторизации и использования cli запросов. Я не вижу смысла использовать авторизацию с запросами так как api работает постоянно и не нагружает дополнительно систему в отличии от постоянных запросов через cli. Первым этапом откроем доступ к API на роутере, для подключения из локальной сети не требуется авторизация. Идем в настройки нашего роутера в раздел переадресация портов И создаем новое правило переадресации портов Обратите внимание на подсеть, в моем случае это 192.168.0.1 у вас она может отличаться. Фактически на стороне роутера настройка закончена теперь нам доступно api по адресу http://192.168.0.1:81/rci/show/system Настройка сбора данных в influxDB Теперь приступим к разворачиванию системы, которая будет обращаться к нашему api и пересылать в influxdb. В первую очередь создадим новую корзину данных для хранения в моем случае это keenetic. И создадим custom api токен на запись данных. Особенность сборщика не позволяет разделить данные от нескольких роутеров в одной корзине по hostname по этому для каждого роутера который необходимо мониторить делаем отдельную корзину данных. При копировании API токена проверяем, кнопка может отработать не корректно. Мониторинг запускается в отдельном докер контейнере на любом сервере в сети, в моем случае я буду запускать его на той же виртуальной машине, где у меня запущен influxdb. Я буду размещать файл конфигурации по пути /docker/keentic-monitoring/config.ini для этого создам советующие папки и файл. mkdir /docker mkdir /docker/keentic-monitoring nano /docker/keentic-monitoring/config.ini Заполняем данные в шаблон конфигурационного файла. Указываем адрес базы influxdb, токен, организацию и bucket. [influx2] # If you are using docker-compose it should be http://influxdb:8086 url=http://192.168.0.135:8086 # For influx v1.x please use "-" as a value org=influxdb # For influx v1.x please use "username:password" as a token # See DOCKER_INFLUXDB_INIT_ADMIN_TOKEN in docker-compose.yml token=<Token> timeout=6000 # For influx v1.x DB name bucket=keenetic [keenetic] admin_endpoint=http://192.168.0.1:81 skip_auth=true login=admin password= [collector] interval_sec=30 Запускаем докер контейнер со следующими параметрами Я использую docker compose из интерфейса portainer по этому привожу только файл запуска docker compose. Подробную инструкцию как запустить docker compose из файловой системы легко найти на просторах интернета. version: '3.7' services: keenetic-monitoring: image: techh/keenetic-grafana-monitoring:latest container_name: keenetic-monitoring environment: - TZ=Europe/Moscow volumes: - /docker/keentic-monitoring/config.ini:/home/config/config.ini:ro # Optionally you can override metrics #- ./config/metrics.json:/home/config/metrics.json:ro restart: always Проверяем что данные о системе начали поступать. Для тек у кого что то пошло не так... Если данные не поступают, то необходимо проверить логи вашего контейнера, если есть предупреждение на подобии такого, это значит что универсальный файл с описанием метрик вам не подходит и необходимо добавить еще одну volumes. Должно получиться так: volumes: - /docker/keenetic- monitoring/config.ini:/home/config/config.ini:ro # Optionally you can override metrics - /docker/keenetic- monitoring/metrics.json:/home/config/metrics.json:ro А на сервере по пути указано как конфиг метрик необходимо добавить файл из гит репозитория автора в котором удаляем секцию на которую получаем ошибку, в моем случае это media. https://github.com/vitaliy-sk/keenetic-grafana-monitoring/blob/master/config/metrics.json Внимательно следите за запятыми и кавычками, надо удалить блок целиком не сломав json. Визуализация данных в Grafana Фактически сбор данных на этом полностью закончен, теперь нам необходимо подключить Grafana к новой корзине данных и найти\составить красивый интерфейс. Я у себя использую интерфейс предложенный автором системы сбора данных из кинетика https://grafana.com/grafana/dashboards/12723-keenetic/ Обратите внимание что данная панель составлена под версию influxdb v1 для нее настройки Grafana должны быть выполнены следующим образом В поле HTTP headers value указываем: Token <ТокенНаЧтениеКорзины> Подробнее про настройку смотри первую часть В итоге получаем красивую панель мониторинга состояния роутера P.S. Следующая часть серии публикаций будет посвящена сбору данных с роутеров под управление OpenWRT
    3 балла
  7. Первичную настройку я разбирал уже в первой части так что в этой части будет меньше моментов по настройки самой Grafana и InfluxDB. Первая часть. Вступление, или варианты решения Для мониторинга состояния proxmox у нас есть несколько способов решения задачи. Использовать сам proxmox для отправки данных в influxdb Использовать telegraf для сбора данных через API proxmox и отправки их в influxdb Использовать telegraf для сбора данных хоста proxmox Фактически первые два варианта равнозначны и используют API proxmox которого достаточно для большинства задач, но в нем нет одного важного для меня показателя температура процессора. Подробнее про API proxmox можете почитать тут: https://pve.proxmox.com/wiki/Proxmox_VE_API Обращаться по API из telegraf в моем случае я тоже не вижу смысла так как вся система у меня находится в одной локации, это было бы оправдано если нам необходимо контролировать разрыв связи или собирать данные сразу с нескольких источник. Поэтому я буду использовать комбинацию первого и третьего варианта. Настройка отправки данных из proxmox Для мониторинга состояния proxmox VE нам необходимо создать новую корзину для данных в influxDB для этого заходим в influxDB в раздел Load Data -> Bucket При создании есть возможность выставить как долго хранить данные, я выбрал вариант never так как не вижу проблем в разрастании базы на текущий момент. Теперь необходимо создать токен доступа для корзины, который будет давать права на запись в базу. Переходим в меню управления API токенами и создаем новый custom token Даем права на запись для созданной корзины данных. Сохраняем себе полученный токен Внимание кнопка копирования токена может не сработать, проверяйте перед закрытием. Переходим в proxmox, нас интересует раздел сервер метрик. Создаем новую запись influxDB. Указываем в поле база данных имя корзины, а в поле маркер полученный токен записи. Проверяем что в ifluxBD появились данные. Теперь нам надо еще собирать данные о температуре сервера proxmox не зависимо от api proxmox. Я для этого буду использовать шаблон созданный в прошлый раз для system-monitoring, он доступен в разделе telegraf. Так как это хост система в данном случае я буду использовать пакетный вариант telegraf Подключаемся по ssh или через оболчку proxmox в браузере и устанавливаем пакет. Подробно все расписано в документации по установке тут: https://docs.influxdata.com/telegraf/v1/install/ Обратите внимание что, работая в оболочке proxmox у нас не будет sudo если работать под root Приведу команды установки из-под root пользователя: curl -s https://repos.influxdata.com/influxdata-archive_compat.key > influxdata-archive_compat.key echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list apt-get update && apt-get install telegraf Актуальные команды всегда будут доступны в официальной документации, просто удалите sudo из команд. Дальше нам необходимо получить нашу конфигурацию system-monitoring, для этого переходим в шаблоны telegraf открываем наш шаблон и копируем от туда токен доступа Закрываем это окно сам файл нам не понадобится, нам нужна инструкция по установке. Возвращаемся в оболочку proxmox и выполняем две команды как расписано в инструкции заменив <InfluxToken> на скопированный ранее токен. Обязательно надо передать ключ сначала отдельной командой для получения доступа к самому шаблону настроек. Но в принципе можно и просто скачать файл и отдать его telegraf как это было с docker вариантом. Проверяем что данные поступают в корзину и Grafana Обратите внимание что Grafana дополнительно настраивать для данной корзины не надо, а для корзины proxmox надо. Для этого переходим в управления токенами API и создаем токен на чтение корзины proxmox для Grafana. Подробно настройку Grafa я разбирал в прошлой публикации, тут приведу только результат настроек. Пример панели proxmox в Grafana Я использовал шаблон: https://grafana.com/grafana/dashboards/15356-proxmox-cluster-flux/ Вместо заключения Спасибо за внимание, в следующих публикациях я разберу так же способы мониторинга состояния роутеров keenetic и openwrt.
    3 балла
  8. Вторая часть про мониторинг proxmox Вступление, или не будем ждать проблем, когда они придут В один не слишком прекрасный день я осознал, что то, что когда-то началось как одна Яндекс.Лайт-станция, за год превратилось в достаточно крупную и сложную распределенную домашнюю систему. В ней участвуют порядка четырех мини-серверов и пяти роутеров, разбросанных по трем локациям, а также нескольких удаленных серверов. В момент прозрения меня посетила мысль: нужно как-то контролировать всю эту инфраструктуру, следить за температурой (ведь лето близко!) и свободными дисковыми и оперативными ресурсами. Изначально, когда я только начинал строить свой умный дом на базе Home Assistant, я старался втянуть в него всё, включая статистику. Однако со временем до меня дошло, что это не очень удобно (на каждой локации статистика собиралась в своем Home Assistant) и не слишком надежно (ведь HA не самая стабильная из всех систем, особенно при установке на базе Armbian). Более того, в умном доме не всегда нужны такие обширные данные, а то, что действительно важно, можно собирать более точечно. Сразу оговорюсь, что я не считаю своё мнение единственно верным в данном вопросе. Большая часть моих знаний по администрированию основана на собственном опыте, который можно сравнить с хождением по граблям. Требования к системе и результаты поиска Мои размышления привели к тому, что я решил развернуть отдельную систему мониторинга для всей домашней инфраструктуры, и начали поиски... Но сначала граничные условия: Использование docker. Я являюсь приверженцем использования docker контейнеров по максимуму так как это позволяет легко и быстро разворачивать и обновлять систему не заботясь о зависимостях. Легковесность. В планах было запустить основной (резервный, но об этом дальше) мониторинг на свободной железке tv-box под управлением armbian c 1Gb ОЗУ. Универсальность. Зоопарк систем не самый впечатляющий но он есть, и не хотелось сильно ограничивать себя в дальнейшем. Гибкость настроек, желательно с возможностью использования шаблонов. Первый мой выбор пал на систему Zabbix, это профессиональный инструмент мониторинга серверов с гибкой настройкой и большим количеством возможностей. Но проблема Zabbix в его перегруженности, да это отличный профессиональный инструмент с большим количеством возможностей. В моих изысканиях я столкнулся со следующими проблемами: Развертывание в докере хоть и описано но работает очень плохо, приведенный вариант docker compose переусложнен и стартует не всегда (пробовал и в виртуалке Debian и на armbian), документация по установке докера хоть и описана но мягко говоря оставляет желать лучшего (не описаны некоторые очень важные параметры запуска docker compose для полноценной работы). Система тяжелая. Изначально я все разворачивал на своей мини машинке armbian и думал что проблема в первую очередь с ней, но даже при переезде на виртуалку с выделенными 2Gb озу Zabbix их съел и просил еще, а в тот момент был подключен только 1 сервер для мониторинга… Усложненные настройки и не самый очевидный интерфейс. Увы но мы живем в эпоху упрощения UI, и сотни настроек и параметров Zabbix для неподготовленного пользователя выглядят страшно. Zabbix agent в докере работает очень странно… Следующим этапом стал новый поиск вариантов реализации, который привел к стеку Telegraf + InfluxDB + Garfana. Скажу сразу данный вариант показался мне более интересным и удобным, не только из за красивой визуализации графаны (которую можно и к Zabbix прикрутить) но скорее из за возможностей InfluxDB. InfluxDB — система управления базами данных с открытым исходным кодом для хранения временных рядов; написана на языке Go и не требует внешних зависимостей. Основной фокус — хранение больших объёмов данных с метками времени, и их обработка в условиях высокой нагрузки на запись Я сразу разворачивал вариант на базе influxDB v2 которая в сравнении с версией 1 про которую написано больше всего материалов в сети намного, прям на очень много интересней. Да и это уже не только база данных а нечто большее… После разворачивания influxDB поднимает web api и интерфейс, в котором можно: Управлять доступом Создавать и управлять корзинами (изолированными базами) Просматривать данные с помощью запросов и конструктора Настраивать уведомления путем запросов (в open source варианте доступно только slack и http из интерфейса, но есть способ отправлять и в телеграмм) Настройка дашбордов для мониторинга данных через запросы (или конструктором) Конструктор настроек для агентов сбора данных с возможностью хранения Красивый интерфейс… ну а куда без этого в наше время. Немного примеров интерфейса: Общая схема работы системы У influxDB в принципе очень хорошая документация, но вот примеры в других источниках в основном рассчитаны все таки на старую версию influxdb v1, в некоторых аспектах это может приводить к сложностям настройки, но в основном обратная совместимость осталась. В принципе все системы мониторинга работают по похожей схеме Host -> Агент -> База данных -> Визуализация. В данной системе influxDB является краеугольным камнем, а для него основной (и рекомендуемый) вариант агента является telegraf. Это удобный и универсальный инструмент который позволяет как собирать данные с текущего устройства так и выступать в роли некоего прокси который будет собирать данные с удаленных устройств и передавать их дальше (сразу в базу или в другие варианты вывода). Grafana используется для визуализации и уведомления по условия, фактически при использовании influxDB v2 явной необходимости в ней уже нет, но под нее еще много удобных шаблонов так что пока пусть будет. Сразу оговорю так как система распределенная я постараюсь уточнять что и где мы устанавливаем, но основная идея следующая: InfluxDB + Grafana установлены на сервере мониторинга (в моем примере 192.168.0.135) Агент для мониторинга серверов linux установлены на каждом наблюдаемом устройстве Агент в роли прокси (для сбора данных с роутеров) установлен на сервере мониторинга (но может быть размещен в любой точке сети) Разворачивание и первоначальная настройка InfluxDB v2 Вступление получилось слишком долгим так что поехали. Начнем с установки influx + Grafana. Для этого использую следующий docker compose шаблон: version: '3.6' services: influxdb: image: influxdb:latest container_name: influxdb restart: always ports: - '8086:8086' volumes: - /docker/influxdb/data:/var/lib/influxdb2 - /docker/influxdb/config:/etc/influxdb2 grafana: image: grafana/grafana container_name: grafana-server restart: always depends_on: - influxdb environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin links: - influxdb ports: - '3000:3000' volumes: - grafana_data:/var/lib/grafana volumes: grafana_data: {} Обратите внимание что графана сохраняет свои файлы в volumes а не в монтируемые папки, только в такой вариации у меня получилось запустить ее с монтированием папок на диск. Так же можно использовать дополнительные переменные для инициализации подробнее описано тут: https://hub.docker.com/_/influxdb Но я советую все же для удобства использовать первичную настройку. Запускаем докер контейнер командой и заходим на веб интерфейс influxdb по адресу http://<IP Serever>:8086 Нас встречает приветственное меню Influx для первоначальной настройки Заполняем данные, инициализации. Тут отдельно надо уточнить про поля организации и корзины. Фактически influx делит все ваши данные на изолированные базы на верхнем уровне организации и на более низком уровне корзины bucket, если проводить аналогии с первой версией bucket это старые вариации базы данных, именно в них попадают данные. При сборе данных нам будет важны эти параметры, но bucket можно спокойно создавать и удалять сколько надо из интерфейса. На следующей странице будет токен для api администратора, обязательно его сохраните это важно!!! Обратите внимание кнопка копирования может не сработать! Только с использованием токена можно работать через командную строку с базой, но токен можно сгенерировать новый через веб. В принципе на этом вся настройка закончена… на главной странице есть инструкция как настроить использование influxdb cli (работает через api) и приведены инструкции и ссылки на документацию с видео. Первоначальная настройка Grafana и подключение к InfluxDB Заходим по адресу http://<IP Serever>:3000 где нас встречает окно авторизации. Если не были заданы пароль и пользователь по умолчанию при инициализации то заходим с данными admin\admin и меняем пароль. Для настройки пользователей переходим в раздел Administration – Users and access - Users Для подключения Grafana к influxdb создаем токен доступа к корзине данных. Для этого возвращаемся в influxdb в меню идем Load Data – API Tokens и создаем Custom API Token даем ему право только на чтение (если не собираетесь запросами графаны менять данные) и даете понятное название. Больше нечего давать не надо. Сохраняем себе токен, он понадобиться для настройки Grafana. Обратите внимание кнопка копирования может не сработать!!! Возвращаемся в Grafana и добавляем новый источник данных. Для этого переходим в connections и выбираем новый источник данных influxdb. Вторая версия InfluxDB использует как основной вариант языка запросов flux но многие существующие шаблоны используют старый вариант на базе influxQL, но в самой Grafana при использовании такого варианта нет возможности авторизации по токену, а авторизация во второй версии является обязательной. Для этого необходимо отдельно добавит строку Custom HTTP Headers. Альтернатива использовать логин и пароль для InfluxDB Details, но это не рекомендуемый вариант. Заполняем настройки: Имя советую давать по именам корзин\bucket к которым даете доступ что бы не путаться. В поле url можно указать ip вашего сервера, но лучше использовать вариант с доменным именем контейнера. Авторизацию выключаем Добавляем Custom HTTP Headers в поле Header указываем Authorization в поле value пишем так: Token <ВашТокенДляЧтенияИзInflux> Пробел после Token обязателен В поле database указываем имя корзины HTTP метод GET Ниже пример настроек: Для варианта с языком flux все несколько проще: В поле токен пишем только сам токен без каких-либо дополнений. Фактически настройка самой системы мониторинга на этом закончена дальше необходимо создавать дашборд панели и события, но нам все еще надо собрать данные о системе и с этим нам поможет telegraf. Сбор данных о сервере с помощью telegraf Перед запуском нам надо получить файл telegraf.conf в интернете есть достаточно много примеров о том как его составлять и подробно описаны какие модули есть, но нам на помощь снова придет influxdb v2. Заходим в inffluxdb по адресу http://<IP Serever>:8086, нас интересует пункт меню telegraf Создаем новую конфигурацию и выбираем что хотим собирать и куда складывать данные. В конструкторе изначально есть возможность выбрать только один вариант, после создания есть возможность добавить дополнительные модули или заменить на готовый файл конфигурации. Получим шаблон настроек, который заменяем на нужный нам: Текст шаблона для получения основных показателей: [[inputs.cpu]] percpu = false totalcpu = true collect_cpu_time = false report_active = false # Read metrics about disk usage by mount point [[inputs.disk]] ## By default stats will be gathered for all mount points. ## Set mount_points will restrict the stats to only the specified mount points. mount_points = ["/"] ## Ignore mount points by filesystem type. # ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] [[inputs.diskio]] devices = ["sd?", "nvme?", "nvme?n?"] # Get kernel statistics from /proc/stat #[[inputs.kernel]] # collect = ["psi"] # Provides Linux sysctl fs metrics [[inputs.linux_sysctl_fs]] # no configuration # Read metrics about memory usage [[inputs.mem]] # no configuration [[inputs.nstat]] # interfaces = ["en*", "eth*", "ib*", "wl*"] [[inputs.netstat]] # no configuration # Get the number of processes and group them by status [[inputs.processes]] # no configuration # Read metrics about swap memory usage [[inputs.swap]] # no configuration # Read metrics about system load & uptime [[inputs.system]] # no configuration [[inputs.temp]] # no configuration Сохраняем после замены указав понятное название шаблону. Если мы планируем запускать без докера нам приводится инструкция как все быстро запустить. Копируем себе токен из первого поля все что идет после export INFLUX_TOKEN= Почему мы используем этот вариант для докера если у нас не получиться быстро загрузить конфиг по ссылке? Все очень просто теперь у нас всегда есть заготовленный шаблон конфига в самой системе influxdb. Нажимаем на название конфига и у нас открывается окно с полным шаблоном конфига, нам надо найти секцию [[outputs.influxdb_v2]] и в ней указать token который получили раньше. Формально это не рекомендуется и в продакшен все же так делать не стоит но у нас этот токен и так строго ограничен на запись одной конкретной корзины данных, так что пойдет. Так же в конфиге надо указать hostname в секции [agent] для того что бы корректно различать с какого хоста нам поступили данные. Сохраняем себе конфиг и идем на сервер, который хотим подключить. Нам надо поместить наш полученный файл по пути который указан в докере telegraf в моем примере /docker/telegraf/telegraf.conf Важный момент выходов, как и входов у telegraf может быть несколько в том числе и однотипных. Таким образом мы можем одновременно передавать данные в две базы influxdb или, например публиковать на сервер mqtt для использования в системе умного дома. Я в своей реализацию использую два сервера influxdb для сбора статистики одновременно, один для визуализации второй как резервная статистика на базе armbian tv box. Создаем docker compose файл по шаблону: version: "3" services: watchtower: image: telegraf:latest container_name: telegraf environment: - HOST_ETC=/hostfs/etc - HOST_PROC=/hostfs/proc - HOST_SYS=/hostfs/sys - HOST_VAR=/hostfs/var - HOST_RUN=/hostfs/run - HOST_MOUNT_PREFIX=/hostfs - TZ=Europe/Moscow volumes: - /:/hostfs:ro - /docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro После размещения конфига запускаем контейнер и проверяем что данные начали поступать в базу. Для этого идем в influxdb – data explorer Все теперь данные собираются и пишутся в базу, а Grafana уже может эти данные получать и визуализировать. Визуализация данных Покажу визуализацию на примере шаблона https://grafana.com/grafana/dashboards/20762-telegraf-system-metrics/ Чаще всего в шаблонах описано все что нам надо, но в первую очередь обращаем внимание на источник данных если не уточняется то по умолчанию считается что надо источник influx v1 это первый вариант подключения. Идем в меню Grafana пункт Dashboards Создаем новый путем импорта шаблона, можно использовать или номер шаблона или json. Указываем источник, для данного примера нам надо вариант обычный вариант Вот и все мы молодцы и имеем красивую панель мониторинга со всей информацией по серверу Несколько полезных советов по импорту: Если что то не работает в первую очередь проверьте в настройках импортируемого дашборада переменные что они корректно заданы под ваши настройки, иногда шаблоны не самого лучшего качества имеют захардкоженые имена корзин. Если хотите добавить новый блок удобней составлять запрос в Influxdb конструктором и взять от туда готовый вариант запроса для консоли. На этом основные настройки закончены, из Grafana можно настроить уведомления по условиям запросов практически в любой меседжер. Можно бесконечно совершенствовать таблицу или объединять данные с разных серверов на сводную таблицу, возможностей уйма но основная задача данного материала это базовая настройка. В дальнейшем расскажу как настроить мониторинг proxmox и роутеров на базе keenetic и openwrt. Вторая часть про мониторинг proxmox P.S. Делитесь хорошими и удобными панелями для Grafana или influxDB
    3 балла
  9. Дорогие друзья! Я очень долго откладывал эту тему, но оно того стоило. Вся изюминка в конце. Если вы давно на поле VPS, то наверно знаете про таких гигантов VPS как Hetzner и DigitalOcean. Все они с недавних пор отказываются работать с пользователями из России и даже блокируют аккаунты, если узнают о таком использовании. Так вот, на помощь приходит BitCoinVPS.CLOUD Скорости на этих серверах не имеют никаких ограничений. А трафик ограничен 20ТБ в месяц! Это сервис, который позволяет анонимно приобретать VPS у Hetzner и оплачивать это всё через КриптоВалюту! В конце статьи, будет персональный промокод на 6% скидку и будет действовать только для тех кто пройдет по реферальной ссылке Уж такие были условия сотрудничества! 1. Знакомство с сайтом и регистрация на BitCoinVPS Перейдя по реферальной ссылке, попадаем на главную страницу: 1.1. Доступная криптовалюта для оплаты Здесь мы можем узнать об основных тарифных планах и различных вариантах приёма криптовалюты (то, что нам нужно!!) Принимается: BTC, ETH, APE, BCH, Dai, DOGE, LTC, SHIB, USDT, USDC и многие другие! 1.2. Доступные локации Germany - Falkenstein Germany - Nuremberg Finland - Helsinki Virginia (USA) - Ashburn 1.3. Регистрация - покупка 1.3.1. Вверх страницу находим кнопку Don't Wait: 1.3.2. Попадаем на все доступные тарифы для оплаты. Тариф нам нужен (почему, узнаете попозже), также он доступен по конкретной быстрой ссылке https://my.bitcoinvps.cloud/aff.php?aff=1&pid=28: 1.3.3. Жмем Order Now 1.3.4. Попадаем в детализацию покупки Для России, я РЕКОМЕНДУЮ выбирать Финляндию. Убедились что выбрана Ubuntu 22.04. Здесь же вы можете добавить свой SSH ключ, для быстрого захода на сервер: 1.3.5. Жмем справа: 1.3.6. Попали на страницу заказа! И вот тут начинается самое сладкое для ВАС, дорогие посетители форума. ПО специальному промокоду - openode.ru вы получаете скидку 6% на первые 3 месяца аренды! ТОЛЬКО ДЛЯ МОИХ РЕФЕРАЛОВ! Тарифы на которые распространяется промокод (картинки кликабельны): Вводим параметры нового аккаунта и выбираем Popular Cryptos! 1.3.7. Жмем Checkout 1.3.8. Попали на страницу с выставленным Счётом (Invoice) Не спешите жать PayNow (после нажатия у нас будет 1 час на оплату). Переходим ко второму этапу. 2. Регистрация на Kassa.cc Это сервис обмена и покупки криптовалюты, с минимальной комиссией, которую я смог найти! Здесь всё очень просто - 3 поля: 1. Что отдаете 2. Что покупаете 3. Как покупаете 2.1. Подготовка к обмену Здесь для обмена, необходима самая примитивная верификация. С правилами вы можете ознакомиться здесь: https://kassa.cc/aml-policy Здесь нас интересует, карта MIR в 1 поле ZCash во втором. Но нам нужно сейчас сперва зарегистрироваться - она очень простая и быстрая, я не буду её расписывать. 3. Обмен и покупка Когда вы зарегистрировались, у вас скорее всего появился ваш личный кабинет, где вам нужно найти: Жмём. 3.1. Попадаем на страницу. Выбираем 1 - карта мир Выбираем 2 - ZCash Почему именно ZCash? Потому что это самый лучший курс обмена, который я нашел на момент подготовки статьи. 3.2. Возвращаемся на страницу Bitcoinvps и жмем PayNow. 3.3. Выбор оплаты. Как я уже писал ранее, лучший тариф был на ZCash. Выбираем его, и узнаем сколько нам нужно заплатить и куда перевести деньги. 3.4. Копируем точную сумму и вставляем её в kassa.cc во вторую колонку (рубли просчитаются сами): 3.5. Вставляем НОМЕР КОШЕЛЬКА КОТОРЫЙ НАМ ВЫДАЛИ В ПУНКТЕ 3.3 и вводим свои Персональные: 3.6. Обязательная верификация для каждой новой карты Способов много, и никто персональных данных от вас не просит. Проверка справедливая, и выполняется только в указанный период времени! Проверка нужна, чтобы вы не были теми самыми мошенниками, которые списывают и уводят таким образом деньги с карт жертв! Проходит она очень быстро. Когда пройдете, сможете перейти к следующему шагу. Когда нажмете Перейти, откроется страница, где будут указаны реквизиты, куда нужно перевести деньги. Когда переведете деньги, нажмете кнопку "Я оплатил" После этого, останется дождаться подтверждения операции перевода от службы Kassa и ещё немного времени от блокчейн сети. Поздравляю! Теперь у вас есть сервер у Hetzner! Спешу вас предостеречь! BitCoinVPS придерживается политики нулевой терпимости. Это значит, что если на ваш сервер придёт "кляуза" от каких-либо органов или правообладателей, никто разбираться не будет, и сервер будет удален! Поэтому, настоятельно рекомендую заблокировать использование торрентов через VPN и предупреждать об этом своих пользователей! (ну и конечно без чернухи!)
    3 балла
  10. Друзья! Сегодня хотел бы предоставить вниманию, не теряющую актуальность, базовую настройку. Данная статья актуальна в первую очередь для Ubuntu. Во вторую для Debian. Введение в безопасность VPS: Объяснение важности безопасности VPS и основных угроз, которые могут возникнуть при использовании серверов Ubuntu и Debian. Обновление системы: Подробное руководство по обновлению системы для обеспечения ее актуальности и защиты от известных уязвимостей. Настройка брандмауэра: Руководство по настройке брандмауэра для ограничения доступа к определенным портам и службам. Смена стандартных портов: это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак. Использование SSH ключей: Объяснение преимуществ использования SSH ключей для аутентификации, а также шаги по их созданию и установке. Настройка Fail2Ban: Руководство по настройке Fail2Ban для автоматической блокировки IP-адресов, которые пытаются взломать систему. Резервное копирование данных: Важность регулярного резервного копирования данных и руководство по его настройке. Заключение и дополнительные рекомендации: Обобщение информации, представленной в статье, и дополнительные рекомендации по обеспечению безопасности VPS. 1. Введение в безопасность VPS Виртуальные частные серверы (VPS) стали неотъемлемой частью современного интернет-пространства. Они предоставляют пользователям гибкость и контроль, которые трудно достичь с общим хостингом. Однако вместе с этими преимуществами приходит и ответственность за обеспечение безопасности вашего VPS. Безопасность VPS - это не что-то, что можно взять и забыть. Это постоянный процесс, который требует регулярного обслуживания и обновления. Несмотря на то, что Ubuntu и Debian являются одними из самых безопасных операционных систем, они не являются неприступными. Все системы подвержены угрозам, и ваша задача - минимизировать риск. Существуют различные типы угроз безопасности, которые могут возникнуть при использовании серверов Ubuntu и Debian. Вот некоторые из них: Вредоносное ПО: Это может включать в себя вирусы, черви, трояны и другие виды вредоносного ПО, которые могут повредить вашу систему или использовать ее для атак на другие системы. Атаки DDoS: Это атаки, которые направлены на перегрузку вашего сервера большим количеством запросов, что может привести к его отказу. Атаки с помощью подбора паролей: Это атаки, при которых злоумышленники пытаются угадать ваши пароли для получения доступа к вашему серверу. Уязвимости в программном обеспечении: Это уязвимости в программном обеспечении, которое вы используете на вашем сервере, которые могут быть использованы злоумышленниками для получения несанкционированного доступа. Важно понимать эти угрозы и принимать меры для их предотвращения. В следующих разделах мы рассмотрим, как вы можете обеспечить безопасность вашего VPS на серверах Ubuntu и Debian. 2. Обновление системы Одним из самых важных шагов в обеспечении безопасности вашего VPS является регулярное обновление вашей системы. Обновления часто включают в себя исправления уязвимостей, которые могут быть использованы злоумышленниками для атаки на вашу систему. Вот как вы можете обновить свою систему на серверах Ubuntu и Debian: Обновление списка пакетов: Прежде всего, вам нужно обновить список пакетов в вашей системе. Это можно сделать с помощью команды sudo apt update. Эта команда обновит список доступных пакетов и их версий. Обновление установленных пакетов: После обновления списка пакетов вы можете обновить все установленные пакеты с помощью команды sudo apt upgrade. Эта команда обновит все установленные пакеты до последних версий. Удаление неиспользуемых пакетов: После обновления пакетов рекомендуется удалить неиспользуемые пакеты, которые больше не нужны. Это можно сделать с помощью команды sudo apt autoremove. Обновление ядра системы: В некоторых случаях может потребоваться обновление ядра системы. Это можно сделать с помощью команды sudo apt dist-upgrade. После выполнения этой команды может потребоваться перезагрузка сервера. Вот пример того, как выглядят эти команды в терминале: sudo apt update sudo apt upgrade sudo apt autoremove sudo apt dist-upgrade Помните, что обновление системы - это важный шаг в обеспечении безопасности вашего сервера. Регулярное выполнение этих шагов поможет защитить ваш сервер от большинства известных угроз. 3. Настройка брандмауэра Брандмауэр играет важную роль в обеспечении безопасности вашего VPS. Он контролирует входящий и исходящий трафик на вашем сервере, позволяя только легитимным соединениям проходить. Вот как вы можете настроить брандмауэр на серверах Ubuntu и Debian: Установка UFW: UFW (Uncomplicated Firewall) - это простой в использовании интерфейс для управления брандмауэром iptables. Вы можете установить его с помощью команды sudo apt install ufw. Настройка правил UFW: После установки UFW вы можете настроить правила для различных портов и служб. Например, если вы хотите разрешить доступ к порту 22 (SSH), вы можете использовать команду sudo ufw allow 22. Включение UFW: После настройки правил вы можете включить UFW с помощью команды sudo ufw enable. Это активирует брандмауэр и применяет ваши правила. Проверка статуса UFW: Вы можете проверить статус UFW и список ваших правил с помощью команды sudo ufw status. Вот пример того, как выглядят эти команды в терминале: sudo apt install ufw sudo ufw allow 22 sudo ufw enable sudo ufw status Помните, что настройка брандмауэра - это важный шаг в обеспечении безопасности вашего сервера. Правильная настройка брандмауэра может значительно уменьшить риск несанкционированного доступа к вашему серверу. 4. Смена стандартных портов Смена стандартных портов - это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак. Вот как вы можете изменить стандартный порт SSH с 22 на другой (например, 2222) на серверах Ubuntu и Debian: Редактирование файла конфигурации SSH: Откройте файл конфигурации SSH с помощью команды: nano /etc/ssh/sshd_config Найдите строку, которая начинается с #Port 22, удалите символ # и измените 22 на 2222 (или любой другой порт, который вы хотите использовать). Перезагрузка службы SSH: После редактирования файла конфигурации вам нужно перезагрузить службу SSH, чтобы применить изменения. Вы можете сделать это с помощью команды: sudo systemctl restart ssh Обновление правил UFW: Теперь, когда вы изменили порт SSH, вам нужно обновить правила UFW, чтобы разрешить трафик на новом порту. Вы можете сделать это с помощью команды sudo ufw delete allow 22 и sudo ufw allow 2222 Вот пример того, как выглядят эти команды в терминале: sudo nano /etc/ssh/sshd_config sudo systemctl restart ssh sudo ufw delete allow 22 sudo ufw allow 2222 Помните, что при изменении порта SSH вам нужно будет указывать новый порт при подключении к серверу через SSH. Например, если вы изменили порт на 2222, вы должны будете использовать команду ssh -p 2222 user@your_server_ip. Также стоит отметить, что некоторые порты зарезервированы для определенных служб и не должны использоваться для SSH. Убедитесь, что выбранный вами порт свободен и не используется другими службами. 5. Использование SSH ключей SSH ключи представляют собой безопасный метод аутентификации, который предлагает больше безопасности, чем традиционные пароли. Они особенно полезны для серверов, доступных через интернет, где угроза взлома высока. Вот как вы можете создать и использовать SSH ключи на серверах Ubuntu и Debian: Создание SSH ключей: Для создания нового SSH ключа вы можете использовать команду ssh-keygen. Эта команда создаст пару ключей: открытый ключ (для установки на сервере) и закрытый ключ (для использования при подключении к серверу). Установка открытого ключа на сервере: После создания ключей вы должны установить открытый ключ на вашем сервере. Это можно сделать, скопировав содержимое файла открытого ключа (обычно ~/.ssh/id_rsa.pub) в файл ~/.ssh/authorized_keys на вашем сервере. Использование закрытого ключа для подключения к серверу: При подключении к серверу вы должны указать ваш закрытый ключ с помощью опции -i команды ssh. Например, ssh -i ~/.ssh/id_rsa user@your_server_ip Вот пример того, как выглядят эти команды в терминале: ssh-keygen cat ~/.ssh/id_rsa.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" ssh -i ~/.ssh/id_rsa user@your_server_ip Помните, что при использовании SSH ключей важно хранить ваш закрытый ключ в безопасном месте и не передавать его никому. Если кто-то получит доступ к вашему закрытому ключу, он сможет подключиться к вашему серверу. Поэтому также рекомендуется защитить ваш закрытый ключ паролем при создании. Это можно сделать, следуя инструкциям команды ssh-keygen. 5.1. Настройка SSHD_CONFIG Открываем файл для редактирования: nano /etc/ssh/sshd_config В самый конец файла вставляем: PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no Чтобы отключить вход по паролю, изменяем значение параметра в том же файле sshd_config: PasswordAuthentication no Для Ubuntu 22.04 дополнительно пропишите PubkeyAcceptedAlgorithms +ssh-rsa После этого сохраните файл Ctrl + O .. и закройте его Ctrl + X Присвойте права для файла: chmod 700 ~/.ssh/ && chmod 600 ~/.ssh/authorized_keys И перезапустите сервис sshd service sshd restart 6. Настройка Fail2Ban Fail2Ban - это инструмент, который помогает защитить ваш сервер от брутфорс-атак. Он мониторит логи на предмет повторяющихся неудачных попыток входа и автоматически блокирует IP-адреса, которые показывают подозрительную активность. Вот как вы можете настроить Fail2Ban на серверах Ubuntu и Debian: Установка Fail2Ban: Fail2Ban можно установить с помощью менеджера пакетов apt. Для этого введите команду sudo apt install fail2ban. Настройка конфигурации Fail2Ban: После установки Fail2Ban вам нужно настроить его конфигурацию. Конфигурационные файлы Fail2Ban находятся в каталоге /etc/fail2ban. Вы можете скопировать файл jail.conf в новый файл jail.local с помощью команды sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. Затем вы можете редактировать jail.local с помощью текстового редактора, например, nano: sudo nano /etc/fail2ban/jail.local. Настройка правил Fail2Ban: В файле jail.local вы можете настроить различные параметры, такие как длительность блокировки (параметр bantime), количество неудачных попыток входа, после которых IP-адрес будет заблокирован (параметр maxretry), и так далее. Вы также можете настроить специфические правила для различных служб, таких как SSH или Apache. Запуск и проверка статуса Fail2Ban: После настройки конфигурации вы можете запустить Fail2Ban с помощью команды sudo systemctl start fail2ban. Вы можете проверить статус Fail2Ban с помощью команды sudo systemctl status fail2ban. Вот пример того, как выглядят эти команды в терминале: sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local sudo systemctl start fail2ban sudo systemctl status fail2ban Помните, что Fail2Ban - это мощный инструмент, но он не является панацеей от всех видов атак. Всегда следует использовать его в сочетании с другими методами обеспечения безопасности, такими как использование сложных паролей, ограничение доступа по IP-адресам и использование SSH ключей для аутентификации. Также важно регулярно обновлять вашу систему и следить за последними угрозами безопасности. Fail2Ban хранит свои настройки в каталоге /etc/fail2ban. В данном каталоге лежит файл jail.conf, который содержит стандартные настройки. Редактировать данный файл не рекомендуется, так как он перезаписывается при обновлении пакета Fail2Ban. Поэтому для настроек потребуется создать новый конфигурационный файл с именем jail.local. Вот пример того, как выглядят эти команды в терминале: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local Файл jail.local поделён на секции, так называемые «изоляторы» (jails), каждая секция отвечает за определённый сервис и тип атаки. Вот пример конфигурации для защиты SSH от повторяющихся неудачных попыток авторизации на SSH–сервере, проще говоря, «brute–force»: [DEFAULT] ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 banaction = iptables-multiport [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 Параметры из секции [DEFAULT] применяются ко всем остальным секциям, если не будут переопределены. Секция [ssh] отвечает за защиту SSH. Важно помнить, что при изменении настроек Fail2Ban, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban. sudo systemctl restart fail2ban Пожалуйста, убедитесь, что вы тщательно проверили все настройки перед их применением, чтобы избежать случайной блокировки полезного трафика. Дополнительные варианты конфигурации jail.local для самых популярных сервисов: MySQL: [mysqld-auth] enabled = true filter = mysqld-auth port = 3306 logpath = /var/log/mysql/error.log Nginx: [nginx-http-auth] enabled = true filter = nginx-http-auth port = http,https logpath = /var/log/nginx/error.log Apache: [apache-auth] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log После редактирования файла jail.local, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban. sudo systemctl restart fail2ban 7. Резервное копирование данных Резервное копирование данных является критически важной задачей для любого сервера. Это создание запасных копий данных, которое может быть настроено по регулярному расписанию или выполняться однократно в удобный для пользователя момент. В случае сбоя системы или потери данных, резервные копии позволяют быстро восстановить работу. Вот как вы можете настроить резервное копирование данных на серверах Ubuntu и Debian: Создание резервной копии с помощью dd: Команда dd копирует файл, преобразуя в процессе формат данных, в соответствии с указанными операндами. Чтобы сделать запасную копию вашего жесткого диска используйте следующую команду: dd if =<исходный_диск> of=<полное_имя_копии> bs=8M conv=sync,noerror Восстановление из резервной копии с помощью dd: Чтобы сделать восстановление вашего жесткого диска из резервной копии используйте следующую команду: dd if =<полное_имя_копии> of=<целевой_диск> bs=8M conv=sync,noerror Создание резервной копии с помощью tar: Команда tar в Linux часто используется для создания архивов .tar.gz или .tgz, также называемых «tarballs». Чтобы сделать бекап вашей системы используйте следующую команду: tar -cvpzf <имя_файла>.tar.gz --exclude=<имя_файла> --one-file-system <целевой_каталог> 8. Заключение и дополнительные рекомендации В этой статье мы рассмотрели различные аспекты обеспечения безопасности VPS, включая настройку брандмауэра, смену стандартных портов, использование SSH ключей для аутентификации, настройку Fail2Ban для автоматической блокировки IP-адресов и резервное копирование данных. Важно помнить, что обеспечение безопасности - это непрерывный процесс, который требует регулярного мониторинга и обновления. Всегда следите за последними угрозами безопасности и обновлениями программного обеспечения. В заключение, вот несколько дополнительных рекомендаций по обеспечению безопасности VPS: Регулярно устанавливайте важные обновления ОС и ПО Используйте только ПО из проверенных источников Уделите должное внимание настройке Firewall Переименуйте стандартную учетную запись администратора Создайте несколько административных аккаунтов Поддерживайте виртуальные машины в актуальном состоянии Используйте несколько виртуальных машин для большей устойчивости и доступности Внедрение стратегии непрерывности бизнес-процессов и аварийного восстановления (BCDR) Помните, что безопасность вашего VPS - это ваша ответственность. Будьте внимательны, будьте безопасны!
    3 балла
  11. DWG - DARK Обсуждение DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] » Особенности: сборка с возможность контроля и отображения каждого пира WG в AdGuardHome! Интерфейс сделан "тёмный". Сборка на базе WG-Easy. Находится в тестировании! Могут быть ошибки! Требования Чистый пустой сервер. Поддерживаемые операционные системы: Ubuntu 20.04, 22.04; Debian 11, Centos 8,9 Скрипт устанавливает все автоматически. Все комментарии по скрипту внутри в комментариях Самая быстрая установка - 1 минута Запусти команду на чистом сервере apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-dark/main/setup.sh && chmod +x setup.sh && ./setup.sh Что установится: Сначала установится Git, чтобы можно было скопировать мой репозиторий Docker - последняя версия Docker-compose - последняя версия Wg-easy - интерактивный режим введения пароля для веб AdGuard Home - интерактивный режим создания пользователя и пароля (можно оставить стандартным) Unbound - все в стоке apache2-utils - необходим для генерации хэш-паролей ssh.sh - скрипт для смены порта SSH подключения ufw.sh - скрипт для установки UFW Firewall. Напомнит установить ufw-docker и сам закроет доступ извне! ВНИМАНИЕ! Запускать только после того как создадите для себя клиента в WireGUARD!!! https://github.com/DigneZzZ/dwg-dark
    2 балла
  12. Я с хайдифи уже давно не работаю) Даже не знаю где там)) Но да, это в правилах роутинга. С ютубом на примере хайдифи тоже сложно подсказать.
    2 балла
  13. РКН сегодня ночью (06.11.2024) заблокировал ЕСН от Cloudflare сделав недоступными все сайты использующие Proxied от CF, а также те же сертификаты с TLS 1.3. На данный момент проблему можно решить тремя путями: Не использовать Российские адреса; Отключить защиту ECH Отключить TLS 1.3 в браузере; Как отключить Cloudflare ECH? Полное отключение TLS 1.3 может быть не совсем безопасным способом. Если блокировки снимут, рекомендую его включить. Отключаем через API запрос: 1. Получение данных для API Cloudflare Чтобы отключить ECH, вам понадобятся Global API Key и Zone ID вашего домена. Global API Key. Перейдите на страницу Cloudflare по следующей ссылке и найдите ваш глобальный API-ключ: https://dash.cloudflare.com/profile/api-tokens Zone ID. Перейдите в управление вашим доменом на Cloudflare и прокрутите вниз страницу. Найдите строку Zone ID и скопируйте её. 2. Отключение ECH через API Cloudflare Теперь, когда у вас есть Global API Key и Zone ID, вы можете отключить ECH с помощью команды curl. Выполните следующую команду, заменив {ID_ZONE} на ваш Zone ID, а {ACCOUNT_EMAIL} и {GLOBAL_API_KEY} на ваш email и API-ключ соответственно: curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{ID_ZONE}/settings/ech" \ -H "X-Auth-Email: {ACCOUNT_EMAIL}" \ -H "X-Auth-Key: {GLOBAL_API_KEY}" \ -H "Content-Type:application/json" --data '{"id":"ech","value":"off"}' Вариант 2: Отключение ECH через Postman Вы также можете выполнить отключение через Postman: 1. В Postman выберите метод PATCH и введите URL: https://api.cloudflare.com/client/v4/zones/{ID_ZONE}/settings/ech 2. В Headers добавьте следующие поля: X-Auth-Email: ваш email-адрес Cloudflare. X-Auth-Key: ваш Global API Key. Content-Type: application/json В Body выберите raw и введите следующий JSON: {"id": "ech", "value": "off"}
    2 балла
  14. Способ 1 (для всех ОС) Это самый простой способ. Копируем ссылку на видео. Заходим в Discord, создаем группу с самим собой (можно использовать Discord-сервер). Кидаем в чат ссылку, нажимаем на вложение и смотрим - профит! Способ 2 (для всех ОС) Внимание!! Будет реклама! Нужен VPN. Создайте свой, либо используйте бесплатный, коих полно в интернете. Подключаемся к VPN. Открываем YouTube, смотрим в максимальном качестве. Способ 3 (только для Windows) Это самый удобный и заморочный способ. Качаем GoodbyeDPI с GitHub. Распаковываем архив. В адресной строке браузера пишем: chrome://flags. В поиске пишем kyber, в выпадающем меню выставляем Disabled, закрываем браузер. В папке GoodbyeDPI запускаем 1_russia_blacklist.cmd от имени администратора. Если запуск успешен, вы увидите «Filter activated, GoodbyeDPI is now running!» Заходим на YouTube и проверяем работу. Если мешает окно cmd, в папке GoodbyeDPI запускаем service_install_russia_blacklist.cmd от имени администратора. Скрипт установит программу в автозагрузку. Если ничего не поменялось, и Вы не выполняли пункт 8, закрываем окно cmd, в папке GoodbyeDPI запускаем 1_russia_blacklist_dnsredir.cmd от имени администратора, выполняем пункт 6. Это перенаправит запросы к YouTube через защищенный DNS. Если мешает окно cmd, запускаем service_install_russia_blacklist_dnsredir.cmd, выполняем пункт 6. Это перенаправит запросы к YouTube через защищенный DNS. Если Вы выполнили пункт 8 или 10 и хотите удалить программу, запускаем service_remove.cmd от имени администратора, затем перезагружаем комп. Это полностью удалит службу из системы. Способ 4 (Android) UPD от 06.08.2024: на Android можно скачать YouTube ReVanced и смотреть в нем, приложение режет рекламу, поэтому подойдет для просмотра через VPN. Ссылка на скачивание с 4pda (не реклама), root не требуется. В стоке работает не у всех, лично у меня – нет. UPD 2 от 06.08.2024: @CO_PY, приветствую, спасибо за наводку! Способ 5 (только для Android) Удобный и быстрый способ. Качаем ByeDPIAndroid с GitHub, устанавливаем. Запускаем, нажимаем на кнопку «Connect», даем разрешение на подключение к VPN. Запускаем YouTube и смотрим – профит! По умолчанию прога создает self-hosted VPN и меняет IP-адрес DNS-сервера на 9.9.9.9 на случай, если провайдер спуфит DNS. В настройках рекомендую выбрать "Desync only HTTPS and TLS", дабы не ломать полезный трафик, но, если "не горит", можно не ставить. Если не работает, попробуйте поменять режим "VPN" на "Proxy" в настройках приложения, у меня заработало в стоке. UPD 3 от 07.08.2024: Способ 6 (Linux, macOS) Еще один быстрый и удобный способ. Открываем "Терминал". Если у Вас Linux (не macOS, это важно) – вводим команду для определения архитектуры: dpkg --print-architecture Если у Вас Mac на intel: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64 Если у Вас Mac на Apple Silicon (M1, и т.д): curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-arm64 Если у Вас Linux на amd64: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-amd64 Если у Вас Linux на arm: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm Если у Вас Linux на arm64: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm64 Эти команды скачают и запустят скрипт установки SpoofDPI. Папка установки по умолчанию: ~/.spoof-dpi/bin Если установка успешна, вы увидите "Successfully installed SpoofDPI". Далее, вводим команду: export PATH=$PATH:~/.spoof-dpi/bin Она добавит переменную окружения для запуска SpoofDPI в любой папке. Вводим команду: spoof-dpi Если все прошло успешно, вы увидите "SPOOFDPI". Поздравляю, все работает! Если у вас Mac, и, после ввода spoof-dpi Вам выдало ошибку "bad CPU type in executable: spoof-dpi", установите Rosetta командой softwareupdate --install-rosetta --agree-to-license После установки Rosetta повторите запуск SpoofDPI. UPD 4 от 08.08.2024: радостная новость для владельцев Яблока! Способ 7 (iOS, macOS) Без VPN и команд. Открываем AppStore и скачиваем BluePlayer – аналог YouTube ReVanced. Приложение поддерживает все возможности YouTube Premium и Spotify, не имеет рекламы, есть Chromecast. UPD 5 от 11.08.2024: еще способы для владельцев Яблока. Способ 8 (iOS, macOS) Простой и быстрый способ. Качаем Unicorn HTTPS из AppStore. Запускаем приложение, нажимаем на переключатель, устанавливаем предложенный конфиг. Запускаем YouTube и смотрим! Unicorn HTTPS – это аналог ByeDPIAndroid, только для iOS. Приложение бесплатное, без рекламы. Настройки, по сравнению с ByeDPIAndroid, примерно идентичны. Способ 9 (iOS, macOS) Неудобный способ. Запускаем Safari, переходим в «Дополнения» -> Experimental Features, выбираем HTTP3. Заходим на YouTube и смотрим. Неудобен способ тем, что смотреть придется в браузере. UPD от 15.08.2024: способ для тех, кто хочет «поставить и забыть». Способ 10 (Windows, macOS, Android) Этот способ может не работать на некоторых провайдерах, либо не работать вовсе! Быстрый и удобный способ. Нужна полная версия программы! Стоит дешевле чашки кофе – 50 руб/мес. Заходим на сайт adguard.com, выбираем свою систему из списка и скачиваем установщик. Для захода на сайт нужен VPN, после скачивания установщика его можно выключить. Если у Вас Windows или macOS: Устанавливаем программу, проходим быструю настройку, открываем меню «настройки» сверху окна программы. Выбираем вкладку «Антитрекинг», включаем переключатель, листаем в самый низ меню. Включаем пункт «Защита от DPI», заходим на YouTube и смотрим! Если у Вас Android: Устанавливаем приложение, проходим быструю настройку, нажимаем на щит снизу. Выбираем вкладку «Защита от трекинга», уровень защиты – пользовательский, листаем в самый низ меню. Включаем пункт «Защита от DPI», заходим в приложение YouTube и смотрим! Если у Вас нет пункта «Защита от DPI» - обновите AdGuard. UPD от 21.08.2024: про способы для ТВ тоже не забыл. Как скинуть и установить .apk на Android TV Передача файлов: Поддерживаются любые типы файлов, не только .apk. Качаем Send Files to TV из Google Play, устанавливаем на телефон и ТВ. Выбираем свой ТВ из списка и отправляем файлы! Установка приложений: Качаем FX File Explorer из Google Play на ТВ. Можно использовать любой совместимый файловый менеджер. Запускаем, находим нужный .apk, устанавливаем. Способ 11 (Android, Android TV) Способ для телефонов и ТВ. Если у Вас Android: Качаем PowerTunnel с GitHub, устанавливаем. Запускаем, нажимаем на кнопку «Connect», даем разрешение на подключение к VPN. Запускаем YouTube и смотрим! Если у Вас Android TV: Кидаем .apk на ТВ и устанавливаем. Запускаем, нажимаем на кнопку «Connect», даем разрешение на подключение к VPN. Запускаем YouTube и смотрим! Если у Вас все равно не работает YouTube – проверьте, чтобы в настройках PowerTunnel был включен плагин «LibertyTunnel» и «DNS Resolver». UPD от 24.08.2024: еще способ для ТВ. Способ 12 (только Android TV) Способ для ТВ без использования VPN. Android-телефоны, LG Web OS, Samsung Tizen – НЕ ПОДДЕРЖИВАЮТСЯ!! SmartTube не существует ни в одном магазине приложений, установка только с GitHub, будьте внимательны!! Скачиваем .apk, кидаем на телевизор, устанавливаем. Запускаем, даем нужные разрешения. Смотрим! Для обновления SmartTube зайдите в меню «О программе», не нужно его переустанавливать. SmartTube – аналог YouTube ReVanced для Android TV. Приложение режет рекламу, подойдет для просмотра через VPN. UPD от 31.08.2024: способ в два клика. Способ 13 (Для всех ОС) Быстрый способ. Будет реклама, так как это всего лишь web-прокси. Переходим на сайт, вставляем ссылку на видео. Смотрим! Внимание!! Входите в google-аккаунт через прокси на свой страх и риск!! UPD от 08.09.2024: еще один способ без рекламы. Способ 14 (Для всех ОС) Способ без рекламы. В этом способе описана только подготовка VDS. Берем VDS на любом хостинге в локации «Россия». Подключаемся под root, меняем пароль на свой командой passwd. Вас попросят ввести пароль два раза. Не ставьте простой пароль, иначе Ваш VDS взломают!! Подготавливаем систему: Если у Вас Ubuntu или Debian: apt update -y && apt upgrade -y apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" apt install -y docker-ce docker-ce-cli containerd.io docker-compose systemctl enable docker && systemctl start docker docker run hello-world Если у Вас CentOS: yum update yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io sudo systemctl enable docker && sudo systemctl start docker docker run hello-world Если Вам не выдало никаких ошибок, система готова к дальнейшей установке VPN. Далее все зависит от Ваших потребностей, в этом разделе есть инфа. На форуме есть клубы, где все описано подробно. Для получения доступа нужна подписка. UPD от 14.09.2024: гайд для тех, у кого перестал работать GoodbyeDPI. Восстановление работы GoodbyeDPI Если не устанавливали программу как службу (не выполняли пункт 8 или 10 из способа 3): Открываем 1_russia_blacklist.cmd в текстовом редакторе, в строке start "" goodbyedpi.exe -5 --blacklist ..\russia-blacklist.txt меняем -5 на -1 или -7, сохраняем изменения. Запускаем 1_russia_blacklist.cmd от имени администратора, проверяем работу YouTube! Если устанавливали программу как службу (выполняли пункт 8 или 10 из способа 3): Запускаем service_remove.cmd от имени администратора, перезагружаем комп. Это удалит GoodbyeDPI с нерабочей конфигурацией. Открываем service_install_russia_blacklist.cmd в текстовом редакторе, в строке sc create "GoodbyeDPI" binPath= "\"%CD%\%_arch%\goodbyedpi.exe\" -5 --blacklist \"%CD%\russia-blacklist.txt\"" start= "auto" меняем -5 на -1 или -7, сохраняем изменения. Запускаем service_install_russia_blacklist.cmd от имени администратора, перезагружаем комп, проверяем работу YouTube! UPD от 19.09.2024: новый релиз GoodbyeDPI со встроенным фиксом YouTube. Скачиваем релиз, распаковываем архив. Запускаем 1_russia_blacklist_YOUTUBE.cmd от имени администратора. Проверяем работу YouTube. Если не сработало, запускайте 1_russia_blacklist_YOUTUBE_ALT.cmd от имени администратора. UPD от 22.09.2024: еще один фикс для GoodbyeDPI. Восстановление работы GoodbyeDPI 2 Заходим на сайт, выбираем 116 цифр и один результат. Открываем в текстовом редакторе тот файл, который запускаете, например, 1_russia_blacklist.cmd, после строки "sc create "GoodbyeDPI" binPath = "%CD%\%_arch%\goodbyedpi.exe\" ставим пробел, вставляем -9 -e1 -q --fake-gen 29 --fake-from-hex ВАШИ_ЦИФРЫ_ИЗ_ГЕНЕРАТОРА и сохраняем изменения. Это все должно быть в до ключевого слова "--blacklist" Запускаем GoodbyeDPI и проверяем работу YouTube. UPD от 26.09.24: задушили ByeDPIAndroid. Восстановление работы ByeDPIAndroid Заходим на GitHub разработчика, скачиваем релиз с тегом «Latest». Не удаляя старую версию, устанавливаем новую. Запускаем ByeDPIAndroid, нажимаем на кнопку «Connect». Проверяем работу YouTube! Для дополнительных настроек нажимаем на шестеренку в правом верхнем углу, затем выбираем пункт UI editor. UPD от 15.10.2024: краткий обзор ситуации. SpoofDPI больше не работает, ждем фикса от разраба. У меня перестал работать ByeDPIAndroid и GoodbyeDPI, даже с фиксами из способов от 19.09.2024 и 22.09.2024. Все остальное работает без изменений (пока что)
    2 балла
  15. Привет. Делал все по инструкции на самом кенетике выполняя каждый пункт. Все завелось с первого раза и заработало. Пытался zapret установить на роутер ксяоми под openwrt и чет не смог реализовать плюнул до лучших времен. Из apk под андроид хорошо работает DPI Tunnel при наличии root-прав.
    2 балла
  16. Браузерные расширения для "ускорения YouTube" могут представлять угрозу. НЕ УСТАНАВЛИВАЙТЕ ИХ!! Почему? Объясняю: Доступ к данным НА ВСЕХ САЙТАХ – могут украсть Ваш логин, а потом начать брутфорс. Нет информации о разработчике. При включении расширения Google выдает предупреждение о подозрительной активности. Кто знает, что у расширения "под капотом"?. Много отзывов о нерабочем расширении. Если уже установили – удалите и поменяйте пароли на сайтах, не испытывайте судьбу! Предупрежден – значит вооружен
    2 балла
  17. UPD 4 от 08.08.2024: радостная новость для владельцев Яблока! Способ 7 (iOS, macOS) Без VPN и команд. Открываем AppStore и скачиваем BluePlayer – аналог YouTube ReVanced. Приложение поддерживает все возможности YouTube Premium и Spotify, не имеет рекламы, есть Chromecast
    2 балла
  18. UPD 3 от 07.08.2024: Способ 6 (Linux, macOS) Еще один быстрый и удобный способ. Открываем "Терминал". Если у Вас Linux (не macOS, это важно) – вводим команду для определения архитектуры: dpkg --print-architecture Если у Вас Mac на intel: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64 Если у Вас Mac на Apple Silicon (M1, и т.д): curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-arm64 Если у Вас Linux на amd64: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-amd64 Если у Вас Linux на arm: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm Если у Вас Linux на arm64: curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm64 Эти команды скачают и запустят скрипт установки SpoofDPI. Папка установки по умолчанию: ~/.spoof-dpi/bin Если установка успешна, вы увидите "Successfully installed SpoofDPI". Далее, вводим команду: export PATH=$PATH:~/.spoof-dpi/bin Она добавит переменную окружения для запуска SpoofDPI в любой папке. Вводим команду: spoof-dpi Если все прошло успешно, вы увидите "SPOOFDPI". Поздравляю, все работает! Если у вас Mac, и, после ввода spoof-dpi Вам выдало ошибку "bad CPU type in executable: spoof-dpi", установите Rosetta командой: softwareupdate --install-rosetta --agree-to-license После установки Rosetta повторите запуск SpoofDPI
    2 балла
  19. О! Вот спасибо за разъяснение по настройке. А то я включил, а интернет вообще пропал на смартфоне) Вместо прокси поставил vpn и галочку в пункте Desync only HTTPS and TLS и заработало!
    2 балла
  20. UPD 2 от 06.08.2024: @CO_PY, приветствую, спасибо за наводку! Способ 5 (только для Android) Удобный и быстрый способ. Качаем ByeDPIAndroid с GitHub, устанавливаем. Запускаем, нажимаем на кнопку «Connect», даем разрешение на подключение к VPN. Запускаем YouTube и смотрим – профит! По умолчанию прога создает self-hosted VPN и меняет IP-адрес DNS-сервера на 9.9.9.9 на случай, если провайдер спуфит DNS. В настройках рекомендую выбрать "Desync only HTTPS and TLS", дабы не ломать полезный трафик, но, если "не горит", можно не ставить. Если не работает, попробуйте поменять режим "VPN" на "Proxy" в настройках приложения, у меня заработало в стоке
    2 балла
  21. Всем привет! Понравилась мне тема с отправкой уведомлений состояния в телеграм, и после одной ситуации, когда контейнер неожиданно не запустился, сделал для себя такую реализацию сервиса. https://github.com/DigneZzZ/monny-docker/ При установке вам необходимо будет ввести TelegramBotID и ChatID. ChatID это место куда бот будет писать сообщения. В моем случае это отдельный Канал (только для меня) где сидят мои боты и шлют уведомления при необходимости. Сервис установит автоматически все необходимые зависимости для работы Python скрипта. Чтобы посмотреть перечень доступных команд: monny help Чтобы удалить сервис из системы: monny uninstall Чтобы остановить сервис (если вдруг вам спамит слишком много, например, в случае долго рестарта): monny stop Чтобы запустить: monny start В принципе на это основной функционал заканчивается Если понравилось и хотели бы еще увидеть возможность выбирать контейнеры для мониторинга, пишите постараюсь реализовать. Установка: bash <(curl -L -s https://raw.githubusercontent.com/DigneZzZ/monny-docker/main/setup_monny.sh)
    2 балла
  22. https://github.com/mag37/dockcheck Проверка Docker контейнеров на наличие обновлений. Скрипт может просто уведомлять в том числе и в телеграм или сразу обнавлять контейнеры.
    2 балла
  23. Вступление или зачем нам вообще это надо? Во первых это просто интересно и полезно иметь свои собственные локальные ресурсы. Во вторых (хотя наверное это все таки во первых…) в наше неспокойное время порой лучше иметь такие вещи как пароли под своим полным контролем. Даже если у вас нет своего личного сервера но есть рабочий компьютер возможно есть смысл поднять менеджер паролей на данном компьютере в виртуальной среде. Какие главные преимущества дает Bitwarden развернутый локально: 1. Безопасность, вы полностью контролируете свои пароли (но вы же должны заботиться о бекапах) 2. Возможность использовать платные функции которые не доступны на основном Bitwarden 3. Кросплатформеность 4. Динамическая синхронизация между устройствами (если сервер доступен только локально можно выполнять синхронизацию раз в день) 5. Возможность добавления в менеджер паролей ключи для 2FA, при этом эти ключи будут синхронизированы со всеми вашими устройствами. Отдельно хочу отметить что даже если ваш сервер Bitwarden будет не доступен длительное время то вы сможете использовать менеджер паролей на вашем телефоне, синхронизация произойдет при следующем подключении к серверу. Что нам понадобиться: 1. Линукс сервер или виртуальная машина на 512мб ОЗУ (этого даже с избытком). 2. Немного времени и умение читать инструкцию (иногда гуглить если что-то не понятно) 3. Домашний dns сервер типа adguard home или pi-hole (не обязательно) Так же настоятельно рекомендую выполнять данную настройку через portainer так как это может избавить от некоторых проблем с запуском nginx. Все настройки приведены для установки без использования portainer но разница заключается только в том как вы будете создавать файлы docker-compose, все остальные файлы и директории создаем по инструкции. Подготовка сервера Выполним первоначальную настройку сервера для установки. Все дальнейшая установка будет выполняться с использованием docker-compose. Обновляем репозитории и пакеты: apt update -y && apt upgrade -y Устанавливаем Docker: apt install curl && curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh Запускаем и включаем службу Docker systemctl start docker && systemctl enable docker Устанавливаем Docker Compose: curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose Для доступа в панель администратора Vaultwarden (Bitwarden) генерируются уникальный ключ, который в открытом виде храниться в файлах настроек сервера менеджера паролей. Данный ключ не дает доступа к данным конечных пользователей, но он позволяет нанести значительный вред системе вплоть до полной поломки. Разработчики Vaultwarden (Bitwarden) рекомендуют использовать программу argon2 установим ее. apt install argon2 Установка и настройка менеджера паролей Bitwarden Менеджер паролей Bitwarden не является opensource проектом, но у данного проекта существует полностью совместимая opensource копия серверной части под названием vaultwarden. Более подробно можете изучить в официальном репозитории проекта. Именно процесс развертки серверной части vaultwarden рассмотрим далее. Установка будет выполняться в виде docker-compose проекта. Для этого необходимо подготовить дополнительные файлы. Создаем основную рабочую папку где будут располагаться файлы, в том числе зашифрованные базы данных. Для бекапа данных достаточно скопировать файлы данной директории и поместить в новый проект. mkdir /vaultwarden cd /vaultwarden При первоначальной установке с базовыми настройками vaultwarden генерирую пароль для панели администратора в виде большого ключа символов который храниться в открытом виде в файле конфигурации сервера. Для обеспечения безопасности сервера необходимо устанавливать сервер с заранее созданным паролем администратора. Более подробно можно почитать в официальной справке Создадим зашифрованный пароль с использованием argon2 echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1 Результат вывода будет шифрованное представление пароля вида: Копируем полученный результат в файл параметров запуска vaultwarden nano .env Вставляем полученный ключ в файл с указанием параметра, не каких изменений в строку вносить не надо. Обязательно используйте свой пароль и свой результат шифрования для обеспечения безопасности!!!! VAULTWARDEN_ADMIN_TOKEN=$argon2id$v=19$m=19456,t=2,p=1$YnV6N0lrZHZoOWpGdS9rcmdIWHR5RW1zQjJtVU4xdHhHNis2STVQN25uTT0$wEoFtCRQBcbayI6z+tVFZwV1mT2pXOLicEJdXq4st2w Сохраняем файл и создаем файл docker-compose nano docker-compose.yaml Вставляем в файл следующий код: version: "2.1" services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden network_mode: bridge environment: - PUID=1000 - PGID=1000 - TZ=Europe/Moscow - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} volumes: - /vaultwarden:/data - /letsencrypt:/letsencrypt ports: - 7277:80 - 3012:3012 restart: unless-stopped В папке /vaultwarden будут размещены основные файлы сервера vaultwarden в том числе зашифрованные базы данных паролей. Папка /letsencrypt используется как общая папка для хранения ssl сертификатов, данный параметр не обязательный если не планируете использовать vaultwarden без прокси сервера. Запускаем сборку и установку контейнера docker-compose up -d Выходим в корневой каталог cd Фактически на данном этапе установка менеджера паролей закончена и интерфейс доступен по адресу http://IP_SERVER:7277/#/login Для доступа в админ панель http://IP_SERVER:7277/admin На данном этапе доступна настройка серверной части через админ панель, но для домашнего использования можно использовать стандартные параметры. Проверяем доступ к административным настройкам сервера перейдя по адресу http://IP_SERVER:7277/admin Для входа используем пароль который указывали в команде шифрования пароля: MySecretPassword Для использования как менеджер паролей необходимо создать пользователя на странице http://IP_SERVER:7277/#/login Создаем нового пользователя И видим такое сообщение Справка vaultwarden дает несколько решений по исправлению данной проблемы но по факту все они сводятся к получению полноценного https соединения с сервером. У нас есть несколько способов решения данной проблемы: 1. Настройка полноценного проброса сервера во внешний интернет (с использованием доменного имени или средств на подобии keendns) 2. Создание https соединения до сервера в локальной сети. 3. Выпуск само подписанных сертификатов с добавлением в список доверенных (способ не рекомендуется, полноценная работа не проверялась). Установка прокси сервера nginx Для решения задачи настройки https и банального удобства воспользуемся прокси сервером nginx. Прокси сервер позволяет избежать необходимости указывать порт на котором находится конкретный сервис при обращении к нему. Создадим основной рабочий каталог nginx. mkdir /nginx Перейдем в каталог и создадим файл docker-compose cd /nginx nano docker-compose.yaml Вставляем в файл следующий код: version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' ports: # These ports are in format <host-port>:<container-port> - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port environment: # Mysql/Maria connection parameters: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "nginx-pm" DB_MYSQL_PASSWORD: "nginx-pm" DB_MYSQL_NAME: "npm" # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - /nginx:/data - /letsencrypt:/etc/letsencrypt depends_on: - db db: image: 'jc21/mariadb-aria:latest' environment: MYSQL_ROOT_PASSWORD: 'npm-root-pm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'nginx-pm' MYSQL_PASSWORD: 'nginx-pm' volumes: - /nginx/mysql:/var/lib/mysql Обязательно изменяем параметры авторизации DB_MYSQL_USER DB_MYSQL_PASSWORD MYSQL_ROOT_PASSWORD Значения одинаковых переменных в блоке app и db должны совпадать. Сохраняем файл и запускаем контейнер. docker-compose up -d Nginx обязательно должен занимать 80 и 443 порты, он будет выполнять роль регулировщика который будет направлять по заданному адресу на конкретный порт нашего сервера. Проверяем работу наших контейнеров docker ps Мы видим что запущено три контейнера. Переходим по адресу http://IP_SERVER:81 в панель администратора nginx. Данные для авторизации по умолчанию: Email: admin@example.com Password: changeme Ps: Иногда при первом запуске можно словить ошибку 502 Bad Gatewey при указании логина и пароля, в таком случае советую воспользоваться справкой по nginx или попробовать переустановить контейнер, на сколько я понял эта проблема самого веб интерфейса настройки nginx. После первого входа меняем логин и пароль пользователя. На этом работа с самим сервером закончена, все дальнейшие настройки выполняем через веб интерфейс. Настройка HTTPS доступа к локальным серверам без внешнего доступа. Для настройки https необходимо получить доменное имя второго уровня или старше. Можно купить свой домен на любом из сервисов который предоставляет услугу регистрации (домены в зоне ru стоят в среднем 300-400 рублей в год). Для настройки локального HTTPS необходимо обратить внимание на следующее. Если у вас нет белого ip адреса или динамического ip, то есть по если вы открываете 80 порт на вашем роутере и пробуете зайти по ip адресу который получил роутер в интернет то вам необходимо использовать вариант альтернативный вариант получения сертификата. Стандартный сценарий подразумевает доступ к вашему сайту на 80 порту из интернета. Какие варианты получения сертификата у нас есть если мы не хотим или не можем открыть внешний доступ. Можно купить сертификат у нашего днс провайдера или воспользоваться получением сертификатов через службу DNS Challeng из платных хостеров в ру сегменте услугу точно предоставляет reg.ru (более подробно можно посмотреть в настройках nginx далее). Но что если желания тратить деньги нет вообще? Не беда есть бесплатные альтернативы. Существуют бесплатный dns провайдер duckdns который позволяет зарегистрировать до пяти бесплатных доменов третьего уровня на одну четную запись. Заходим на https://www.duckdns.org/ и проходим простую регистрацию. Для дальнейших настроек нам надо получить token с основной страницы Создаем новый домен Именно адрес test-domen222.duckdns.org и будет тем адресом по которому мы разместим наш ресурс под https. Возвращаемся в nginx Переходим в раздел Proxy Hosts и создаем новую запись Переходим на закладку SSL и выбираем режим получения сертификата по DNS, выбираем провайдера DuckDNS и указываем токен с главной страницы DuckDNS. Токен указываем без скобок и кавычек прямо как он указан на сайте. Указываем электронную почту (не обязательно живую проверки нет) куда будет приходить информация о вашем сертификате и соглашаемся с условиями. После того как окно будет закрыто (может висеть достаточно долго) мы получим готовый сертификат для указанного нами адреса dns. Все полученные нами сертификаты расположены в папке /letsencrypt/live/ дальнейшем сам nginx будет поддерживать сертификаты в данной папке в актуальном состоянии, что можно использовать для других сервисов. На странице DuckDNS поле ip у созданного домена заполниться вашим текущим Ip, если у вас не белый ip адрес можете его оставить без изменений или указать любой хоть 0.0.0.0 для нашей задачи мы не будем использовать мировой DNS. Мы почти закончили осталось только объяснить нашим устройствам что если мы указываем адрес test-domen222.duckdns.org нам надо идти не в общий интернет а на наш реверс прокси nginx. Для этого воспользуемся перезаписью dns запросов. Если вы используете adguard home или pi hole в локальной сети (очень рекомендую) то делается это проще простого. Находим раздел перезапись dns И добавляем правило по которому обращение к созданному нами адресу ведет на наш nginx. Все после сохранения настройка закончена, для корректного обращения к адресу возможно необходимо сбросить кеш устройства или воспользоваться режимом инкогнито у браузера. Если же в вашей сети нет локального dns можно воспользоваться встроенным переопределением dns windows. Подробнее можете ознакомиться тут На этом все наши настройки закончены, можно использовать локальный https для доступа к локальным ресурсам без проброса во внешний мир. Отключение панели администратора после настройки Для отключения панели администратора по адресу test-domen222.duckdns.org/admin надо в файле параметров vaultwarden расположенного по пути /vaultwarden/config.json закомментировать строку содержащую admin_token и перезапустить контейнер. А так же из docker-compose файла убрать строку описание токена: - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} После этого при попытке зайти на админ панель будем получать предупреждение Для включения выполняем обратные действия, раскомментируем токен и перезапустим контейнер. Настройка клиентов Bitwarden Для использования можем установить расширение основного Bitwarden и изменить в нем сервер который хотим использовать. Аналогичные настройки по указанию собственного хостинга есть в мобильном и десктоп (не рекомендую) клиенте.
    2 балла
  24. Вступление, или немного о том зачем и почему В моей домашней системе за последнее время накопилось значительное число сервисов, для того что бы их использовать в какой то момент стало банально не удобно и не рационально использовать доступ по http и порту. Кроме того существует ряд сервисов которое в принципе не будут работать без использования шифрования. Первоначально в моей системе использовался реверс прокси nginx proxy manager с бесплатными duckdns адресами. Со временем я перешел на использование своего домена. Важной особенностью моего сценария использования являлось то что реверс прокси использовалось только внутри локальной\впн сети и не имело внешнего доступа на 80/443 порту в сеть. Для получения сертификата обычными средствами необходимо что бы сервер мог оставить запись на 80 порту, но такой сценарий не выполним если у вас нет белого ip или возможности пробросить порты. Сценарий со временным открытием портов для обновления так же мной был признан не самым удобным по причине того что можно банально забыть. Благо для такого есть решение под названием dns challenge. При использовании такого метода подтверждения подлинности сайта выполняется путем изменения dns записи с использованием api. Такой сервис предоставляет ряд провайдеров dns, из подходящих под мои задачи это cloudflare и duckdns. Для использования многих сервисов cloudflare таких как api и защита от ddos не обязательно покупать у них домен, достаточно просто перенести управление в cloudflare. Все бы было хорошо система работала с использованием nginx proxy manager, а для внешнего доступа к ресурсам использовалась встроенная публикация сервисов keenetic. Но в один не особо прекрасный момент использования реверс прокси я столкнулся с проблемой что перестали обновляться автоматически сертификаты. Проблема как оказалось достаточна старая и исправления к ней полноценного не было, да и сам npm как по мне казался несколько избыточным и перегруженным для моего сценария использования. Таким образом началось изучение альтернативных решений для организации реверс прокси. Две самые популярные альтернативы из доступных решений это traefik и caddy. traefik - это достаточно интересное и универсальное решение, но оно в первую очередь делает упор на динамически изменяемые системы. Очень хорошо работает с докер контейнерами путем установки настроек в метках контейнеров. Но в моем кейсе использования динамическое масштабирование не планировалось и существовало много сервисов которые были запущены без использования докера. caddy в свою очередь является очень легким в настройке сервисом с большим количеством различных модулей на все случаи жизни. Единственным минусом можно выделить отсутствие интерфейса для настройки, все настройки задаются в файле (но об этом дальше). В данной статье я не планирую проводить сравнение возможностей traefik и caddy подобных сравнений на просторах сети достаточно, для моей задачи больше подошел caddy. Все дальнейшее развертывание будет показано с использованием docker-compose. Запуск контейнеров и сборка контейнеров выполнялась в portainer, но вы можете просто создать свой docker-compose файл и запустить без использования portainer. Базовый вариант настройки Сaddy Отдельно стоит отметить что сам по себе caddy крайне легковесный но и ограниченный в функционале, значительная часть возможностей предложена в дополнительных модулях. Эти модули можно как добавлять самому при сборке докер контейнера или при запуске apt пакета так и использовать готовые сборки docker с включенными модулями. На самом деле настройка реверс прокси в Caddy это крайне простая задача. Запустим докер контейнер с использованием следующего docker-compose version: '3.8' services: caddy: image: 'slothcroissant/caddy-cloudflaredns:latest' container_name: caddy restart: unless-stopped ports: - '80:80' - '443:443' environment: ACME_AGREE: true CLOUDFLARE_API_TOKEN: "aaaaaaaaadssssssssssssssssss" CLOUDFLARE_EMAIL: "asdasdasd@gmail.com" volumes: - /docker/caddy/data:/data - /docker/caddy/config:/config - /docker/caddy/Caddyfile:/etc/caddy/Caddyfile В данном примере использован готовый caddy контейнер для получения сертификатов с использованием dns challenge cloudflare. Так же существуют готовые сборки для других провайдеров например вот тут предложена неплохая подборка самых распространенных сборок. Для получения с сертификата через dns chelenge необходимо создать api ключ на cloudflare, подробней об этом приведено тут. Теперь создадим файл конфигурации на основании которого будет работать наш сервер. Этот файл называется Caddyfile он не имеет расширения и должен располагаться по пути /docker/caddy/Caddyfile (для данного варианта docker-compose). nextcloud.mydomain.ru { tls myemail@gmail.com { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } reverse_proxy 192.168.0.101:1234 } Фактически у нас есть всего две секции tls и reverse_proxy. Секция tls отвечает за получение сертификата, email можно не указывать он необходим для получения напоминаний от acme о продлении сертификатов. Секция reverse_proxy описывает сами правила переадресации, для подавляющего большинства сервисов такого варианта настройки будет достаточно, но бывают исключения например vaultwarden. vaultwarden.mydomain.ru { tls myemail@gmail.com { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } reverse_proxy 192.168.0.132:10380 { header_up X-Real-IP {remote_host} } } Обычно если сервис требует особых настроек для реверс прокси в документации приводятся примеры для самых популярных решений, в том числе и caddy. Для применения изменений необходимо перезапустить докер контейнер. На этом простой вариант настройки caddy закончен, если вы не планируете использовать его для публикации в интернет то можно использовать как есть и наслаждаться. Главное не забыть правильно указать dns записи. Если в настройках доменов в cloudflare указать внутренний ip например 192.168.0.132 тогда при использовании их dns можно обойтись без перезаписи и ходить только внутри своей локальной сети по https. А теперь все становиться чуточку сложнее... настройка Caddy для публикации в интернет Для использования fail2ban нам необходимо настроить правильное и удобное логирование в caddy. Сам по себе caddy формирует логи в формате json которые в принципе достаточно удобно парсятся но с ними не очень удобно работать для fail2ban, в таком случаем нам на помощь приходит модуль transform-encoder данный модуль позволяет указать шаблон форматирования для логов. Готового решения докер контейнера caddy-dns/cloudflare и caddyserver/transform-encoder увы найти мне не удалось так что будем создавать свой докер образ. Для этого нам понадобиться следующий Dockerfile. FROM caddy:builder AS builder RUN xcaddy build \ --with github.com/caddy-dns/cloudflare \ --with github.com/caddyserver/transform-encoder \ --with github.com/abiosoft/caddy-exec FROM caddy:latest COPY --from=builder /usr/bin/caddy /usr/bin/caddy Dockerfile размещаем в той же папке где и наш docker-compose файл со следующим содержимым version: '3.9' services: caddy: image: caddy-cloudflare-transform:latest build: context: . dockerfile: ./Dockerfile container_name: caddy restart: unless-stopped cap_add: - NET_ADMIN ports: - 80:80 - 443:443 environment: ACME_AGREE: true CLOUDFLARE_API_TOKEN: "aaaaaaaaassdsadfasfasf" CLOUDFLARE_EMAIL: "myemail@gmail.com" DOMAIN: mydomain.ru volumes: - /docker/caddy/data:/data - /docker/caddy/config:/config - /docker/caddy/logs:/logs - /docker/caddy/Caddyfile:/etc/caddy/Caddyfile Или можно воспользоваться моим собранным образом размещенным в репозитории https://github.com/Deniom3/caddy-cloudflare-transform Тогда docker-compose файл будет иметь вид version: '3.9' services: caddy: image: ghcr.io/deniom3/caddy-cloudflare-transform:latest container_name: caddy restart: unless-stopped cap_add: - NET_ADMIN ports: - 80:80 - 443:443 environment: ACME_AGREE: true CLOUDFLARE_API_TOKEN: "aaaaaaaaassdsadfasfasf" CLOUDFLARE_EMAIL: "myemail@gmail.com" DOMAIN: mydomain.ru volumes: - /docker/caddy/data:/data - /docker/caddy/config:/config - /docker/caddy/logs:/logs - /docker/caddy/Caddyfile:/etc/caddy/Caddyfile Отдельно обращаю внимание на environment DOMAIN она нам нужна для более простого (и безопасного) формирования Caddyfile. Создадим Caddyfile с такой структурой: (common) { header /* { -Server } } (cloudflare) { import common tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } } (local) { @allowed remote_ip 192.168.0.0/24 handle { respond 401 } } { log access-log { include http.log.access output file /logs/access.log { roll_keep_for 48h } format transform `{ts} {request>headers>X-Forwarded-For>[0]:request>remote_ip} {request>host} {request>method} {request>uri} {status}` { time_format "02/Jan/2006:15:04:05" } } } jackett.{env.DOMAIN} { import local import cloudflare log handle @allowed { reverse_proxy 192.168.0.134:9117 } } home-assistant.{env.DOMAIN} { import cloudflare log reverse_proxy 192.168.0.125:8123 } vaultwarden.{env.DOMAIN} { import cloudflare log reverse_proxy 192.168.0.132:10380 { header_up X-Real-IP {remote_host} } } Пройдемся немного по блокам что бы понимать для чего каждый из них нужен. Секции которые объявляются в скобках () являются импортируемым, это настройки которые мы определяем один раз и можем использовать для наших остальных настроек путем вызова через import. При этом каждый такой блок может импортировать в себя другие, тем самым создавая сложные структуры. Секция common отвечает за удаление из ответа сервера имени сервера в нашем случае Caddy, это небольшая перестраховка для того что бы злоумышленники не могли по виду сервера использовать его уязвимости. Секция cloudflare отвечает за настройки получения сертификата с использованием dns challenge. Секция local служит для ограничения доступности к опубликованному сайту. В remote_ip указываются подсети или ip для которых доступ должен быть РАЗРЕШЕН, все остальные будут блокироваться и получать ответ указанный в handle respond в данном случае 401. Эта секция позволяет нам разделить и использовать один реверс прокси для внешней публикации и внутренней локальной сети. Еще одна важная секция необходимая для работы f2b это секция описания логов и их преобразования. Переопределение настроек логирования без указания конкретных hostname применяет эту настройку на все. В данном примере файл храниться в /logs/access.log внутри контейнера который соответствует на сервере /docker/caddy/logs Логи будут храниться 48 часов. Теперь рассмотрим более подробно добавление конкретных сайтов, если нам надо использовать реверс прокси только для локальной сети используем import local и запись как на примере с jackett, при этом домен можно подставлять путем автозамены как в примере, так как мы его передавали в переменные окружения при запуске контейнера. Если нам надо что бы наш реверс прокси пускал не только с ограниченного списка сетей то используем запись как в примере home-assistant, тут у нас нет секции local и простая запись reverse_proxy без проверки допустимых сетей. Если для сайта необходимо включить fail2ban обязательно указываем что должны вестись логи путем добавления записи log. На этом основная настройка закончена, прокидываем 443 порт с роутера на наш сервер через переадресацию портов и наслаждаемся нашествием китайских ботов. Кыш ботнет, или настройка f2b в докере для caddy Для своей работы f2b использует логи которые предоставляют другие сервисы, на предыдущем этапе мы настроили логи caddy для их использования с f2b теперь запустим сам docker контейнер с f2b. version: "3.9" services: fail2ban: image: crazymax/fail2ban:latest container_name: fail2ban network_mode: host cap_add: - NET_ADMIN - NET_RAW environment: F2B_LOG_LEVEL: INFO F2B_LOG_TARGET: STDOUT F2B_DB_PURGE_AGE: 1d volumes: - /docker/fail2ban/data:/data - /docker/caddy/logs/access.log:/docker/caddy/logs/access.log:ro restart: unless-stopped Обязательно даем право на чтение файла логов доступа caddy - /docker/caddy/logs/access.log:/docker/caddy/logs/access.log:ro Если данного файла еще нет то может возникнуть ошибка в работе так как docker создаст вместо файла папку с именем access.log Для исправления необходимо зайти на несколько сайтов через реверс прокси и проверить что логи создаются. Теперь настроим параметры работы f2b В папке /docker/fail2ban/data/filter.d размещаем файл caddy-custom.conf со следующими настройками. При такой настройке все обращения которые получили ответ 401 будут попадать в бан лист. # data/filter.d/caddy-custom.conf [Definition] # catch all lines that terminate with an unauthorized error failregex = <HOST> \S+ \S+ \S+ (401)$ ignoreregex = В папке /docker/fail2ban/data/jail.d файл caddy.conf [caddy] backend = auto enabled = true chain = FORWARD protocol = tcp port = http,https filter = caddy-custom maxretry = 3 bantime = 86400 findtime = 43200 logpath = /docker/caddy/logs/access.log ignoreip = 192.168.0.0/24 Запись ignoreip служит для того что бы наша локальная сеть в случае каких то ошибок с нашей стороны не улетела в бан. Перезапускаем контейнер и наслаждаемся спокойной жизнью. Но это не точно.... Подсказки и заметки на полях Некогда не удаляет файл логов при работе caddy, в некоторых случаях система может повести себя крайне не адекватно и файл больше не создастся. Если это необходимо перед удалением обязательно останавливать контейнер. Ротация логов настраивается отдельно в Caddyfile Для того что бы разбанить кого то в f2b при использовании в докере нам необходимо для стандартных команд добавлять команды по обращению внутрь контейнера: Выводим статус fail2ban docker exec -it fail2ban fail2ban-client status Выводим статус конкретной цепочки (имя цепочки берётся из Jail list предыдущей команды) docker exec -it fail2ban fail2ban-client status ИМЯ_ИЗ_JAIL_LIST Разблокируем требуемый IP-адрес из соответствующей цепочки docker exec -it fail2ban fail2ban-client set ИМЯ_ИЗ_JAIL_LIST unbanip IP_ДЛЯ_РАЗБЛОКИРОВКИ Для случая с использованием caddy команда разбана будет выглядеть так docker exec -it fail2ban fail2ban-client set caddy unbanip IP_ДЛЯ_РАЗБЛОКИРОВКИ Спасибо за внимание
    2 балла
  25. Введение В этой статье мы рассмотрим, как настроить автоматическое резервное копирование данных с использованием Rclone и Cloudflare R2. Мы создадим bash-скрипт, который будет создавать архив, загружать его в Cloudflare R2 и отправлять уведомления через Telegram. Также добавим этот скрипт в crontab для регулярного выполнения каждые 4 часа. Все это будет создавать архивы нашего мэйн сервера Marzban. Что такое Rclone? Rclone – это клиент командной строки для обеспечения работы и синхронизации файлов и директорий с облачными хранилищами. Облачный провайдер поддерживает множество, включая Amazon S3, Google Drive, Dropbox, и, конечно, Cloudflare R2. Rclone используется для резервного копирования файлов, синхронизации файлов между различными облачными и локальными хранилищами. Различные функции Rclone включают: Synchronization – синхронизация файлов между локальными хранилищами и облачными провайдерами. Copy – копирование файлов между различными папками облачного хранилища. Шифрование – шифрование файлов. Automator – работа по расписанию с использованием скриптов и crontab. Поддержка облачных провайдеров: Amazon S3, Google Drive, Dropbox, OneDrive, Cloudflare R2 и других. Что такое Cloudflare R2? Cloudflare R2 – это хранилище объектов, предоставляемое облачной службой безопасности Cloudflare. Оно предназначено для хранения больших объемов данных с минимальными затратами и высокой производительностью. R2 предоставляет доступ к данным через API, совместимый с S3, что позволяет использовать такие инструменты, как Rclone, для управления файлами. Преимущества Cloudflare R2: Низкие затраты: отсутствие платы за исходящий трафик. Высокая производительность: быстрая доставка контента благодаря глобальной сети Cloudflare. Совместимость с S3: возможность использования существующих инструментов и скриптов для работы с данными. 10ГБ пространство доступно на каждом аккаунте (в сумме всех бакетов) Настройка Cloudflare R2 К сожалению, первым делом, даже чтобы воспользоваться бесплатно, вам нужно будет привязать банковскую карту к своему аккаунту CF. РФ карты не принимает. НО без проблем принимает карты от Cashinout, сервис который я упоминал в этой статье: Вы можете сделать хитро. Оформить карту в Cashinout, пройти верификацию в CF, а затем удалить свою карту (деньги находящиеся на ней вернутся на ваш счет аккаунта Cashinout) Для начала работы с Cloudflare R2 выполните следующие шаги: Создайте аккаунт Cloudflare: Зарегистрируйтесь на сайте Cloudflare и войдите в свой аккаунт. (этот шаг я пропускаю, понимая что у вас он уже есть) Создайте R2 хранилище: В панели управления Cloudflare перейдите в раздел R2. Создайте новый бакет, указав его имя и настройки. Создайте API токен: Перейдите в раздел API Tokens. Нажмите кнопку Create Token. Выберите Введите имя и укажите параметры так как на скриншоте Нажмите Create Token и сохраните ваш токен. (можете пока просто не закрывать окно) Установка и настройка Rclone Установка и настройка Rclone Установите Rclone: curl https://rclone.org/install.sh | sudo bash Настройте Rclone: rclone config Следуйте инструкциям для создания нового удаленного подключения: n) New remote name> s3cf Type of storage to configure. Enter a string value. Press Enter for the default (""). Storage> s3 AWS Access Key ID> YOUR_CLOUDFLARE_ACCESS_KEY AWS Secret Access Key> YOUR_CLOUDFLARE_SECRET_KEY Region to connect to. Enter a string value. Press Enter for the default (""). region> Endpoint for S3 API. Optional. Use an empty string for the default endpoint. Enter a string value. Press Enter for the default (""). endpoint> https://<account-id>.r2.cloudflarestorage.com AWS Access Key ID> YOUR_CLOUDFLARE_ACCESS_KEY AWS Secret Access Key> YOUR_CLOUDFLARE_SECRET_KEY Эти параметры мы получаем из нашего окна с API ключами CF. Когда нужно будет указать в последнем этапе endpoint, вы можете взять их из настроек бакета. openode (из моего примера) вводить не нужно! Готово! Чтобы проверить подключение, вы можете ввести команду: rclone ls s3cf:openode В данном случае s3cf - Это название конфига которое вы создавали на первом шаге rclone config А openode - Это имя бакета которое вы создавали в CF. Создание и настройка bash-скрипта Создайте файл скрипта backup_script.sh в папке /root/: nano /root/backup_script.sh Вставьте следующий код: #!/bin/bash # Переменные для Telegram TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN" TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID" # Папки для архивации SRC_DIRS=("/opt/marzban" "/var/lib/marzban") # Папка для хранения архива DEST_DIR="/root" # Имя архива с датой и временем DATE=$(date +'%Y-%m-%d_%H-%M-%S') ARCHIVE_NAME="OPENODE_backup_$DATE.zip" ARCHIVE_PATH="$DEST_DIR/$ARCHIVE_NAME" # Создание архива zip -r "$ARCHIVE_PATH" "${SRC_DIRS[@]}" # Целевая папка в Cloudflare R2 TARGET_DIR="s3cf:openode/" # Функция для отправки уведомления в Telegram send_telegram_message() { MESSAGE=$1 curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -d chat_id="${TELEGRAM_CHAT_ID}" -d text="${MESSAGE}" } # Загрузка архива в Cloudflare R2 и отправка уведомления if rclone copy "$ARCHIVE_PATH" "$TARGET_DIR"; then send_telegram_message "Архив $ARCHIVE_NAME успешно загружен в Cloudflare R2." # Удаление локального архива после копирования rm "$ARCHIVE_PATH" else send_telegram_message "Ошибка при загрузке архива $ARCHIVE_NAME в Cloudflare R2." fi # Ротация архивов в Cloudflare R2 (оставить только за последние 7 дней) rclone delete --min-age 7d "$TARGET_DIR" Сохраняем. Сделайте скрипт исполняемым: chmod +x /root/backup_script.sh Можем попробовать запустить: ./backup_script.sh Если все прошло хорошо, и уведомления получены в телеграм, то можно настроить crontab: crontab -e Вставляем в пустую строку: 0 */4 * * * /root/backup_script.sh >/dev/null 2>&1 Готово! Каждые 4 часа будут собираться архивы и приходить уведомления.
    2 балла
  26. Всем привет! Поюзал ботов я не мало, и остановился на одном. Очень интересном и универсальном. Репозитория на GitHub - ТУТ Требования: Свой VPS сервер за границей. Да-да. Лучше иметь сервер зарубежный, чтобы избежать потенциального блока на использование API. API ключ от ChatGPT немного навыков обращения с консолью телеграм аккаунт Шаг 1. Регистрируем бота в BotFather. Идём к Батьке всех ботов. Сюда. https://t.me/BotFather Пишем ему команду: /newbot Следуем инструкциям. Создав бота вы получите API ключ. Сохраните отдельно, но не отдавайте никому его! Нам нужен будет этот ключ. Шаг 2. У вас должен быть аккаунт OpenAI, и доступ к ChatGPT. А ещё у вас на аккаунте должны быть кредиты (хотя бы бесплатные 5$) Идём на страницу: API keys - OpenAI API Жмём Копируем этот API в блокнотик себе и не отдаем никому. Он нам будет нужен дальше. Шаг 3. Идём на свой VPS сервер. Рефералки на провайдеров VPS где их можно арендовать размещены тут: Рефералки - opeNode - Mind & Data Space На сервер попали. UPDATE 1.08.2023 Теперь можно просто заюзать скрипт: bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/setup.sh) Ниже инструкция по ручной установке: пишем в консоле: git clone https://github.com/karfly/chatgpt_telegram_bot.git !!! У вас должен быть установлен GIT. Если не установлен, юзай команду: apt install git После этого, идем в папку: cd chatgpt_telegram_bot Теперь нам нужно переименовать конфиг файлы: mv config/config.example.yml config/config.yml mv config/config.example.env config/config.env Теперь нам нужно зайти в конфиг и вставить свои "пять копеек": nano config/config.yml Попав сюда видим: telegram_token: "" openai_api_key: "" use_chatgpt_api: true allowed_telegram_usernames: [] # if empty, the bot is available to anyone. pass a username string to allow it and/or user ids as integers new_dialog_timeout: 600 # new dialog starts after timeout (in seconds) return_n_generated_images: 1 n_chat_modes_per_page: 5 enable_message_streaming: true # if set, messages will be shown to user word-by-word # prices chatgpt_price_per_1000_tokens: 0.002 gpt_price_per_1000_tokens: 0.02 whisper_price_per_1_min: 0.006 Дальше все логично, внутрь ковычек вставляем наши API. В telegram_token: "здесь-апи-ключ" - API ключ от BotFather. В openai_api_key: "здесь-апи-ключ-OpenAI" - сюда ключ от OpenAI. Теперь сделаем так, чтобы пользоваться могли только вы. Для этого нам нужен параметр. В него вставляется НИК в telegram. Несколько аккаунтов разделяются запятой. allowed_telegram_usernames: [durov,BotFather] ОЧЕНЬ ВАЖНО СОБЛЮДАТЬ РЕГИСТР БУКВ (маленькие или БОЛЬШИЕ) - так как в точности называется ваш ник в Tелеграм. ЕСЛИ НЕ УКАЗАТЬ НИКОВ - ПОЛЬЗОВАТЬСЯ СМОЖЕТ КАЖДЫЙ! Ещё можно задать время, сколько будет ждать бот, прежде чем сбросить тему диалога (задается в секундах): new_dialog_timeout: 600 На этом настройки можно заканчивать. Шаг 4. ЗАПУСКАЕМ БОТА docker compose --env-file config/config.env up --build -d На этом всё. Идём в телеграм, пишем своему боту /start И радуемся общению Вот его команды: Моды чата - это то в каком стиле будут даваться ответы. Доступны такие, можно почитать тут: Ещё важная настройка, доступная из диалога - /settings Я рекомендую использовать ChatGPT. Он соответствует версии ChatGPT3.5 Turbo. Он дешевый и ничем не уступает в ответах дорогому GPT-3.5. Там один токен очень дорого стоит. Посчитать токены кстати можно здесь: OpenAI API - TOKENIZER Обратите внимание, текст на русском потребляет в несколько раз больше токенов за одно слово. А вот на английском: Удачи.
    2 балла
  27. Вступление Это четвертая часть о мониторинге домашней системы с использованием influxdb и grafana первая часть про общую настройку и вторая часть про мониторинг proxmox, третья часть про мониторинг роутеров кинетик. Теперь заключительная часть про мониторинг openwrt. Продолжая обсуждение мониторинга состояния системы, необходимо уделить внимание важному аспекту – мониторингу состояния роутеров. Они являются одними из ключевых и критически важных элементов в вашей системе. В данной публикации я рассмотрю вопрос мониторинга состояния роутеров под управление системы openwrt с использованием пакета collectd. Настройка выполнялась на базе версий openwrt 22.03 и 23.05 Глобально у нас есть несколько вариантов настройки сбора статистики с роутеров: Сбор с помощью collectd и передача через telegraf установленный на роутере Сбор с помощью collectd и передача через telegraf установленный на отдельном сервере Сбор и отправка данных через telegraf Первый и третий вариант требуют установки на каждый роутер достаточно крупного пакета telegraf (урезанная версия весит 12 Mb), а место на многих роутерах очень ограничено. По этой причине я выбрал вариант 2. В общей суме нам потребуется около 1.5-2Мб памяти на роутере для пакетов статистики и одна установка telegraf для агрегации всех данных с нескольких роутеров. Настройка сбора статистики на роутере В первую очередь нам необходимо установить пакеты сбора статистики и collectd а так же модуля для них. Это можно сделать через графический интерфейс, или подключившись по ssh. Команды установки: opkg update opkg install luci-app-statistics collectd collectd-mod-cpu collectd-mod-conntrack collectd-mod-df collectd-mod-dhcpleases collectd-mod-interface collectd-mod-iwinfo collectd-mod-load collectd-mod-memory collectd-mod-network collectd-mod-uptime collectd-mod-rrdtool /etc/init.d/luci_statistics enable /etc/init.d/collectd enable После установки повторно заходим в интерфейс роутера в новый раздел меню статистика – настройки. В основных настройках обязательно указываем уникальное имя хоста (под этим именем данные будут собираться в системе influxdb) Нам необходимо включить все компоненты сбора статистики. Все настройки плагинов можно оставлять в режиме по умолчанию. При открытии окна настроек плагина может сбиваться состояние настроек и полей. Переходим к настройке плагинов вывода, перед настройкой плагинов вывода обязательно примените настройки. Выключаем плагин RRDTool, он отвечает за хранение статистики на устройстве для вывода в виде графиков. И переходим к настройке плагина network. Нам необходимо заполнить только параметры интерфейса telegraf, который будет принимать данные collectd. В моем случае это 192.168.0.137. Сам telegraf может находиться на любом устройстве сети не зависимо от роутеров и Influxdb. Настройка сбора данных в telegraf Для сбора информации с роутеров будем использовать вариант запуска программы telegraf в роли прокси ретранслятора, на вход будет поступать информация от роутеров, а на выходе формироваться запись для передачи в influxdb. Но перед запуском докер контейнера telegraf нам необходимо забрать с роутера файл для сопоставления наборов данных collectd. По умолчанию файл размещен по пути /usr/share/collectd/types.db Скачиваем его себе на сервер где будет запускаться telegraf, в моем примере это /docker/telegraf-openwrt/types.db Переходим к настройке telegraf. Заходим в influxBD и создаем новую корзину openwrt и конфигурацию telegraf. Нам нужен источник данных socket listener Заменяем шаблонный конфиг, и даем понятное название # Generic socket listener capable of handling multiple socket types. [[inputs.socket_listener]] ## URL to listen on # service_address = "tcp://:8094" # service_address = "tcp://127.0.0.1:http" # service_address = "tcp4://:8094" # service_address = "tcp6://:8094" # service_address = "tcp6://[2001:db8::1]:8094" service_address = "udp://0.0.0.0:8094" # service_address = "udp4://:8094" # service_address = "udp6://:8094" # service_address = "unix:///tmp/telegraf.sock" # service_address = "unixgram:///tmp/telegraf.sock" ## Change the file mode bits on unix sockets. These permissions may not be ## respected by some platforms, to safely restrict write permissions it is best ## to place the socket into a directory that has previously been created ## with the desired permissions. ## ex: socket_mode = "777" # socket_mode = "" ## Maximum number of concurrent connections. ## Only applies to stream sockets (e.g. TCP). ## 0 (default) is unlimited. # max_connections = 1024 ## Read timeout. ## Only applies to stream sockets (e.g. TCP). ## 0 (default) is unlimited. # read_timeout = "30s" ## Optional TLS configuration. ## Only applies to stream sockets (e.g. TCP). # tls_cert = "/etc/telegraf/cert.pem" # tls_key = "/etc/telegraf/key.pem" ## Enables client authentication if set. # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] ## Maximum socket buffer size (in bytes when no unit specified). ## For stream sockets, once the buffer fills up, the sender will start backing up. ## For datagram sockets, once the buffer fills up, metrics will start dropping. ## Defaults to the OS default. # read_buffer_size = "64KiB" ## Period between keep alive probes. ## Only applies to TCP sockets. ## 0 disables keep alive probes. ## Defaults to the OS configuration. # keep_alive_period = "5m" ## Data format to consume. ## Each data format has its own unique set of configuration options, read ## more about them here: ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md data_format = "collectd" collectd_typesdb = ["/usr/share/collectd/types.db"] ## Content encoding for message payloads, can be set to "gzip" to or ## "identity" to apply no encoding. # content_encoding = "identity" Копируем полученный токен, он нам понадобиться для модификации конфигурации. Host изменять не надо, устанавливаем только токен в место параметра. Более подробно этот момент разбирался в первой части. Скачиваем файл конфигурации и размещаем на сервере рядом с types.db Переходим к запуску докер контейнер telegraf со следующим конфигурационным файлом version: "3" services: telegraf-openwrt: image: telegraf:latest container_name: telegraf-openwrt environment: - TZ=Europe/Moscow volumes: - /docker/telegraf-openwrt/telegraf.conf:/etc/telegraf/telegraf.conf:ro - /docker/telegraf-openwrt/types.db:/usr/share/collectd/types.db ports: - "8094:8094/udp" Отдельно стоит обратить внимание что обмен данными идет именно по протоколу udp, если у вас что-то не работает и данные не появляются проверяйте в первую очередь фаервол. Проверяем что данные появились в базе Подключение Grafana Работа с Grafana уже является стандартной и подробно разбирать я ее не буду, приведу пример как настроено у меня. Создан API токен на чтение корзины openwrt, и выполнено подключение в режиме Flux. В моем примере я использовал шаблон https://grafana.com/grafana/dashboards/18565-openwrt-collectd-flux/ В результате имеем такой дашборд Заключение Это последняя в ближайшей перспективе публикация на тему мониторинга спасибо всем кто ознакомился с этим материалом. Это далеко не все что стоит осветить на тему мониторинга, как минимум необходимо разобрать тему уведомлений по событиям и пересылку в другие коллекторы данных, но пока я не готов погружаться в эту тему. Но в любом случае буду признателен за советы и комментарии по теме. Отдельно акцентирую внимание я не являюсь профессиональным системным администратором, я только самоучка который решил погрузить в тему умного дома и домашних серверов. Так что мои решения могут быть не самые оптимальные и эффективные но они работают и покрывают поставленные задачи. Я всегда рад обсудить более эффективные варианты и возможно даже что то скорректировать в своей системе. Спасибо за внимание, меня можно достаточно часто найти в телеграмм чате сообщества готов по возможности ответить на вопросы. Всем удачи, и надежной работы вашим системам.
    2 балла
  28. А что мне нужно сделать что бы одобрили пост? ЧТо нужно запостить такое что бы его одобрили, я пришел прочитать инструкцию, и сохранил ее в закладках
    2 балла
  29. Нашел на просторах сети не плохой набор клиентов XRay / ShadowSocks / Vless / Vmess / Trojan, в том числе для OpenWRT и добавил своих. Пользуйтесь. OpenWrt PassWall PassWall 2 ShadowSocksR Plus+ luci-app-xray openwrt-xray Windows v2rayN NekoRay Furious HiddifyN Invisible Man — Xray Hiddify Next Android v2rayNG HiddifyNG X-flutter NekoBox + GitHub Hiddify Next iOS & macOS arm64 FoXray (бесплатная, но можно купить и премиум. ShadowRocket ($) Streisand (реклама может появляться) Pharos Pro ($) macOS arm64 & x64 FoXray Hiddify Next Linux v2rayA NekoRay Furious Hiddify Next Keenetik xkeen kvas bypass keenetik
    2 балла
  30. Вот и я решил опубликовать в этой теме свою недавнюю сборочку, хех. До этого у меня была сборка под файлопомойку и медиасервер. Достаточно большая, на 14 дисков 3.5. И из за этого же не супер красивая да еще этот черный ящик не вписывался никуда. Да и диски использовал которые были, начиная от 1Tb. Все это было прожорливо, от части шумно и как писал выше, не эстетично. А сумме там было порядка 30Tb. Плавно перейдем к новой сборке. КОМПЛЕКТУЮЩИЕ Новый конфиг: 1. Корпус - Fractal Design Node 304 - очень компактный, возможность установить 6 дисков 3.5 + 2 диска 2.5. Так же туда залетает обычный ATX блок питания, что является плюсом и если вы собираете из части комплектующих которые у вас уже есть, на блок тратиться не придется. Цена 6000 2. Материнская плата - Gigabyte A520I AC DDR4 - одна из самых дешевых и неплохих плат в этом форм факторе. Есть разъем под m2, который можно использовать под кэш. Так же поддержка ECC памяти. Цена 10500 3. Процессор - Ryzen 5 5600 - (на фото 5500, продавец не тот процессор отдал) тк планируется повесить еще парочку виртуалок, крутить там лично облако, сайт + файлопомойку, то от пассивных целеронов решил отказаться. Цена 8500 4. Оперативная память - DDR4 Corsair 32gb 3000mhz - осталось у меня от прошлого сервера, non ECC, возможно позже куплю ECC память, пока так. Цена на авито порядка 4000-5000 5. Охлаждение - Thermalright true Spirit 140 - тихий и достаточно производительный кулер, остался тоже от прошлой сборки, в этот корпус залез на тоненького) - Ценник на авито 2500 6. NVME - ADATA LEGEND 900 - Цена 6500 7. PCI-e - SATA - разветлитель на 4 доп саты у меня был. Цена 3000 8. Блок питания - HX 850 в такой корпус не влез, хотя был у меня, пришлось искать поменьше, взял CX850m. Цена порядка 5000 Вся сборка выходит порядка 46000, хотя часть у меня уже была, так что дешевле) СБОРКА. 1. Сначала конечно сравнил плату mini-itx с обычной ITX) 1.1 И примерил сразу с башней уже в корпусе, не будет ли торчать, тк сомнения были. По спецификации влазит башня до 162мм, этот повыше но влез. Но если покупать кулер из магазина, лучше взять что то пониже явно и с горизонтальным расположением вертушки. 2. В целом сборка сильне не отличается от сборки обычного ПК, тут все упирается в размер самого корпуса и тогда приходится использовать либо стяжки, либо липучки, чтобы провода не лезли куда не надо. Так же думаю стоит сразу забыть про кабель менеджмент, тк одно из сторон этого корпуса будет забита именно ими, а прятать их особо некуда. Ну и провода все пытаются залезть в кулер на процессор) Получилось примерно вот так, уже с корзинами и установленными дисками. На фото видно как близко корзины находятся к вертушке процессора. Из коробки пришлось сразу обновлять биос, т.к 5 поколение не завелось) Хотя на коробке написано что должно. После накатил xspenlogy маскируясь под 1621+ он как раз на AMD и на 6 дисков. Все 6 дисков завелись без особых танцев с бубнами. Пока все это добро кинул в RAID 0, т.к это сейчас реальная файлопомойку для фильмов/сериалов. Так же после купил ключик, пересобирал загрузчик, поменял S/N и MAC ( можете найти на Авито, цена вопроса на мою сборку 3000) Осталось закупиться норм дисками и кинуть их в два разных массива, один под файлопомойку, второй для полезных вещей. В плане обновить все сетевуху дома, и перейти на 2.5Gbit, т.к щас все упирается в канал. Скорость копирования по сети порядка 110-115мб/с
    2 балла
  31. Отличная инструкция! Все получилось сделать за 10 минут! Скорости радуют, dns РФ не проскальзывают , пинг вменяемый! Пожелания хотелось бы тоже высказать, например описать настройки протоколов. Например тот же троян gprc, что там указывать и куда?)
    2 балла
  32. sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP nano /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all = 1
    2 балла
  33. через outbound - это раз через iptables - два # apt-get update # apt-get install xtables-addons-common # iptables -I FORWARD -p tcp -m ipp2p --bit -j DROP # iptables -I FORWARD -p udp -m ipp2p --bit -j DROP через скрипт дополнительно в iptables - три bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/tools/block_torrent.sh)
    2 балла
  34. Вступление, или очередная проблема из неоткуда Система бэкапов Proxmox (PBS) является достаточно мощным и удобным инструментом для создания резервных копий виртуальных машин Proxmox, но она имеет одну проблему, которая мешала мне для организации задуманной мной системы домашнего сервера. PBS не может делать синхронизацию с удаленным каталогом по протоколу SAMBA. Синхронизация бэкапов в PBS доступна только между несколькими экземплярами самого сервера бэкапов, то есть для переноса бэкапов на другое устройство там должен быть установлен Debian с пакетом PBS. Альтернативой может являться создание хранилища данных в удаленной папке, созданной по протоколу NFS. В моем случае стояла задача восстановить исходную схему резервирования бэкапов, которая была реализована до перехода на создание бэкапы с помощью PBS, когда резервные копии также переносились на мой основной компьютер, откуда отправлялись на внешний диск. Так как основной компьютер работает под управлением Windows, возникли неожиданные сложности. NFS не поддерживается не серверными версиями Windows, остаются только сторонние варианты реализации. Но и в такой ситуации есть ряд подводных камней, фактически NFS будет являться просто сетевой папкой, куда складываются бэкапы, следовательно для резервного копирования в момент выполнения задачи компьютер с данной папкой должен быть включен. В результате моих поисков было найдено два основных варианта для решения поставленной задачи: 1. Запустить виртуальную машину с PBS 2. Запустить PBS в Docker-контейнере В дальнейшем я выбрал вариант запуска через Docker-контейнер, так как он для меня оказался более удобным и менее прожорливым по ресурсам (вся система Docker с запущенным PBS потребляет до 700 Мб ОЗУ). Также мне было откровенно лень разбираться с пробросом портов из виртуальной машины и еще пачкой ненужных задач. Для виртуальных машин Proxmox - ван лав. Так же данный способ подойдет для запуска на NAS. Установка и запуск PBS в докере Данный способ является не рекомендуемым и явно не поддерживаемым, для большей стабильности рекомендую использовать вариант запуска через виртуальную машину. Настройка синхронизации между двумя экземплярами PBS будет описана в следующем разделе. Для установки PBS на Debian в виртуалке приведен на оффициально сайте: https://pbs.proxmox.com/docs/installation.html#install-proxmox-backup-server-on-debian Для запуска докер в Windows необходимо установить docker desktop с официального сайта https://www.docker.com/products/docker-desktop/ для полноценной работы потребуется регистрация на докер хаб. После установки и первого запуска попадаем в стартовое окно docker desktop которое на самом деле очень бесполезное, в дальнейшем он нам понадобиться только для администрирования контейнера. В принципе этой установки должно быть достаточно, но лучше так же установить WSL если не был установлен ранее. Идем в Microsoft Store (да на удивление он все еще живой, сам в шоке) и находим там Windows Subsystem for Linux. Данная подсистема предназначена для запуска Linux системы прямо в Windows без использования стороннего софта для виртуализации, а так же его использует докер. Переходим в настройки докера и включаем запуск при старте Windows и включаем WSL2/ В принципе данных настроек должно быть достаточно для запуска необходимого нам контейнера. Но дополнительно настроим что бы докер не съедал наши ресурсы до бесконечности, по умолчанию потребление. Идем в основную папку пользователя: C:\Users\UserName И создаем там файлик со следующим именем: .wslconfig Открываем файл через любой текстовый редактор (рекомендую Notepad ++) И вставляем следующий конфиг: [wsl2] memory=1GB processors=1 Данная настройка вступит в силу после перезагрузки компьютера. Таким образом мы ограничиваем работу докера что бы он мог использовать не более 1Гб озу и не более одного виртуального ядра, чего для наших задач достаточно. Отдельно отмечу что минимальный объем может быть 1Гб так как происходит округление до целых значений. Данное ограничение действует на весь WSl в целом. Подробней о данном конфиг файле можно почитать тут: https://learn.microsoft.com/ru-ru/windows/wsl/wsl-config На этом предварительный этап закончен, приступаем непосредственно к запуску PBS. Сам проект задумывался для того что бы запускать PBS на NAS с поддержкой докера что в принципе является не плохим решением. Подробней с ним можете ознакомиться по ссылке: https://github.com/ayufan/pve-backup-server-dockerfiles Приступаем к запуску, для этого создадим папку в которой будет храниться конфиги и все данные нашего PBS (при желании можно развести их по разным папкам путем модификации docker compose). Нам потребуется вот такая структура папок: Создаем в корнейвой папке новый файл с именем docker-compose.yml и вставляем следующий конфиг: version: '2.1' services: pbs: image: ayufan/proxmox-backup-server:latest container_name: pbs hostname: hostName mem_limit: 128Mb environment: - TZ=Europe/Moscow volumes: - D:\Proxmox Backup Server\etc:/etc/proxmox-backup - D:\Proxmox Backup Server\logs:/var/log/proxmox-backup - D:\Proxmox Backup Server\lib:/var/lib/proxmox-backup - D:\Proxmox Backup Server\backups:/backups ports: - 8007:8007 tmpfs: - /run restart: unless-stopped stop_signal: SIGHUP Изменяем параметры volumes на свои а так же устанавливаем hostname для адекватного отображения имени хоста в интерфейсе PBS. Сохраняем файл и открываем консоль windows. Вводим стандартную команду запуска docker compose docker compose up -d В моем случае произошёл перезапуск контейнера, при первом запуске будет вывод о загрузке и сборке image. Возвращаемся в окно docker desktop и видим появившийся новый контейнер и потребление выделенных ресурсов. Фактическое потребление (зарезервировано) для системы в моем случае: На это этап запуска PBS в докере закончен, приступаем к непосредственной настройке синхронизации. Настройка нового экземпляра PBS Заходим в веб морду нашего нового экземпляра PBS по адресу: https://<Ip-pc>:8007/ По умолчанию доступен один пользователь: admin с паролем pbspbs Заходим в систему и приступаем к настройке. Нам необходимо создать хранилище данных, для этого нажимаем «Добавить хранилище данных». Путь к хранилищу указываем на папку, которую прокинули из компьютера для хранения бэкапов. Тут же настроим задание проверки резервных копий на целостность. Следующим шагом необходимо настроить права для работы с полученным хранилищем. Идем в радел управление доступом и создаем нового пользователя: Нам необходимо создать нового пользователя и сменить пароль для существующего. Так же выдаем права пользователю: В моем примере хранилище данных называется deniom-pc. В хранилище данных должно быть так: Настройка синхронизации между экземплярами PBS Основные настройки будут происходить на вторичном PBS который будет вытягивать бэкапы из PBS на хосте proxmox. Данные настройки выполняем под пользователем admin так как могут быть проблемы с правами. Подключаться мы так же будет через root пользователя к основному серверу. В идеале необходимо разграничивать права и использовать ограниченного пользователя. Переходим в удаленные хранилища, и добавляем новое подключение Заполняем данные для авторизации на основном сервере PBS. Отдельно надо отметить поле отпечаток, он нужен для установки ssl соединения между нашими системами. Что бы его получить возвращаемся в интерфейс PBS основного сервера PBSи на вкладке панелью мониторинга нажимаем показать отпечаток. Переходим в хранилище данных и настроим синхронизацию В данной настройке будет выполняться попытка синхронизации каждых два часа. Заключение На этом настройка фактически завершена, на самом деле мы имеем практически полноценный экземпляр PBS. Так же мы можем подключить данный экземпляр PBS напрямую к proxmox и делать бэкапы прямо в него, данное решение будет удобно для установки на NAS. Спасибо за внимание.
    2 балла
  35. Может кому пригодится, пост инсталер Proxmox, готовые контейнеры и прочее. Удобная штука, пользовался. https://tteck.github.io/Proxmox/ Пользуюсь TrueNas Scale более чем устраивает. Приложений вагон и маленькая тележка. У меня Nextcloud, Jellyfin, qbittorrent между собой завязаны. Собрано из остатков былой роскоши) Huananzhi X99-TF xeon 2678v3 ecc reg 64гб 4х канал бп 400 ватт обычный 250 nvme под систему 250ssd aaps hdd 7шт 160гб)))))raidz1 на эксперименты как раз научиться 100 ватт кушает в среднем если 5р за кватт то получается что то в районе 360р в месяц. Весело бегает всё. Мне он постоянно не нужен, я его включаю при необходимости через облако модулем Sonoff RE5V1C. Так как wake on lan не работает адекватно на китайских материнках) У нас ру сообщество активизируется в этом направлении TrueNas Scale, что не может не радовать. Гайды хорошие пилить стали. там телега в описании, по любым вопросам подсказывают, когда зам стопоришься. https://t.me/TrueNAS_ru
    2 балла
  36. Искусственный интеллект (ИИ) становится все более широко используемым в различных сферах жизни. Однако, с ростом использования ИИ возникает все больше вопросов о его этическом использовании и управлении. Важной особенностью ИИ является то, что он может быть обучен на большом количестве данных, которые могут содержать скрытые предубеждения. Например, алгоритмы машинного обучения могут быть обучены на данных, которые отражают предвзятость по расовым или гендерным признакам. Это может привести к несправедливому принятию решений, которые могут нанести вред людям. Чтобы справиться с этими проблемами, индустрия ИИ начала разрабатывать строгие этические стандарты, которые регулируют использование ИИ. Например, Комиссия по этике в области ИИ (AI Ethics Commission) была создана в 2016 году для того, чтобы разработать этические принципы, которые могут быть использованы в различных областях, связанных с ИИ. Одним из основных принципов этики ИИ является принцип прозрачности. Это означает, что алгоритмы ИИ должны быть понятными и объяснимыми, чтобы пользователи могли понимать, как принимаются решения. Кроме того, принцип прозрачности требует, чтобы данные, используемые в обучении ИИ, были доступны и проверяемы. Другой важный принцип этики ИИ - это принцип ответственности. Он требует, чтобы создатели ИИ несли ответственность за действия своих систем. Это означает, что они должны предусмотреть меры контроля и ответственности для того, чтобы предотвратить негативные последствия. Кроме того, этические стандарты в области ИИ также включают принципы конфиденциальности и недискриминации. Они требуют, чтобы данные, используемые в обучении ИИ, были защищены от несанкционированного доступа, и чтобы алгоритмы ИИ не принимали решений на основе расовой или гендерной принадлежности. Управление ИИ также включает в себя разработку строгих правил для использования ИИ. Эти правила должны определять, кто может использовать ИИ, какие данные могут быть использованы, и как ИИ может быть использован в рамках различных сфер. В целом, этика и управление в области ИИ являются важными вопросами, которые должны быть учтены в процессе разработки и использования ИИ. Строгие этические стандарты помогут обеспечить справедливое и безопасное использование ИИ, что будет способствовать его дальнейшему развитию и распространению.
    2 балла
  37. Вот еще https://github.com/mercurykd/vpnbot интересный проект. Развернет докер и запустит бота для управления wireguard и shadowsocks из телаграмма. Допилить adguard листами блокировки. Ну и линк на благодарность сменить в боте по желанию.
    2 балла
  38. Да, у меня тоже заработало)
    1 балл
  39. ну я попробовал на чистом сервере сейчас все нормально
    1 балл
  40. речь про мобильных провайдеров там многое не работает домашние провайдеры почти ничего не блочат в 90% случаев
    1 балл
  41. Всем привет! Сегодня стали появляться сообщения с такой ошибкой: Ошибка связана с ограничением в отношении РФ. Решение: 1. через конфиг докера (как зеркало docker.io) Ищем файл daemon.json: LINUX regular: /etc/docker/daemon.json LINUX rootless: ~/.config/docker/daemon.json WINDOWS: C:\ProgramData\docker\config\daemon.json Вносим корректировки: { "registry-mirrors": [ "https://mirror.gcr.io", "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://hub.openode.xyz" ] } 2. Явное указание адреса через зеркало В самом докере, или в docker-compose, когда вы указываете image: вы можете указать вместо классического library/alipine:latest, тоже самое, но с адресом из списка выше: hub.openode.xyz.io/library/alipine:latest Детальная страница: https://hub.openode.xyz/
    1 балл
  42. Всем привет! Из последнего, что появилось в клубе Marzban за последние 1.5 месяца (каждый пункт - отдельная статья): Разобрались что такое SNI и как правильно выбрать сайт для Reality под ваш сервер Разобрались как настроить балансировку через А записи в DNS Разобрались как настроить роутинг Ру трафика через Ру сервер Написал статью по ФэнШую на Marzban. Обновил скрипт для замены xray ядра - теперь это универсальный скрипт поиском последней версии ядра в офф.репе. Расписал про использование REST в связке узлов с мэйном. Написал детальную инструкцию как настроить использование единственного 443 порта на сервере через Haproxy и как настроить inboundы, чтобы все шло через один порт. Здесь же инструкция, как использовать разные поддомены для sub и для panel в рамках одного сервера Все это (и многое другое) доступно по подписке
    1 балл
  43. Пойду просто переустановлю, всё накачу заново и сделаю как в мануале:) Если что отпишусь.
    1 балл
  44. 1. Сделать в клуб доступ открытым 2. Открыть доступ к инструкция и продвинутым инструкциям (но только шапки, чтобы в тему зайти нельзя было) и человеку станет понятно нужно ему покупать доступ или нет 3. Вшить стоимость вступления в клуб в стоимость темы клуба (300 + стоимость темы в клубе)
    1 балл
  45. В операционной системе Windows 11 произошли существенные изменения в дизайне проводника. Вместо обширного меню, доступного в проводнике Windows 10, файловый менеджер по умолчанию отображает лишь несколько значков в верхней части панели проводника. Кроме того, при нажатии правой кнопкой мыши в проводнике, видно значительное отличие. В Windows 11 отображается упрощенное меню с небольшим набором параметров по умолчанию. Чтобы получить классическое контекстное меню, пользователю необходимо выбрать опцию "показать дополнительные параметры". Следовательно, в Windows 11 добавлено два контекстных меню проводника. Большинство ярлыков сторонних программ находятся во второй, классической версии контекстного меню. Некоторым пользователям Windows 11 может показаться предпочтительным вернуться к классическому контекстному меню в проводнике, поскольку оно содержит полный набор доступных параметров, а не только упрощенные действия. Предлагаю решение простое, без установки каких-либо твиков и прочей непонятной "софтятины". Открываем Терминал под администратором: Пишем в него команду: reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f А затем: taskkill /F /IM explorer.exe & start explorer Все. Готово! Если у вас не открылся проводник сам, вы можете запустить Диспетчер задач (ctrl+alt+del) Выбрать в меню Запустить новую задачу: И в нем пишем explorer: Всё.
    1 балл
  46. Для роутеров Keenetic, есть парочка проектов, где есть поддержка ShadowSocks. У каждого свои плюсы и минусы. Вариант № 1 Вариант № 2
    1 балл
  47. Немного дополнил перевод. Обновил реп. В первом сообщении.
    1 балл
  48. У меня не было на самом деле ни желания ни времени искать ошибку в аезе. Теоретически, можно попробовать смену IP адресов. Ведь на 10.2.0.3 заходит. Например, 10.2.0.4 указать для agh 10.2.0.5 для unbound Вряд ли на что то влияет.. ну а вдруг.. как говорится :))
    1 балл
  49. Да, это именно из-за настроек aeza. К сожалению с ребятами смотрели, но причину так и не нашли. Аналогично не открывается вариант сборки с pihole.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика