diff --git a/docs/images/other/phone/grandstream_01.png b/docs/images/other/phone/grandstream_01.png new file mode 100644 index 0000000..643059b Binary files /dev/null and b/docs/images/other/phone/grandstream_01.png differ diff --git a/docs/images/other/phone/grandstream_02.png b/docs/images/other/phone/grandstream_02.png new file mode 100644 index 0000000..6cf9e8e Binary files /dev/null and b/docs/images/other/phone/grandstream_02.png differ diff --git a/docs/images/other/phone/grandstream_03.png b/docs/images/other/phone/grandstream_03.png new file mode 100644 index 0000000..742331e Binary files /dev/null and b/docs/images/other/phone/grandstream_03.png differ diff --git a/docs/images/other/phone/grandstream_04.png b/docs/images/other/phone/grandstream_04.png new file mode 100644 index 0000000..46f775f Binary files /dev/null and b/docs/images/other/phone/grandstream_04.png differ diff --git a/docs/images/other/phone/grandstream_05.png b/docs/images/other/phone/grandstream_05.png new file mode 100644 index 0000000..785a2f9 Binary files /dev/null and b/docs/images/other/phone/grandstream_05.png differ diff --git a/docs/images/other/phone/grandstream_06.png b/docs/images/other/phone/grandstream_06.png new file mode 100644 index 0000000..0581e08 Binary files /dev/null and b/docs/images/other/phone/grandstream_06.png differ diff --git a/docs/images/other/phone/grandstream_07.png b/docs/images/other/phone/grandstream_07.png new file mode 100644 index 0000000..a7bfdc4 Binary files /dev/null and b/docs/images/other/phone/grandstream_07.png differ diff --git a/docs/other/chrome.md b/docs/other/chrome.md index 79bdb86..80b5e19 100755 --- a/docs/other/chrome.md +++ b/docs/other/chrome.md @@ -8,12 +8,3 @@ Google Chrome 2. далее для функции Hardware Media Key Handling вместо значения «`Default`» устанавливаем «`Disabled` 3. перезапускаем Chrome, чтобы активировать изменение. - - -
report - click this - -cpu_adam ............... [NO] ....... [OKAY] -cpu_adagrad ............ [NO] ....... [OKAY] -fused_adam ............. [NO] ....... [OKAY] - -
\ No newline at end of file diff --git a/docs/other/cloudflare-cname.md b/docs/other/cloudflare-cname.md new file mode 100755 index 0000000..0a4b94c --- /dev/null +++ b/docs/other/cloudflare-cname.md @@ -0,0 +1,24 @@ +# Cоздание новой DNS-записи CNAME на Cloudflare + +---------- + +Я рекомендую получить собственное доменное имя, указывающее на IP-адрес вашего дома в глобальной сети. Частное доменное имя через reg.ru будет стоить 850 рублей в год. Есть несколько причин, почему я рекомендую это: + +- В моем тестировании я никогда не мог заставить некоторые контейнеры докеров работать в качестве подкаталога (даже на моем собственном частном доменном имени) за обратным прокси-сервером Traefik. В таких ситуациях вам останется создать несколько динамических субдоменов DNS, чтобы разместить все ваши службы. Большинство бесплатных динамических DNS-сервисов ограничивают количество субдоменов, которые вы можете создать. +- Afraid DNS не является одним из поддерживаемых поставщиков wildcard сертификатов. Хотя DuckDNS указан как поддерживаемый, он еще не тестировался. + +В моей настройке использую собственное доменное имя, все мои приложения в качестве отдельных хостов и Traefik 2.9 с сертификатами Wildcard. Мой провайдер DNS — Cloudflare, который [протестирован и подтвержден](https://doc.traefik.io/traefik/v1.7/configuration/acme/#wildcard-domains) для работы с подстановочными сертификатами Traefik Let’s Encrypt. Если у вас есть собственное доменное имя, а ваш провайдер DNS не указан в списке поддерживаемых, то я рекомендую перенести ваш DNS на Cloudflare, который удивительно быстр и бесплатен. + +В Cloudflare вы должны указать свой корневой домен (example.com) на свой IP-адрес WAN. Затем добавьте CNAME с подстановочным знаком (*.example.com) или отдельные субдомены, указывающие на ваш корневой домен (@ для хоста), как показано ниже (для этого не требуется платная учетная запись). + +[![Cloudflare Dns Entries](https://www.smarthomebeginner.com/images/2018/05/cloudflare-dns-records-screenshot-740x495.png "Traefik Tutorial: Traefik Reverse Proxy with LetsEncrypt for Docker Media Server 3")](https://www.smarthomebeginner.com/images/2018/05/cloudflare-dns-records-screenshot.png) + +Cloudflare Dns Entries For Traefik Dns Challenge + +In addition to creating the DNS records, you will have to adjust Cloudflares SSL settings to avoid indefinite redirects. Go to **Crypto** settings for the domain and change **SSL** to **Full** as shown below. + +[![Cloudflare &Quot;Full&Quot; Ssl](https://www.smarthomebeginner.com/images/2018/05/cloudflare-crypto-full-ssl-740x358.png "Traefik Tutorial: Traefik Reverse Proxy with LetsEncrypt for Docker Media Server 4")](https://www.smarthomebeginner.com/images/2018/05/cloudflare-crypto-full-ssl.png) + +Cloudflare “Full” Ssl + +Note that you may have to wait for a few minutes for the DNS entries to propagate. If you run Traefik before that, DNS challenge may fail and no SSL certificate will be generated. If you keep trying, [Let’s Encrypt may ban you temporarily](https://letsencrypt.org/docs/rate-limits/) for reaching the request limits. To counter this I have added a 5 min wait in the traefik configuration below but you may need longer. Until validation is complete, Traefik’s default certificate will be used and your browser will throw a warning. \ No newline at end of file diff --git a/docs/other/marvel.md b/docs/other/marvel.md new file mode 100755 index 0000000..7d2a654 --- /dev/null +++ b/docs/other/marvel.md @@ -0,0 +1,53 @@ +Оптимальный вариант просмотра (в порядке выхода) +I. «Сага Бесконечности» + +Первая фаза +1. «Железный человек» (2008) +2. «Невероятный Халк» (2008) +3. «Железный человек 2» (2010) +4. «Тор» (2011) +5. «Первый мститель» (2011) +6. «Мстители» (2012) + +Вторая фаза +7. «Железный человек 3» (2013) +8. «Тор 2: Царство тьмы» (2013) +9. «Первый мститель: Другая война» (2014) +10. «Стражи Галактики» (2014) +11. «Мстители: Эра Альтрона» (2015) +12. «Человек-муравей» (2015) + +Третья фаза +13. «Первый мститель: Противостояние» (2016) +14. «Доктор Стрэндж» (2016) +15. «Стражи Галактики. Часть 2» (2017) +16. «Человек-паук: Возвращение домой» (2017) +17. «Тор: Рагнарёк» (2017) +18. «Черная Пантера» (2018) +19. «Мстители: Война бесконечности» (2018) +20. «Человек-муравей и Оса» (2018) +21. «Капитан Марвел» (2019) +22. «Мстители: Финал» (2019) +23. «Человек-паук: Вдали от дома» (2019) + +«Сага Мультивселенной» +Четвертая фаза +24. «Ванда/Вижн» (2021), сериал +25. «Сокол и Зимний Солдат» (2021), сериал +26. «Локи», 1-й сезон (2021), сериал +27. «Черная Вдова» (2021) +28. «Что, если…?», 1-й сезон (2021), мультсериал +29. «Шан-Чи и легенда десяти колец» (2021) +30. «Вечные» (2021) +31. «Соколиный Глаз» (2021), сериал +32. «Человек-паук: Нет пути домой» (2021) +33. «Лунный рыцарь» (2022), сериал +34. «Доктор Стрэндж: В мультивселенной безумия» (2022) +35. «Мисс Марвел» (2022), сериал +36. «Тор: Любовь и гром» (2022) +37. «Я есть Грут» (2022), мини-мультсериал +38. «Женщина-Халк: Адвокат» (2022), сериал +39. «Ночной оборотень» (2022), спешел +40. «Черная Пантера: Ваканда навеки» (2022) +41. «Стражи Галактики: Праздничный спецвыпуск» (2022), спешел +42. «Человек-муравей и Оса: Квантомания» (2023) \ No newline at end of file diff --git a/docs/other/phone/grandstream/provisioning.md b/docs/other/phone/grandstream/provisioning.md new file mode 100644 index 0000000..4bc3542 --- /dev/null +++ b/docs/other/phone/grandstream/provisioning.md @@ -0,0 +1,111 @@ +# Настройка телефонов через TFTP сервер + +Опустим настройку самого TFTP сервера, в сети много есть информации по этому вопросу. + +## Правка начального шаблона + +Для начала, нам потребуется получить файл шаблона и немного его отредактировать. + +Скачать можно c [облака](https://disk.yandex.ru/d/UJJK2Ttm1amJmg). + +| **Параметры** | **Описание** | +| --- | --- | +| P47 | адрес сервера Астериск | +| P34 | пароль авторизации | +| P237 | сервер и папка, откуда берется конфиг | +| P30 | ntp сервер для синхронизации времени | +| P64 | часовой пояс | +| P2 | пароль на админку | +| P192 | сервер и папка, откуда берется обновление прошивки | + +сохраняем файл. + +## Заполнение файла с настройками + +Чтобы не вводить номера телефонов в каждый файл, существует возможность по созданию файла с настройками. + +Скачать файл можно [тут](https://disk.yandex.ru/d/S7XKjHypTigfyg). В файле заполняем: + +| Параметр | Значение | +| --- | --- | +| `MAC` | MAC адрес | +| `User_ID_1` | номер | +| `Password_1` | пароль | +| `Auth_ID_1` | номер | +| `SIP_Name_1` | номер | + +Файл сохраняем в формате `scv`, разделители **запятые**. Он нам потребуется дальше. + +## Создание конфиг файлов + +Для создания конфиг файлов используется программа [GSXmlGenerator_3.5](https://disk.yandex.ru/d/I3HvTLTLXHv4sA) + +![](../../../images/other/phone/grandstream_01.png) + +Запускаем программу, в ней: + +| Параметр | Значение | +| --- | --- | +| Configuration Template | путь где находится шаблон | +| Output Path | путь до папки, куда будут сохраняться готовые файлы | +| Use CSV File | путь до файла csv с настройками | + +После нажимаем на **Run with CSV as Input** + +## Папка на tftp сервере + +Создадим папку на tftp сервере, откуда телефон будет брать конфиг файл. + +К примеру это будет папка `test`. Далее в папку следует закачать: + +- файл прошивки +- 3 файла звонков (не обязательно) +- файлы конфигов + +Файлы можно взять по [ссылке](https://disk.yandex.ru/d/4eji_swJJdshNQ) + +В итоге получится такое содержание папки: + +![](../../../images/other/phone/grandstream_02.png) + +## Настройка на телефоне + +Есть 2 способа настройки - ручной и автоматический + +=== "Автоматический" + + Способ через конфигурирование DHCP и прописывание 66 опции. + + Открываем оснастку DHCP сервера и идем в параметры сервера. Далее ПКМ на центральной части - Настроить параметры: + + ![](../../../images/other/phone/grandstream_03.png) + + Ищем 066 параметр: 066 Имя узла сервера загрузки и прописываем путь до папки с конфигами: + + ![](../../../images/other/phone/grandstream_04.png) + + Нажимаем ОК. + + Теперь при включении телефона, телефон сам получит настройки подключения и сам обновит firmware + +=== "Ручной" + + Включаем телефон и заходим на web-страницу администрирования: + + Стандартный логин/пароль - `admin`/`admin` + + Далее переходим на вкладку **Maintenance** и выбираем в выпадающем списке **Upgrade and Provisioning**: + + ![](../../../images/other/phone/grandstream_05.png) + + На открывшейся странице ищем раздел **Config**. Выбираем метод скачивание через tftp и указываем путь до нашего сервера. + + Внизу нажимаем **Save and Apply**. + + ![](../../../images/other/phone/grandstream_06.png) + + После сохранения вверху **Reboot** + + ![](../../../images/other/phone/grandstream_07.png) + + После перезагрузки, телефон сам скачает обновление с сервера. \ No newline at end of file diff --git a/docs/other/prometheus-grafana.md b/docs/other/prometheus-grafana.md new file mode 100755 index 0000000..4b8d999 --- /dev/null +++ b/docs/other/prometheus-grafana.md @@ -0,0 +1,267 @@ +# Как запустить Prometheus и Grafana используя Docker Compose + +---------- + +Docker Compose используется для запуска нескольких контейнеров как одной службы. Если у вас есть приложение/стек, требующий разных служб, docker compose позволяет создать один файл, который запустит все контейнеры как одну службу и избавит вас от необходимости запускать их по отдельности. Также можно запускать по одной службе за раз с помощью docker compose. Сегодня мы рассмотрим, как запустить Prometheus и Grafana с помощью docker compose. + +Чтобы иметь возможность использовать Docker Compose, в вашей системе должны быть установлены как Docker, так и Docker Compose. + +Prometheus — это база данных временных рядов, использующая экспортеры для мониторинга различных серверов/сервисов, а Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов. + +Чтобы запустить Prometheus и Grafana с помощью docker compose, нам нужно создать файл docker compose, определяющий отдельные сервисы (Prometheus и Grafana), используемые образы, запущенные порты и все остальное необходимое. + +## Использование постоянных томов с Docker Compose + +Нам нужно учитывать тот факт, что для Grafana требуется файл конфигурации и файл источника данных. Promemetheus также требует файла конфигурации. Для этого мы будем использовать смонтированные тома (постоянные тома), чтобы можно было легко вносить изменения в файлы, когда это необходимо. + +Создайте рабочий каталог с именем _prometheus-grafana_ и внутри него создайте каталоги для хранения файлов конфигурации Prometheus и Grafana. + +mkdir -p ~/prometheus-grafana/{grafana,prometheus} + +Теперь перейдите в каталог _grafana_ и создайте файлы конфигурации. Файл конфигурации **Grafana** по умолчанию предоставляется в официальном репозитории Github. Создайте файл с именем _grafana.ini,_ скопируйте и вставьте конфигурацию grafana по умолчанию в этот файл и сохраните. + +Контент для конфигурации Grafana по умолчанию можно найти по _адресу https://github.com/grafana/grafana/blob/master/conf/defaults.ini_ . Обратите внимание, что вы можете вносить изменения в файл конфигурации по умолчанию в соответствии с вашими потребностями. + +wget https://raw.githubusercontent.com/grafana/grafana/main/conf/defaults.ini -O ~/prometheus-grafana/grafana/grafana.ini vim ~/prometheus-grafana/grafana/grafana.ini + +После этого перейдите в папку Prometheus и создайте файл конфигурации prometheus, чтобы указать Prometheus, где брать метрики. Поскольку у меня нет отдельного сервера для мониторинга, отображаемые метрики относятся к самому серверу prometheus (localhost:9090) + +nano ~/prometheus-grafana/prometheus/prometheus.yml + +global: + +scrape_interval: 15s + +scrape_timeout: 10s + +evaluation_interval: 15s + +alerting: + +alertmanagers: + +- static_configs: + +- targets: [] + +scheme: http + +timeout: 10s + +api_version: v1 + +scrape_configs: + +- job_name: prometheus + +honor_timestamps: true + +scrape_interval: 15s + +scrape_timeout: 10s + +metrics_path: /metrics + +scheme: http + +static_configs: + +- targets: + +- localhost:9090 + +Вы можете открыть и изменить файл в соответствии с вашим вариантом использования. + +nano ~/prometheus-grafana/prometheus/prometheus.yml + +На данный момент Grafana не показывает, откуда брать данные. Нам нужно сказать ему, чтобы он достался от Прометея. Создайте файл с именем _datasource.yml_ в каталоге grafana. + +nano ~/prometheus-grafana/grafana/datasource.yml + +apiVersion: 1 + +datasources: + +- name: Prometheus + +type: prometheus + +url: http://localhost:9090 + +isDefault: true + +access: proxy + +editable: true + +Дальнейшая модификация может быть выполнена: + +nano ~/prometheus-grafana/grafana/datasource.yml + +К настоящему времени у нас готовы все тома. Давайте продолжим, чтобы создать файл docker-compose. + +nano ~/prometheus-grafana/docker-compose.yml + +Содержимое должно выглядеть так, как показано ниже. Убедитесь, что вы изменили путь к файлам конфигурации в соответствии с путями в вашей системе. + +version: "3.7" + +networks: + +direct_net: + +name: direct_net + +driver: bridge + +ipam: + +config: + +- subnet: 192.168.200.0/24 + +services: + +prometheus: + +user: "$PUID:$PGID" + +container_name: prometheus + +image: prom/prometheus:latest + +restart: always + +networks: + +- direct_net + +ulimits: + +nofile: + +soft: 200000 + +hard: 200000 + +command: + +--config.file=/data/prometheus.yml + +--storage.tsdb.path=/data + +--storage.tsdb.retention.time=180d + +--web.enable-admin-api + +volumes: + +- $DOCKER_APP/prometheus:/data + +- /etc/timezone:/etc/timezone:ro + +- /etc/localtime:/etc/localtime:ro + +grafana: + +user: "$PUID:$PGID" + +container_name: grafana + +image: grafana/grafana:latest + +restart: always + +networks: + +- direct_net + +security_opt: + +- no-new-privileges:true + +environment: + +GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,grafana-piechart-panel" + +volumes: + +- ~/prometheus-grafana/grafana/data:/var/lib/grafana + +- /etc/timezone:/etc/timezone:ro + +- /etc/localtime:/etc/localtime:ro + +Если вам нужно указать конкретную версию Prometheus или Grafana, вы можете добавить номер версии, чтобы он выглядел так: + +services: + +prometheus: + +image: prom/prometheus:#get tag https://hub.docker.com/r/prom/prometheus/tags + +--- + +grafana: + +image: grafana/grafana:# Tags https://hub.docker.com/r/grafana/grafana/tags + +Также целью создания стека Prometheus/Grafana является мониторинг других сервисов, работающих, возможно, на разных серверах. Prometheus использует разные экспортеры для предоставления метрик, связанных с аппаратным обеспечением и ядром, в зависимости от отслеживаемого вами сервиса, наиболее распространенным из которых является node-exporter. Экспортеры устанавливаются на хостах, за которыми нужно следить. + +Поскольку у меня нет другого внешнего сервера, я собираюсь установить экспортер узлов на локальном компьютере. Для этого в конец файла _~/prometheus-grafana/docker-compose.yml_ добавляем: + +node-exporter: + +image: prom/node-exporter:latest + +container_name: monitoring_node_exporter + +restart: unless-stopped + +expose: + +- 9100 + +Также я должен обновить файл prometheus.yml, чтобы добавить node-exporter в качестве цели. + +static_configs: + +- targets: ['localhost:9090','node-exporter:9100'] + +Или формат: + +static_configs: + +- targets: + +- localhost:9090 + +- node-exporter:9100 + +Если у вас есть другие экспортеры из других сервисов, вы можете добавить в массив по подобию. + +### Запуск контейнеров с помощью docker-compose + +Перейдите в каталог данных: + +cd ~/prometheus-grafana + +Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже: + +docker compose up -d + +Проверте запуск контейнеров: + +docker compose ps + +Получите доступ к Prometheus и grafana из браузера, используя порты по умолчанию. Для Прометея мы используем _`http://serverip_or_hostname:9090`_. Если вы перейдете к **status** -> target , вы сможете увидеть статус своих целей, как показано ниже **_:_** + +![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose.png?ezimgfmt=rs:640x143/rscb7/ng:webp/ngcb7) + +Для Grafana зайдите `http://serverip_or_hostname:3000`и войдите в систему, используя имя пользователя и пароль, указанные в `.ini` файле конфигурации. Учетные данные по умолчанию: _admin:admin_ + +![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose-1.png?ezimgfmt=rs:640x214/rscb7/ng:webp/ngcb7) + +Теперь вы можете продолжить и создать информационную панель для мониторинга. Одна вещь, которую я отметил, заключается в том, что я не мог получить метрики для использования при создании графиков, когда «доступ» в разделе «HTTP» источников данных был установлен на «сервер». Мне пришлось установить его как «браузер», как показано ниже: + +![](https://techviewleo.com/wp-content/uploads/2021/03/How-to-run-prometheus-and-grafana-with-docker-compose-4.png?ezimgfmt=rs:640x326/rscb7/ng:webp/ngcb7) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 9e0de35..3550ff4 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -37,7 +37,7 @@ nav: - Монтирование CIFS: ubuntu/mount-cifs.md - Proxmox: - CT Template: proxmox/ct-template.md - - Помойка: + - Другое: - SSL для сайта: other/ssl-for-site.md - Ubuntu bash aliases: other/ubuntu-bash-aliases.md - ТСД: @@ -60,6 +60,9 @@ nav: - VBA Отправка почты: other/office/excel/vba-send-email.md - VBA Прогресс бар: other/office/excel/vba-progress-bar.md - VBA Удаление пароля: other/office/excel/vba-remove-pass.md + - Телефоны: + - Grandstream: + - Provisioning через TFTP: other/phone/grandstream/provisioning.md - Сеть: - Mikrotik: