states/02 #8

Merged
thest1tch merged 121 commits from states/02 into main 1 year ago

@ -4,8 +4,8 @@ type: docker
name: build-home-docs name: build-home-docs
steps: steps:
- name: check-feature - name: build main
image: squidfunk/mkdocs-material:9.1.17 image: squidfunk/mkdocs-material:9.4.6
pull: if-not-exists pull: if-not-exists
volumes: volumes:
- name: site - name: site
@ -16,6 +16,23 @@ steps:
- cp -r site/ /site - cp -r site/ /site
- chown 1000:1000 /site - chown 1000:1000 /site
- chmod -R 777 /site - chmod -R 777 /site
when:
event:
- push
branch:
- main
- name: build states
image: git.st1t.ru/thest1tch/mkdocs-material:v9.4.6
pull: if-not-exists
volumes:
- name: site
path: /site
commands:
- mkdocs build
- cp -r site/ /site
- chown 1000:1000 /site
- chmod -R 777 /site
when: when:
event: event:
- push - push

@ -1,3 +1 @@
# Blogs # Блог
{{ blog_content }}

@ -0,0 +1,69 @@
---
draft: true
date: 2023-10-17
categories:
- "ark: se"
- games
- игры
- игровые сервера
---
## RCON Tools
[ARK RCON tool ACCIon](https://survivetheark.com/index.php?/forums/topic/255792-ark-rcon-tool-accion/&)
## Console Commands
[список](https://ark.fandom.com/wiki/Console_commands)
## Генераторы конфигов
[https://ini.arkforum.de/](https://ini.arkforum.de/)
[Dino Spawn Configuration Tool](http://www.gamewalkthrough-universe.com/Walkthroughs-Guides/Ark-Survival-Evolved/Game-Server-Customization/Dino-Spawn/default.aspx)
---
## Файлы конфигурации
Большинство параметров сервера нужно указывать в двух файлах конфигурации `GameUserSettings.ini` и `Game.ini`.
**Прежде чем вносить изменения в данные файлы, сервер нужно отключить**.
Расположение файлов конфигурации на FTP:
| Файл Конфигурации | Место нахождения |
| --- | --- |
| GameUserSettings.ini | ShooterGame/Saved/Config/LinuxServer/ |
| Game.ini | ShooterGame/Saved/Config/LinuxServer/ |
В файле `GameUserSettings.ini` содержатся параметры, как для клиента игры, так и для игрового сервера. Параметры клиента игры сервером не используются. Параметры сервера указаны в разделе под названием `[ServerSettings]`.
Файл `Game.ini` используется для более продвинутых модификаций - отключение каких либо энграмм, какое количество XP игрок будет получать за новый уровень, отключение специфического контента или изменение баланса в зависимости от предпочтений игроков.
Изначально Game.ini чист, параметры в него нужно будет вписывать в ручную. Для начала вписываем раздел `[/script/shootergame.shootergamemode]`, только после этого указываем параметр.
Пример:
```
[/script/shootergame.shootergamemode]
MatingIntervalMultiplie=1.0
```
Все параметры в файлах `GameUserSettings.ini` и `Game.ini` нужно обязательно указывать со значением. Если параметр не указан в конфигурационном файле, его значение автоматически используется по умолчанию.
После команды обязательно ставьте символ `=` только потом значение
Пример:
```
ServerCrosshair=True
AllowThirdPersonPlayer=True
MapPlayerLocation=True
MaxStructuresInRange=100
```
**Важное замечание по значениям параметров**
```plaintext
False - ложь\отключить
True - правда\включить
```

@ -0,0 +1,28 @@
---
draft: true
date: 2023-10-17
tags:
- "ark: se"
- games
- игры
---
[Локации на карте Fjordur](https://docs.google.com/spreadsheets/d/13Hov6IQNBorso8WqY0kkT72e4iISr192vkGbIMHVQWk/edit?usp=sharing)
[Карта](https://ark.fandom.com/wiki/Mod:Fjordur/Explorer\Map)
[Auction House команды админа](https://linode.ghazlawl.com/auction-house/admin-commands/)
[Конфигурация сервера](https://ark.fandom.com/wiki/Server_configuration#Command_line_arguments)
[Structures Plus](https://steamcommunity.com/sharedfiles/filedetails/?id=2184441067)
[Console Commands](https://ark.fandom.com/wiki/Console_commands)
[Spawn codes for Castles, Keeps, and Forts Remastered](https://usebeacon.app/mods/1814953878/spawncodes)
[Linux Server Tools](https://github.com/arkmanager/ark-server-tools#commands-acting-on-instances)
[Спавн предметов](https://dododex.ru/resources/)
[образ docker](https://hub.docker.com/r/hermsi/ark-server/)

@ -1,4 +1,11 @@
Google Chrome ---
draft: false
date: 2023-10-17
tags:
- chrome
---
# Google Chrome
## Блокировка медиакнопок ## Блокировка медиакнопок

@ -0,0 +1,21 @@
---
draft: false
date: 2023-10-17
tags:
- drivers
- hardware
---
# Железо
Куча разных ссылок с полезностями
## Загрузка драйверов
- [HP сетевые устройства](https://h10145.www1.hpe.com/downloads/ProductsList.aspx?smp=1)
- [HP сервера](https://support.hpe.com/hpesc/public/km/search#t=DriversandSoftware&sort=relevancy&layout=table&numberOfResults=25)
- [HP домашние устройства](https://support.hp.com/ru-ru/drivers)
## Проверка гарантии
- [Dell](https://www.dell.com/support/home/ru/ru/rsbsdt1/Products/?app=warranty)
- [HP](https://support.hp.com/us-en/checkwarranty)

@ -0,0 +1,23 @@
---
draft: false
date: 2023-10-17
tags:
- hikvision
- hardware
---
# Hikvision
## Hikvision: Путь до сохраненных файлов из веба
```
C:\Users\<USER>\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\C\Users\<USER>\Web\DownloadFiles\
```
## Hikvision: Password Reset Tool
[https://ipcamtalk.com/pages/hikvision-password-reset-tool/](https://ipcamtalk.com/pages/hikvision-password-reset-tool/)
[http://hillbillyhobbies.com/camera/](http://hillbillyhobbies.com/camera/)
[https://ixnfo.com/sbros-parolya-na-hikvision-kamerah-i-videoregistratorah.html](https://ixnfo.com/sbros-parolya-na-hikvision-kamerah-i-videoregistratorah.html)

@ -0,0 +1,10 @@
---
draft: false
date: 2023-10-17
---
Мой велосипед, чтобы на потерять инструкции и что в нем щас есть
[Настройка заднего амортизатора](https://cloud.st1t.ru/s/HNkq72CJzEtJ7gB)
[](https://www.ridefox.com/fox17/help.php?m=bike&id=824)

@ -0,0 +1,58 @@
---
draft: false
date: 2023-10-17
slug: revert-hp-ban-cartridges
---
# Откат обновления, запрещающего использовать сторонние картриджи на лазерных принтерах HP
В 2020 году компания HP выпустила новую прошивку на свои принтера и МФУ. В прошивке оказался заблокирована возможность использования сторонних картриджей. Достигалось это путем блокировки чипов, выпущенных не HP. Назревала проблема, стоимость нового мфу равна стоимости комплекта катриджей к нему. Не приятненько..
<!-- more -->
!!! note
Данное руководство сделано для модели МФУ HP M282, но приминимо и для других моделей со схожей проблемой. Нужно лишь найти файл старой прошивки
Версия прошивки, с которой начались проблемы - 20221021
Решение этой проблемы состоит в том, чтобы выполнить откат на более старую прошивку, когда печать работала на сторонних картриджах.
Кста, проверить версию прошивки можно через меню на принтере: `Настройка` > `Обслуживание` > `Версия микропрограммы`
Версия, на которой печать с использованием сторонних катриджей работает: **20211221**
## Отключить автоматическое обновление
Требуется отключить автоматическое обновление и не позволить принтеру скачать прошивку вновь. Я крайне рекомендую, отключать проверку обновлений на всей печатной технике и обновлять её только руками.
В панели управления перейдите по ссылке `Настройка` > `Обслуживание` > `LaserJet обновление` > `Управление обновлением`:
Затем установите следующие параметры:
- Разрешить понижение версии: `Да`
- Проверять автоматически: `Нет`
- Запрос перед установкой: `Всегода спрашивать`
- Разрешить обновления: `Да`
## Скачать старую прошивку
Чтобы найти прошивку, в которой нет функции блока чипов, потребовалось перерыть кучу сайтов. На Reddit заветная прошивка была найдена. Как же много тех, кто тоже ищет способы решения проблемы. Найти прошмивку на оффицильном сайте тяжело, тк доступ к старым версиям закрыт.
Вот файл для скачивания старой версии прошвики: [HP_Color_LaserJet_Pro_M282_M285_Multifunction_Printer_series_20200603.rfu](https://cloud.mail.ru/public/KWrv/YBL199ZDe).
## Понизить прошивку
1. Откройте веб-интерфейс. Вверху нажмите **«Сеть»**.
2. Слева установите флажок `FTP-ПЕЧАТЬ` и примените настройки.
3. Откройте ваше любимое FTP-приложение, я использую Filezilla
4. Введите IP-адрес, полученный на шаге 4, и подключитесь (имя пользователя или пароль не требуются).
5. Перетащите файл `HP_Color_LaserJet_Pro_M282_M285_Multifunction_Printer_series_20200603.rfu` на FTP-сервер удаленного сервера (у меня он был пустым. Никаких файлов там не было).
6. Принтер должен начать установку встроенного ПО, отобразить логотип HP и **ПРОГРАММИРОВАНИЕ...** После завершения обновления все будет готово.
После обновления, у меня возникла проблема, что после включения принтер спустя пару минут зависал. Решалось это перезагрузкой принтера. Но после зависал снова.
Чтобы решить проблему, я обновил версию ПО. Установил ту что предлагалось. Спасибо HP, что чтобы поставить последнюю, надо ставить их попорядку.
Обновление ставить используя сам принтер, а не веб-интерфейс. Версия которая должна быть после обновления = **20211221**
!!! warning
Объязательно нужно проверить, не включилось ли автообновления. Если включились - выключить их.
Далее, выключаем любую возможность изменения прошивки: `Настройка` > `Обслуживание` > `LaserJet обновление` > `Управление обновлением` > `Разрешить обновления`: Нет

@ -1,13 +1,13 @@
---
draft: false
date: 2023-10-17
---
# Руководство по Traefik Forward Auth Простая защита через Google SSO # Руководство по Traefik Forward Auth Простая защита через Google SSO
![](https://st1t.ru/wp-content/uploads/2022/11/traefik-forward-auth-google-flow-840x525.png)
----------
Хотите защитить свой стек Docker чем-то более надежным, чем обычная HTTP-аутентификация? Google OAuth2 SSO с Traefik Forward Auth — ваш выбор. Хотите защитить свой стек Docker чем-то более надежным, чем обычная HTTP-аутентификация? Google OAuth2 SSO с Traefik Forward Auth — ваш выбор.
Я был очень удивлен, узнав, что образ Thomseddon [Traefik Forward Auth](https://github.com/thomseddon/traefik-forward-auth) может защитить мои службы в Docker. Этот образ обеспечивает вход и аутентификацию OAuth/SSO для обратного прокси-сервера Traefik с использованием Traefik. Я был очень удивлен, узнав, что образ Thomseddon [Traefik Forward Auth](https://github.com/thomseddon/traefik-forward-auth) может защитить мои службы в Docker. Этот образ обеспечивает вход и аутентификацию OAuth/SSO для обратного прокси-сервера Traefik с использованием Traefik.
<!-- more -->
> Почему Traefik Google OAuth2 для служб Docker? > Почему Traefik Google OAuth2 для служб Docker?
> >
> Google OAuth2 позволяет вам использовать свою учетную запись Google для входа в свои службы. Использование **Google OAuth с Traefik** позволит вам добавлять учетные записи в белый список, внедрять двухфакторную аутентификацию Google, а также обеспечивать единый вход (SSO) для ваших служб. Это не только обеспечивает удобство, поскольку вам не нужно часто входить в систему, но и повышает безопасность. > Google OAuth2 позволяет вам использовать свою учетную запись Google для входа в свои службы. Использование **Google OAuth с Traefik** позволит вам добавлять учетные записи в белый список, внедрять двухфакторную аутентификацию Google, а также обеспечивать единый вход (SSO) для ваших служб. Это не только обеспечивает удобство, поскольку вам не нужно часто входить в систему, но и повышает безопасность.

@ -1,19 +0,0 @@
# Настройка бекапов в Veeam Agent
----------
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_1.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_2.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_3.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_4.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_6.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_7.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_5.png)
![](https://st1t.ru/wp-content/uploads/2023/04/veeam_agent_configure_backup_8.png)

@ -0,0 +1,50 @@
# Docker Compose Profile - профили
Те, кто юзает docker-compose, обычно делятся на 2 типа:
- пихаем все в 1 файл на каждый хост
- пихаем в разные файлы с какой-то логикой
Что, если я напишу, что можно совместить эти 2 типа людей. 1 файл, но с разбивкой по профилям с какой-то логикой. Звучи правда классно?
Возьмем классический монолитный файл docker-compose:
```yaml title="docker-compose.yaml"
version: "3.9"
services:
nginx1:
image: nginx
container_name: nginx1
profiles:
- prod
- test
nginx2:
image: nginx
container_name: nginx2
profiles:
- prod
nginx3:
image: nginx
container_name: nginx3
profiles:
- test
```
Используя profile, можно поместить 1 службу в несколько профилей, что дает больше гибкости, чем несколько файлов.
```bash
user@test tmp % docker-compose --profile test up -d
[+] Running 2/2
⠿ Container nginx1 Started 0.1s
⠿ Container nginx3 Started
```
Пример выше показывает, что были запущены только сервисы, с профилем `test`. Больше информации можно найти в [документации Docker](https://blog.ktz.me/monolithic-docker-compose-files-filtered-by-labels/#:~:text=%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8%20Docker%20.) .
!!! note
Eсли включаем профиль, то простой вариант docker-compose up -d не выполнится:
```bash
user@test tmp % docker-compose up -d
no service selected
```

@ -0,0 +1,35 @@
# Drone CI
```yaml title="docker-compose.yml"
version: '3.7'
services:
drone:
image: drone/drone:latest
container_name: drone
environment:
- DRONE_GITEA_SERVER=https://gitea.example.com/
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_GITEA_CLIENT_ID=<DRONE_GITEA_CLIENT_ID>
- DRONE_GITEA_CLIENT_SECRET=<DRONE_GITEA_CLIENT_SECRET>
- DRONE_SERVER_HOST=drone.example.com
- DRONE_SERVER_PROTO=https
- DRONE_RPC_SECRET=<DRONE_RPC_SECRET>
- DRONE_USER_CREATE=username:admin,admin:true # Имя указать, что юзается в gitea
# Если есть PostgreSQL
#- DRONE_DATABASE_DRIVER=postgres
#- DRONE_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/drone?sslmode=disable
restart: unless-stopped
drone-runner-docker:
image: drone/drone-runner-docker:1
container_name: drone-runner-docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=https
- DRONE_RPC_HOST=drone.example.com>
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=whatsinaname
restart: unless-stopped
```

@ -0,0 +1,134 @@
# Gitea
[Gitea](https://gitea.io/en-us/) - это self-hosted сервис, аналог GitHub. Основное отличие от GitLab - меньшее потребление ресурсов, прозрачность при обновлении. Gitea может использоваться как локально, так и в облачном режиме.
## Создание файлов конфигурации
Создадим папку, где будут храниться файл `docker-compose.yml`, а так же другие файлы, связанные с gitea.
Создадим файл `docker-compose.yml`:
```yaml title="docker-compose.yml"
version: '3.7'
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./data:/data
- ./custom:/app/gitea/custom
- ./log:/app/gitea/log
ports:
- 10880:3000
- 10022:22
```
В нем:
<table>
<tr>
<td><b>Параметр</b></td>
<td><b>Описание</b></td>
</tr>
<tr>
<td>
```yaml
image: gitea/gitea:latest
```
</td>
<td>Указываем, что используем последнию версию образа gitea, доступную в Docker Hub</td>
</tr>
<tr>
<td>
```yaml
container_name: gitea
```
</td>
<td>Имя контейнера</td>
</tr>
<tr>
<td>
```yaml
restart: always
```
</td>
<td>Автоматический перезапуск контейнера, при остановке</td>
</tr>
<tr>
<td>
```yaml
environment:
- USER_UID=1000
- USER_GID=1000
```
</td>
<td>ID пользователя и группы, использующиеся в контейнере</td>
</tr>
<tr>
<td>
```yaml
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ./data:/data
- ./custom:/app/gitea/custom
- ./log:/app/gitea/log
```
</td>
<td>
- `/etc/timezone` и `/etc/localtime` - берем таймзону и время из настроек хоста
- `./data` - хранение файлов данных gitea
- `./custom` - пользовательские файлы конфигурации
- `./log` - логи
</td>
</tr>
<tr>
<td>
```yaml
ports:
- "3000:3000"
- "10022:22"
```
</td>
<td>
Задаем порты, для доступа к gitea. 3000 - для веб-интерфейса. 10022 - для доступа через SSH
</td>
</tr>
</table>
## Запуск контейнера
Перейдем в директорию, где находится файл `docker-compose.yml` и запустим с помощью команды:
```
docker-compose up -d
```
Произойдет запуск контейнера gitea в фоновом режиме. В первый раз может занять какое-то время.
После запуска, нужно открыть браузер и ввести адрес: `http://server-ip:3000`. Заполняем поля. По умолчанию используется БД SQLite. В Administrator Account Settings обязательно укажите имя пользователя и пароль для учетной записи администратора.
Готово.

@ -0,0 +1,47 @@
```yaml title="docker-compose.yml"
version: "3.7"
services:
## Handbrake - Video Converter
handbrake:
container_name: handbrake
image: jlesage/handbrake:latest
restart: always
networks:
- traefik_proxy
# ports:
# - "5800:5800"
security_opt:
- no-new-privileges:true
volumes:
- $USERDIR/docker/handbrake/config:/config:rw
- $USERDIR/docker/handbrake/watch:/watch:rw # Watch folder
- $USERDIR/docker/handbrake/output:/output:rw # Output folder
- /mnt/storage:/storage:ro # Data folder - can be anything
- $USERDIR/dwnloads:/downloads:ro # Data folder - can be anything
environment:
- USER_ID=$PUID
- GROUP_ID=$PGID
- TZ=$TZ
- UMASK=002
- DISPLAY_WIDTH=1600
- DISPLAY_HEIGHT=768
# - AUTOMATED_CONVERSION_PRESET=H.265 MKV 480p30
- AUTOMATED_CONVERSION_PRESET=H.265 MKV 1080p30
- AUTOMATED_CONVERSION_FORMAT=mkv
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.handbrake-rtr.entrypoints=https"
- "traefik.http.routers.handbrake-rtr.rule=Host(`handbrake.$DOMAINNAME`)"
## Middlewares
- "traefik.http.routers.handbrake-rtr.middlewares=secure-chain@file"
## HTTP Services
- "traefik.http.routers.handbrake-rtr.service=handbrake-svc"
- "traefik.http.services.handbrake-svc.loadbalancer.server.port=5800"
networks:
traefik_proxy:
external: true
```

@ -0,0 +1,60 @@
# Homarr - дашборд для быстрого доступа к сервисам.
[![](https://img.shields.io/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars)](https://github.com/ajnart/homarr)
[![](https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release)](https://github.com/ajnart/homarr/releases/latest)
[![](https://img.shields.io/badge/Demo-purple)](https://demo.homarr.dev/ru)
Современная панель управления домашней лабой. Позваоляет видеть все, что поднято.
## Запуск через Docker
Запуск простой, через docker:
```bash
docker run \
--name homarr \
--restart unless-stopped \
-p 7575:7575 \
-v <your-path>/homarr/configs:/app/data/configs \
-v <your-path>/homarr/icons:/app/public/icons \
-d ghcr.io/ajnart/homarr:latest
```
После, открываем [http://localhost:7575/](http://localhost:7575) в браузере и пользуемся.
## Запуск через Docker-Compose
Надо создать файл docker-compose.yml и вставить следующий код:
```yaml title="docker-compose.yml"
version: '3.9'
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- ./homarr/configs:/app/data/configs
- ./homarr/icons:/app/public/icons
- ./homarr/img:/app/public/img
ports:
- 7575:7575
- EDIT_MODE_PASSWORD='strong_password'
```
Затем, запускаем через `docker-compose up -d ` находясь в той же папке, где файл.
## Возможности
- 🖌️ Широкие возможности настройки благодаря обширной системе перетаскивания сетки.
- ✨ Легко интегрируется с вашими любимыми автономными приложениями.
- 📌 Простое и быстрое управление приложениями — без использования YAML
- 🙊 Усовершенствованная система управления секретами для повышения безопасности
- 📄 Подробная документация и активное сообщество
- 🔍 Мгновенный поиск в Интернете или поддерживаемых интеграциях.
- 🏴 Football Football Result Следите за своей заявкой с помощью встроенной системы статуса.
- 🦞 Комплексный встроенный инструмент выбора значков, содержащий более 7000 значков.
- 🐳 Простое развертывание с помощью Docker, unRAID и Synology.
- 🚀 Совместимость с любым основным потребительским оборудованием (x86, Raspberry Pi, старые ноутбуки и т. д.)
- 💵 Бесплатность и открытый исходный код — ваши данные остаются на вашем устройстве. Нет данных телеметрии.

@ -1,69 +1,54 @@
[Self-hosted файл/медиа хостинг.](https://github.com/ZizzyDizzyMC/linx-server/) # Linx - свой хостинг для картинок, гифок, видяшек и документов.
## Демо [![](https://img.shields.io/docker/pulls/andreimarcu/linx-server?color=brightgreen)](https://hub.docker.com/r/andreimarcu/linx-server)
[![](https://img.shields.io/github/stars/andreimarcu/linx-server.svg?label=Stars&style=social)](https://github.com/andreimarcu/linx-server)
[![](https://img.shields.io/badge/Demo-purple)](https://put.icu/)
Как выглядит, можно посмотреть на: [https://put.icu/](https://put.icu/) Таких сервисов много, это лиш один из них. Позводяет захостить у себя сервис по хранению и выдаче различных медия. Аля imgur.
### Клиенты ## Запуск
| | | |
| --- | --- | --- |
| Официальный | CLI: **linx-client** | [Source](https://github.com/andreimarcu/linx-client) |
| Не официальный | Android: **LinxShare** | [Source](https://github.com/iksteen/LinxShare/) \| [Google Play](https://play.google.com/store/apps/details?id=org.thegraveyard.linxshare) |
| CLI: **golinx** | [Source](https://github.com/mutantmonkey/golinx) |
## Features
- Отображение базовых типов файлов (картинки, видео, аудио, markdown, pdf)
- Отображение подсветки кода во строенном редакторе
- API для работы. С документацией
- Скачивание торрентов
- Установка срока действия файлов и ссылок, удаление ключей, рандомные имена файлов
## Screenshots
| | | |
| --- | --- | --- |
| ![](https://user-images.githubusercontent.com/4650950/76579039-03c82680-6488-11ea-8e23-4c927386fbd9.png) | ![](https://user-images.githubusercontent.com/4650950/76578903-771d6880-6487-11ea-8baf-a4a23fef4d26.png) | ![](https://user-images.githubusercontent.com/4650950/76578910-7be21c80-6487-11ea-9a0a-587d59bc5f80.png) |
| ![](https://user-images.githubusercontent.com/4650950/76578908-7b498600-6487-11ea-8994-ee7b6eb9cdb1.png) | ![](https://user-images.githubusercontent.com/4650950/76578907-7b498600-6487-11ea-8941-8f582bf87fb0.png) | |
## Начало
1. Создать папки `files` и `meta` и запустить `chown -R 65534:65534 meta && chown -R 65534:65534 files` 1. Создать папки `files` и `meta` и запустить `chown -R 65534:65534 meta && chown -R 65534:65534 files`
2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах. 2. Создайте файл конфигурации (пример предоставлен в репозитории), мы будем называть его **linx-server.conf** в следующих примерах.
Пример: === "Docker"
``` ```bash
docker run -p 8080:8080 -v /path/to/linx-server.conf:/data/linx-server.conf -v /path/to/meta:/data/meta -v /path/to/files:/data/files andreimarcu/linx-server -config /data/linx-server.conf docker run andreimarcu/linx-server \
``` -p 8080:8080 \
-v /path/to/linx-server.conf:/data/linx-server.conf \
-v /path/to/meta:/data/meta \
-v /path/to/files:/data/files \
-config /data/linx-server.conf
```
Пример с docker-compose === "Docker Compose"
```yaml ```yaml title="docker-compose.yaml"
version: "3.7" version: "3.9"
# linx - self-hosting picture and data service:
# linx - self-hosting picture and data
linx: linx:
container_name: linx-server container_name: linx-server
image: andreimarcu/linx-server image: andreimarcu/linx-server
command: -config /data/linx-server.conf command: -config /data/linx-server.conf
volumes: volumes:
- $DOCKER_APP/linx/files:/data/files - ./linx/files:/data/files
- $DOCKER_APP/linx/meta:/data/meta - ./linx/meta:/data/meta
- $DOCKER_APP/linx/linx-server.conf:/data/linx-server.conf - ./linx/linx-server.conf:/data/linx-server.conf
networks:
- direct_net
environment: environment:
PUID: $PUID PUID: 1000
PGID: $PGID PGID: 1000
ports: ports:
- "8090:8080" - "8080:8080"
restart: unless-stopped restart: unless-stopped
``` ```
В идеале вы должны использовать обратный прокси-сервер, такой как nginx, traefik или caddy, для обработки сертификатов TLS. ## Возможности
## Автор - Отображение базовых типов файлов (картинки, видео, аудио, markdown, pdf)
- Отображение подсветки кода во строенном редакторе
Andrei Marcu, [https://andreim.net/](https://andreim.net/) - API для работы. С документацией
- Скачивание торрентов
- Установка срока действия файлов и ссылок, удаление ключей, рандомные имена файлов

@ -0,0 +1,10 @@
# Настройка cron
запустить редактор crontab
```
crontab -e
```
В редакторе добавляем:
```
*/5 * * * * docker exec -u www-data nextcloud php cron.php
```

@ -1,4 +1,9 @@
```env # Nextcloud - свое облако для файлов
Запуск через docker-compose. Для начала создадим файл `.env` со следующим содержанием:
```env title=".env"
PUID= PUID=
PGID= PGID=
TZ= TZ=
@ -8,23 +13,11 @@ NEXTCLOUD_DOMAIN_NAME=
REDIS_PASSWORD= REDIS_PASSWORD=
``` ```
docker-compose.yml Далее создаем файл `docker-compose.yml`
```yaml ```yaml title="docker-compose.yml"
version: "3.7" version: "3.7"
secrets:
nextcloud_admin_password:
file: $SECRETSDIR/nextcloud_admin_password # put admin password in this file
nextcloud_admin_user:
file: $SECRETSDIR/nextcloud_admin_user # put admin username in this file
nextcloud_postgres_db:
file: $SECRETSDIR/nextcloud_postgres_db # put postgresql db name in this file
nextcloud_postgres_password:
file: $SECRETSDIR/nextcloud_postgres_password # put postgresql password in this file
nextcloud_postgres_user:
file: $SECRETSDIR/nextcloud_postgres_user # put postgresql username in this file
services: services:
# Nextcloud Docker Application # Nextcloud Docker Application
nextcloud: nextcloud:
@ -52,12 +45,6 @@ services:
- NEXTCLOUD_TRUSTED_DOMAIN=$NEXTCLOUD_DOMAIN_NAME - NEXTCLOUD_TRUSTED_DOMAIN=$NEXTCLOUD_DOMAIN_NAME
- TRUSTED_PROXIES=172.18.0.253 - TRUSTED_PROXIES=172.18.0.253
- OVERWRITEPROTOCOL=https - OVERWRITEPROTOCOL=https
secrets:
- nextcloud_admin_password
- nextcloud_admin_user
- nextcloud_postgres_db
- nextcloud_postgres_password
- nextcloud_postgres_user
labels: labels:
- com.centurylinklabs.watchtower.enable=False - com.centurylinklabs.watchtower.enable=False
``` ```

@ -2,7 +2,7 @@
При использовании официального Nextcloud образа Docker вы увидите сообщение вроде: При использовании официального Nextcloud образа Docker вы увидите сообщение вроде:
![](../images/docker/nextcloud-docker-php-imagick.png) ![](../../images/docker/nextcloud-docker-php-imagick.png)
Чтобы исправить это предупреждение в docker нужно установить пакет `libmagickcore-6.q16-6-extra`: Чтобы исправить это предупреждение в docker нужно установить пакет `libmagickcore-6.q16-6-extra`:

@ -0,0 +1,15 @@
# Проблемы с доступом после перемещения `data`
Иногда так бывает, что при переносе `data` папки используя [инструкцию](https://help.nextcloud.com/t/howto-change-move-data-directory-after-installation/17170) возникают проблемы.
Одна из них - не возможность удалять или добавлять новые файлы.
При выполнении команды `sudo -u www-data php -f /var/www/html/nextcloud/console.php files:scan --all`, будет выходить ошибка: `Exception: Environment not properly prepared.`
## Решение
Ошибка идет из-за того, что неверно выданы права на папку `data`. Права должны быть у юзера `www-data`:
```bash
chown -R www-data:www-data /path/to/nextcloud
find /path/to/nextcloud/ -type d -exec chmod 750 {} \;
find /path/to/nextcloud/ -type f -exec chmod 640 {} \;
```

@ -0,0 +1,33 @@
# Pictshare - свой хостинг для картинок, гифок, видяшек и документов.
[![](https://img.shields.io/docker/pulls/hascheksolutions/pictshare?color=brightgreen)](https://hub.docker.com/r/hascheksolutions/pictshare)
[![Apache License](https://img.shields.io/badge/license-Apache-brightgreen.svg?style=flat)](https://github.com/HaschekSolutions/pictshare/blob/master/LICENSE)
[![](https://img.shields.io/github/stars/HaschekSolutions/pictshare.svg?label=Stars&style=social)](https://github.com/HaschekSolutions/pictshare)
Таких сервисов много, это лиш один из них. Позводяет захостить у себя сервис по хранению и выдаче различных медия. Аля imgur.
## Запуск
Запуск простой, через docker:
```bash
docker run -d -p 8080:80 --name=pictshare ghcr.io/hascheksolutions/pictshare
```
После, открываем [http://localhost:8080/](http://localhost:8080) в браузере и пользуемся.
## Возможности
- Selfhostable
- [Простая загрузка через API](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/API.md)
- Без БД
- [Масштабируемость](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/SCALING.md)
- Фильтры для картинок
- GIF в MP4 преобразование
- JPG, PNG в WEBP преобразование
- MP4 смена размера
- PictShare удаляет все данные exif, чтобы вы могли загружать фотографии со своего телефона, при этом все теги GPS и информация о модели камеры будут удалены.
- Изменяйте и изменяйте размеры своих изображений и видео, просто отредактировав URL-адрес.
- Дубликаты не занимают места. Если один и тот же файл загружается дважды, вторая загрузка будет связана с первой.
- [Много возможностей для настройки](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/CONFIG.md)
- Полный контроль над вашими данными. Удаление изображений с индивидуальными и глобальными кодами удаления

@ -1,44 +1,40 @@
Plex Meta Managers # Plex Meta Managers
.env файл [![GitHub release (latest by date)](https://img.shields.io/github/v/release/meisnate12/Plex-Meta-Manager?style=plastic)](https://github.com/meisnate12/Plex-Meta-Manager/releases)
``` [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/meisnate12/plex-meta-manager?label=docker&sort=semver&style=plastic)](https://hub.docker.com/r/meisnate12/plex-meta-manager)
PUID=1000 [![Docker Pulls](https://img.shields.io/docker/pulls/meisnate12/plex-meta-manager?style=plastic)](https://hub.docker.com/r/meisnate12/plex-meta-manager)
PGID=1000
TZ="Asia/Yekaterinburg"
DOCKER_APP="/opt/appdata"
```
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/PlexMetaManager?color=%2300bc8c&label=r%2FPlexMetaManager&style=plastic)](https://www.reddit.com/r/PlexMetaManager/)
``` yaml ```yaml title="docker-compose.yml"
plexmm-films: version: "3.7"
services:
plexmm:
image: lscr.io/linuxserver/plex-meta-manager:latest image: lscr.io/linuxserver/plex-meta-manager:latest
container_name: plexmm-films container_name: plexmm
restart: "no" restart: "no"
networks:
- direct_net
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
environment: environment:
TZ: $TZ TZ: "Asia/Yekaterinburg"
PUID: $PUID PUID: 1000
PGID: $PGID PGID: 1000
PMM_CONFIG: /config/config.yml #optional PMM_CONFIG: /config/config.yml #optional
PMM_TIME: 03:00 #optional PMM_TIME: 03:00 #optional
PMM_RUN: "True" #optional PMM_RUN: "True" #optional
PMM_TEST: "False" #optional PMM_TEST: "False" #optional
PMM_NO_MISSING: "False" #optional PMM_NO_MISSING: "False" #optional
volumes: volumes:
- $DOCKER_APP/plexmm/films:/config - ./plexmm:/config
``` ```
конфиг файл в папке $DOCKER_APP/plexmm/films ## Конфиги под разные типы библиотек
config.yml === "Фильмы"
```yaml ```yaml title="./plexmm/config.yml"
## This file is a template remove the .template to use the file ## This file is a template remove the .template to use the file
libraries:
libraries:
Фильмы: Фильмы:
metadata_path: metadata_path:
- file: config/Movies/Genre.yml - file: config/Movies/Genre.yml
@ -66,82 +62,12 @@ libraries:
mass_critic_rating_update: imdb mass_critic_rating_update: imdb
mass_audience_rating_update: mdb_trakt mass_audience_rating_update: mdb_trakt
mass_user_rating_update: tmdb mass_user_rating_update: tmdb
playlist_files: ```
- pmm: playlist
settings:
cache: true
cache_expiration: 60
asset_directory: config/assets
asset_folders: true
asset_depth: 0
create_asset_folders: false
prioritize_assets: false
dimensional_asset_rename: false
download_url_assets: false
show_missing_season_assets: false
show_missing_episode_assets: false
show_asset_not_needed: true
sync_mode: append
minimum_items: 1
default_collection_order:
delete_below_minimum: true
delete_not_scheduled: false
run_again_delay: 2
missing_only_released: false
only_filter_missing: false
show_unmanaged: true
show_filtered: false
show_options: false
show_missing: true
show_missing_assets: true
save_report: false
tvdb_language: rus
ignore_ids:
ignore_imdb_ids:
item_refresh_delay: 0
playlist_sync_to_user: all
playlist_report: false
verify_ssl: true
custom_repo:
check_nightly: false
show_unconfigured: true
playlist_exclude_users:
webhooks: # Can be individually specified per library as well
error:
version:
run_start:
run_end:
changes:
delete:
plex: # Can be individually specified per library as well; REQUIRED for the script to run
url: http://
token: token
timeout: 60
clean_bundles: false
empty_trash: false
optimize: false
tmdb: # REQUIRED for the script to run
apikey: api
language: ru
cache_expiration: 60
region:
trakt:
client_id: id
client_secret: secret
pin: pin
authorization:
# everything below is autofilled by the script
access_token:
token_type:
expires_in:
refresh_token:
scope: public
created_at:
```
Для сериалов: === "Сериалы"
```yaml ```yaml title="./plexmm/config.yml"
libraries:
Сериалы: Сериалы:
metadata_path: metadata_path:
- file: config/TV-Shows/Collections.yml - file: config/TV-Shows/Collections.yml
@ -183,4 +109,28 @@ trakt:
horizontal_align: center horizontal_align: center
vertical_align: top vertical_align: top
vertical_offset: 0 vertical_offset: 0
```
## Улучшения
### Статус сериала (TMDB)
В конфиге добавить этот текст для библиотеки, в которой нужно отображение:
```yaml
- pmm: status
template_variables:
text_canceled: Отменен
text_airing: Идет сезон
text_returning: Продолжится
text_ended: Завершен
font_size: 75
#back_color: "#262626" # darker
back_width: 1920
back_height: 125
horizontal_align: center
vertical_align: top
vertical_offset: 0
``` ```
[Документация](https://metamanager.wiki/en/latest/defaults/overlays/mediastinger.html)

@ -1,3 +1,5 @@
[![](https://img.shields.io/github/stars/Taxel/PlexTraktSync?label=%E2%AD%90%20Stars)](https://github.com/Taxel/PlexTraktSync)
Сервис добавляет двустороннюю сихронизацию между trakt.tv и Plex Media Server. Для этого требуется учетная запись trakt.tv, но без премиум-подписки Plex или VIP-подписки Trakt, в отличие от приложения Plex, предоставляемого Trakt. Сервис добавляет двустороннюю сихронизацию между trakt.tv и Plex Media Server. Для этого требуется учетная запись trakt.tv, но без премиум-подписки Plex или VIP-подписки Trakt, в отличие от приложения Plex, предоставляемого Trakt.
## Функции ## Функции
@ -67,5 +69,3 @@ servers:
urls: urls:
- http://plex:32400 - http://plex:32400
``` ```
[Github](https://github.com/Taxel/PlexTraktSync){ .md-button .md-button--primary }

@ -1,4 +1,8 @@
[github.com](https://github.com/thomseddon/traefik-forward-auth) # Traefik Forward Auth
[![](https://img.shields.io/github/stars/thomseddon/traefik-forward-auth?label=%E2%AD%90%20Stars)](https://github.com/thomseddon/traefik-forward-auth)
[![](https://img.shields.io/github/v/release/thomseddon/traefik-forward-auth?label=%F0%9F%9A%80%20Release)](https://github.com/thomseddon/traefik-forward-auth/releases/latest)
![Docker Pulls](https://img.shields.io/docker/pulls/thomseddon/traefik-forward-auth.svg)
- Бесшовно накладывает любой http-сервис на одну конечную точку (см.: `url-path`в [разделе «Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) ») . - Бесшовно накладывает любой http-сервис на одну конечную точку (см.: `url-path`в [разделе «Конфигурация](https://github.com/thomseddon/traefik-forward-auth#configuration) ») .
- Поддерживает несколько поставщиков, включая Google и OpenID Connect (поддерживается Azure, Github, Salesforce и т. д.). - Поддерживает несколько поставщиков, включая Google и OpenID Connect (поддерживается Azure, Github, Salesforce и т. д.).

@ -0,0 +1,201 @@
# Настройка страницы в Traefik 2
## Промежуточное программное обеспечение ErrorPage
Traefik поставляется с готовым [middlewares error](https://docs.traefik.io/middlewares/errorpages/). Его обязанность — возвращать пользовательскую страницу вместо страницы по умолчанию в соответствии с настроенными диапазонами кодов состояния HTTP. Вот пример:
```yaml
# Dynamic Custom Error Page for 4XX/5XX Status Code
labels:
- "traefik.http.middlewares.test-errorpage.errors.status=400-599"
- "traefik.http.middlewares.test-errorpage.errors.service=serviceError"
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
```
Как указано в официальной документации:
- **status** — это статус HTTP, который вызывает страницу с ошибкой (в этом примере каждый код между 400 и 599).
- `serviceError` - это **служба** , которая будет обслуживать новую запрошенную страницу ошибки
- **запрос** — URL-адрес страницы ошибки (размещенной на сервисе), где `{status}` в запросе будет заменен полученный код состояния.
Стоит отметить, что страницы ошибок не размещаются непосредственно на Traefik, необходимо размещать их на своем веб-сервере. На следующем рисунке из документации Traefik показан пример этого сценария.
![](../../images/docker/traefik-errorpages.jpg)
## Рабочий сценарий
Промежуточное ПО ErrorPage - это то что нам нужно. Но как мы можем использовать его для обслуживания наших страниц и ошибок в целом?
Представьте, что вы хотите обслуживать глобальную страницу для URL-адресов, которые указывают на ваш хост, но не привязаны к определенным службам. Например, если у вас есть запись DNS, которая соответствует таким запросам, как:
```
*.example.com
```
URL-адреса, такие как:
```
http://bla-bla.example.com
```
попадут в ваш Traefik, но ни один маршрутизатор не справится с ними. В таких случаях мы хотим, чтобы Traefik вернул нашу классную кастомную страницу ошибки.
Как мы можем это настроить? Начнем с этого чертежа:
**В двух словах:** мы определяем правило **универсального маршрутизатора с низким приоритетом** , которое сработает только в том случае, если другие маршрутизаторы для определенных служб не могут обработать запрос. Затем такой неизвестный запрос обрабатывается **промежуточным программным обеспечением ErrorPage**, которое сообщает **Nginx** об обслуживании страницы с ошибкой.
## Практика
Пришло время практики. Будем считать, что у нас же есть работающий Traefik 2, запущенный через `docker-compose`. Добавим в нему `nginx` с нашими страничками ошибок и тестовый контейнер `whoami` для проверки работы:
??? note
```yaml title="docker-compose.yml"
version: "3.9"
networks:
traefik_net:
external: true
services:
# Traefik 2 - Reverse Proxy
traefik:
container_name: traefik
image: traefik:2.10
restart: always
security_opt:
- no-new-privileges:true
command: # CLI arguments
- --api.dashboard=true
- --providers.docker.network=traefik_net
- --entrypoints.webinsecure.address=:80
- --providers.docker.exposedByDefault=false
- --providers.docker=true
networks:
- traefik_net
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
traefik.enable: true
## Dashboard
traefik.http.routers.traefik.entrypoints: http
traefik.http.routers.traefik.rule: host('traefik.localhost')
traefik.http.routers.traefik.service: api@internal
nginx-error:
image: nginx:latest
volumes:
- ./error-pages:/usr/share/nginx/error-pages
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
network:
- traefik_net
labels:
traefik.enable: true
traefik.http.routers.error-rtr.rule: HostRegexp(`{host:.+}`)
traefik.http.routers.error-rtr.priority: 1
traefik.http.routers.error-rtr.entrypoints: webinsecure
traefik.http.routers.error-rtr.middlewares: error-pages-middleware
traefik.http.middlewares.error-pages-middleware.errors.status: 400-599
traefik.http.middlewares.error-pages-middleware.errors.service: error-pages-service
traefik.http.middlewares.error-pages-middleware.errors.query: /{status}.html
traefik.http.services.error-pages-svc.loadbalancer.server.port: 80
test-app:
image: containous/whoami
networks:
- traefik_net
labels:
traefik.enable: true
traefik.http.routers.error-rtr.rule: host('test.localhost')
traefik.http.routers.error-rtr.entrypoints: webinsecure
traefik.http.services.error-pages-svc.loadbalancer.server.port: 80
```
В приведенном compose файле содержится все, что нам нужно для отображения кастомных страниц ошибок. Страницы ошибок находятся в службе Docker `nginx-error`, которая управляет контейнером **Nginx**, предназначенным для страниц ошибок.
Все начинается с `error-router`:
```yaml
labels:
traefik.http.routers.error-rtr.rule: HostRegexp(`{host:.+}`)
traefik.http.routers.error-rtr.priority: 1
traefik.http.routers.error-rtr.entrypoints: webinsecure
```
Ему присвоен [приоритет](https://doc.traefik.io/traefik/routing/routers/#priority) `1`, поэтому он перехватывает все запросы , если они не были обработаны ранее другими (т.е. `traefik.http.routers.traefik` и `traefik.http.routers.my-test-app`).
Затем прикрепляем к нему `error-pages-middleware`:
```yaml
labels:
traefik.http.routers.error-rtr.middlewares: error-pages-middleware
```
это фактическое промежуточное программное обеспечение ErrorPage Traefik:
```yaml
labels:
traefik.http.middlewares.error-pages-middleware.errors.status: 400-599
traefik.http.middlewares.error-pages-middleware.errors.service: error-pages-svc
traefik.http.middlewares.error-pages-middleware.errors.query: /{status}.html
traefik.http.services.error-pages-service.loadbalancer.server.port: 80
```
Такое промежуточное программное обеспечение запросит `error-pages-svc` обслуживание наших кастомных страниц ошибок.
Пара слов о **папках Nginx**. В этом примере мы связываем монтирование (но мы также можем скопировать файлы в контейнер) двух основных томов:
```yaml
volumes:
- ./error-pages:/usr/share/nginx/error-pages
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
```
В этой папке ``./error-pages` мы храним файлы страниц ошибок, такие как наши собственные файлы `404.html`. Кроме того, мы настраиваем конфигурацию этого экземпляра Nginx следующим образом `default.conf`:
```nginx
server {
listen 80;
server_name localhost;
error_page 404 /404.html;
# other error pages here:
# error_page 403 /403.html;
location / {
root /usr/share/nginx/error-pages;
internal;
}
}
```
## Проверка работы
Пришло время запустить наши контейнеры и проверить их работу.
Если вы запросите: `http://traefik.localhost/` или `http://test.localhost/` вы получите панель управления Traefik и выходные данные whoami соответственно.
Если вы попытаетесь получить: `http://bla-bla.localhost`, Traefik вернет именно вашу дружественную страницу с ошибкой 404 (т. е. `404.html`).
!!! tip
Обратите внимание: если вы заинтересованы в **управлении ошибками таким же образом и для определенных служб, вы можете использовать промежуточное программное обеспечение ErrorPage**.
Например, вы можете подключить промежуточное программное обеспечение к маршрутизатору панели управления Traefik следующим образом:
```yaml
labels:
# Dashboard
traefik.http.routers.traefik.rule: Host(`traefik.localhost`)
traefik.http.routers.traefik.service: api@internal
traefik.http.routers.traefik.entrypoints: webinsecure
# Attach the error middleware also to this router
traefik.http.routers.traefik.middlewares: error-pages-middleware
```
Теперь, если вы запросите: `http://traefik.localhost/bla-bla`, вы снова получите настроенную страницу ошибки 404.
---
[Middlewares ErrorPage](https://docs.traefik.io/middlewares/errorpages/)
Интересная ветка на эту тему на форуме сообщества Containous.
[Статические страницы ошибок сервера в образе Docker](https://github.com/tarampampam/error-pages) (также готовы для Traefik)

@ -0,0 +1,33 @@
# TCP Routes
Начинав со скромной установки домашней лабы на базе самосборного ПК на 4 диска и хостинга на нем Plex, я за 5 лет начучился поднимать с запускать различные полезные вещи для дома.
Сейчас у меня есть несколько доменов с различным сервисами. Где то год назад я понял, что надо разделать сервисы по типу. Но была проблема - поскульку сервисы находятся на 3 и более разных хостах докера, то прописывать правила в Traefik нужно было на главном. Это было как бы норм, но не совсем удобно.
Поэтому я начал изучать, как можно было бы вынести конфиги и сам Траефик на разные хосты. И решение это TCP Route.
По сути, это TCP-маршрутизатор делающий следующее: если есть запросы, адресованные домен2 или его субдоменам, то запрос передается второму экземпляру Traefik, который прослушивает адрес 192.168.100.254:443 на другом моем хосте.
![TCP Route](../../images/docker/traefik-tcp-routes.png)
Для того, чтобы реализовать это, нужно создать файл yml в папке rules с определением route TCP:
```yml title="tcp-domain2.yml"
tcp:
routers:
tcp-domain2-rtr:
entryPoints:
- "https"
rule: "HostSNIRegexp(`domain2.com`, `{subdomain:[a-z]+}.domain2.com`)"
service: tcp-domain2-svc
tls:
passthrough: true
services:
tcp-domain2-svc:
loadBalancer:
servers:
- address: "192.168.100.254:443"
```
Правда все равно есть большое НО:
!!! warning
Если основной экземпляр Traefik не работает, то и TCP Route работать тоже не будет!

@ -0,0 +1,26 @@
# WikiJS
```yaml
version: "3.7"
networks:
traefik_net:
external: true
services:
wikijs:
image: lscr.io/linuxserver/wikijs
container_name: wikijs
environment:
PUID: $PUID
PGID: $PGID
TZ: $TZ
networks:
- traefik_net
volumes:
- $DOCKER_APP/wiki/config:/config
- $DOCKER_APP/wiki/data:/data
ports:
- 4000:3000
restart: unless-stopped
```

@ -1,28 +1,26 @@
# Настройка и использование консольных команд Админа в ARK: Survival Evolved
# Настройка и использование консольных команд Админа в Ark Survival Evolved Как использовать администраторские команды консоли в **ARK: Survival Evolved**? Для этого потребуется открыть консоль, нажав кнопку **TAB**.
Некоторые из этих команд будут недоступны, пока вы не выполнили аутентификацию с помощью команды `enablecheats`.
Как использовать администраторские команды консоли в **Ark: Survival Evolved**? Для этого потребуется открыть консоль, нажав кнопку **TAB**. Команды, отмеченные тегом `_cheat_` должны указываться с префиксом `admincheat`.
Некоторые из этих команд будут недоступны, пока вы не выполнили аутентификацию с помощью команды **enablecheats**.
Команды, отмеченные тегом _cheat_ должны указываться с префиксом **admincheat**.
## Использование ## Использование
### Первый способ ### Первый способ
1. Выключаем сервер. 1. Выключаем сервер.
2. В конфиге сервера **GameUserSettings.ini** указываем пароль администратора переменной **ServerAdminPassword.** (Пример: _ServerAdminPassword password_). 2. В конфиге сервера `GameUserSettings.ini` указываем пароль администратора переменной `ServerAdminPassword`. (Пример: `ServerAdminPassword password`).
3. Включаем сервер. 3. Включаем сервер.
4. Заходим в игру и на сервер, открываем консоль нажатием кнопки **TAB**. 4. Заходим в игру и на сервер, открываем консоль нажатием кнопки **TAB**.
5. Авторизируемся на сервере как администратор указывая команду: **enablecheats «AdminPassword».** (Пример: enablecheats password). 5. Авторизируемся на сервере как администратор указывая команду: `enablecheats AdminPassword`. (Пример: `enablecheats password`).
### Второй способ ### Второй способ
Добавляем игроков в белый список. Добавляем игроков в белый список.
1. Выключаем сервер. 1. Выключаем сервер.
2. Создать файл **AllowedCheaterSteamIDs.txt** (_Путь: ShooterGame/Saved/AllowedCheaterSteamIDs.txt_). 2. Создать файл `AllowedCheaterSteamIDs.txt` (Путь: `ShooterGame/Saved/AllowedCheaterSteamIDs.txt`).
3. Указать Steam ID игрока, если администраторов несколько, Steam ID нужно указывать с новой строчки. 3. Указать Steam ID игрока, если администраторов несколько, Steam ID нужно указывать с новой строчки.
4. Включаем сервер. 4. Включаем сервер.
5. Авторизация на сервере командой **enablecheats «AdminPassword»** не требуется. 5. Открываем графическую админку командой `ShowMyAdminManager`.
6. Открываем графическую админку командой **ShowMyAdminManager**.

@ -0,0 +1,22 @@
# Factorio
## Мирный режим
Ввод команды, отключит ачивки
```
/c game.player.print(game.player.surface.peaceful_mode);
```
## Различные ссылки
[Хранилище чертежей](https://www.factorio.school/)
[Моды для сервера](https://mods.factorio.com/)
[Введение в поезда](https://forums.factorio.com/viewtopic.php?f=194&t=18621)
[Балансировщики разгрузки1](https://forums.factorio.com/viewtopic.php?f=194&t=71921) и [Балансировщики разгрузки1](http://greenlightning.eu/games/factorio-train-balancer/)
[Калькулятор производства](https://kirkmcdonald.github.io/calc.html)
[Чертежи для BobS](https://pastebin.com/u/fed1s)

@ -0,0 +1,5 @@
# VanillaHUD Plus
https://gitlab.com/steam-test1/alternative-updates/-/wikis/VanillaHUD-Plus-Compatibility-Guide
https://modworkshop.net/mod/25629

@ -0,0 +1,133 @@
# Time trigger
`time` — это один из триггеров которые можно использовать в автоматизациях Home Assistant.
С помощью этого триггера можно запустить автоматизацию в определенное время. Есть несколько вариантов как можно использовать триггер:
- указать точное время
- использовать `input_datetime`
- использоваь сенсор в котором хранится время
- указать несколько разных объектов
!!! note
Важный момент — чтобы этот триггер правильно работал нужно чтобы в Home Assistant был указан правильный часовой пояс.
Кроме триггера `time` еще есть триггер `time_pattern` с помощью которого можно настраивать регулярный запуск автоматизаций.
## `time` - точное время
!!! example
```yaml
automation:
- trigger:
platform: time
at: "07:00:00"
action:
service: system_log.write
data:
message: "время 07:00:00"
```
Эта автоматизация будет запускаться каждый день в 7 утра. Если сервер в момент запуска будет выключен, то запуска автоматизации не будет
Значение `at` записывается в формате `ЧЧ:ММ:СС` (`ЧЧ` - час, `ММ` - минуты, `СС` - секунды, `:` - разделитель).
Секунды или минуты, равные 00 можно не указывать. Запись `at: "01:58"` означает то же самое что и `at: "01:58:00"`.
В поле `at` можно указать только время, там нельзя указать дату и время. Если написать `at: "2023-10-20 01:58:00"`, то проверка конфигурации Home Assistant пройдет успешно, но в логе будет ошибка
Указание точного времени в автоматизации используется редко. Это не особо удобно. Чтобы поменять время запуска автоматизации нужно менять код и нажимать кнопку чтобы Home Assistant узнал про изменение. Более гибкие способы указания времени — это использование `input_datetime` или использование сенсора.
## `input_datatime`
!!! example "Пример автоматизации"
```yaml
automation:
- trigger:
platform: time
at: input_datetime.sample
action:
service: system_log.write
data:
message: time
```
Это автоматизация выполнится в момент времени который указан в `input_datetime.sample`.
`input_datetime` может быть определен тремя разными способами:
- только время
- только дата
- есть время и дата
Вот пример описания `input_datetime` в котором есть время и дата:
```yaml
input_datetime:
sample:
name: Sample
has_time: true
has_date: true
```
- в `input_datetime` есть только время - автоматизация будет запускаться каждый день в это время
- в `input_datetime` есть только дата - автоматизация запустися в `00:00:00` в эту дату
- в `input_datetime` есть время и дата - автоматизация запустится в указанную дату в указанное время
## Сенсор
В качестве значения `at` можно указать сенсор у которого `device_class timestamp`:
```yaml
automation:
- trigger:
platform: time
at: sensor.phone_next_alarm
action:
service: system_log.write
data:
message: alarm
```
## Комбинирование разных объектов
В значении `at` триггера `time` можно указать несколько разных объектов:
```yaml
automation:
- trigger:
platform: time
at:
- "09:38:00"
- input_datetime.sample
- sensor.phone_next_alarm
action:
service: system_log.write
data:
message: time
```
## Запуск раз в месяц
Иногда надо запускать что-то раз в месяц в какое-то число. Это можно сделать с помощью триггера `time` и доп. условия `condition`:
```yaml
automation:
- trigger:
platform: time
at: 21:40:00"
condition:
condition: template
value_template: >
{{ now().day == 20 }}
action:
service: system_log.write
data:
message: "Today is 20"
```
Запуск произойдет 20 числа в 21:40, при условии, что сервер работает в указанное время

@ -0,0 +1,3 @@
# Xiaomi Mi Air Purifier & Xiaomi Mi Air Humidifier
![GitHub stars](https://img.shields.io/github/stars/syssi/xiaomi_airpurifier)

@ -0,0 +1,8 @@
# custom:stack-in-card
```yaml
# тип
```

@ -0,0 +1,336 @@
# Будильник для Home Assistant
Представление карточки в Home Assistant:
В карточке используется дополнительные компоненты. Ставятся при помощи HACS.:
- [custom:stack-in-card](https://github.com/custom-cards/stack-in-card)
- [custom:button-card](https://github.com/custom-cards/button-card)
## Карточка
![](../../images/hass/card-budilnik-1.png)
![](../../images/hass/card-budilnik-2.png)
??? example "Код карточки"
```yaml title="card-budilnik.yaml"
type: custom:stack-in-card
title: Будильник
cards:
- cards:
- entity: input_boolean.alarm_weekday
name: Будни
size: 30px
icon: mdi:alarm
tap_action:
action: toggle
type: custom:button-card
- entity: input_boolean.alarm_weekend
name: Выходные
icon: mdi:party-popper
size: 30px
tap_action:
action: toggle
type: custom:button-card
type: horizontal-stack
- type: conditional
conditions:
- entity: input_boolean.alarm_weekday
state: 'on'
card:
type: entities
entities:
- entity: input_datetime.alarm_weekday
name: По будням
- type: conditional
conditions:
- entity: input_boolean.alarm_weekend
state: 'on'
card:
type: entities
entities:
- entity: input_datetime.alarm_weekend
name: В выходные
```
## Как это работает
В указанное время срабатывает будильник.
Начинает проигрываться мелодия.
Если солнце уже встало, открываются шторы. Иначе включается мягкий тусклый свет.
## Идеи на реализацию:
- [ ] Добавить возможность отложить пробуждение, используя куб Aqare
- [ ] Выключение будильника, используя куб Aqare
## Код будильника
??? example
```yaml
#ДОБАВЛЯЕМ ЭЛЕМЕНТЫ ВВОД И УПРАВЛЕНИЯ
input_datetime:
alarm_weekday:
has_date: false
has_time: true
alarm_weekend:
has_date: false
has_time: true
#ПЕРЕКЛЮЧАТЕЛИ
input_boolean:
alarm_weekday:
alarm_weekend:
#СЕНСОРЫ ДЛЯ ПОДСЧЕТА ВРЕМЕНИ В ОТЛОЖЕННЫХ ФУНКЦИЯХ
sensor:
- platform: template
sensors:
input_alarm_weekday:
friendly_name: Будильник будни
value_template: "{{ (((state_attr('input_datetime.alarm_weekday' , 'timestamp')) - (5 * 60))|timestamp_custom('%H:%M', false)) }}"
input_alarm_weekend:
friendly_name: Будильник выходные
value_template: "{{ (((state_attr('input_datetime.alarm_weekend' , 'timestamp')) - (5 * 60))|timestamp_custom('%H:%M', false)) }}"
binary_sensor:
- platform: template
sensors:
alarm_weekday_start:
friendly_name: Будильник будни
value_template: "{{ states('sensor.time') == states('sensor.input_alarm_weekday_start') }}"
alarm_weekend_start:
friendly_name: Будильник выходные
value_template: "{{ states('sensor.time') == states('sensor.input_alarm_weekend_start') }}"
automation:
# ВКЛЮЧЕНИЕ БУДИЛЬНИКА ПРИ ЗАПУСКЕ HA
- id: 'startup_on_alarm_clock'
alias: Включение будильника при запуске HA
trigger:
platform: homeassistant
event: start
condition:
condition: time
after: '09:00:00'
before: '00:00:00'
action:
- delay: 0:01
# ВКЛЮЧЕНИЕ КЛАВИШАМИ. ПРОСТО ЗВУКОВОЕ СООБЩЕНИЕ О ВКЛЮЧЕНИИ
- id: 'on_alarm_clock'
alias: "Включение будильника клавишей"
trigger:
platform: state
entity_id:
- input_boolean.alarm_weekday
- input_boolean.alarm_weekend
to: 'on'
action:
- service: script.yandex_tts_alarm_on
# ВЫКЛЮЧЕНИЕ КЛАВИШАМИ. ПРОСТО ЗВУКОВОЕ СООБЩЕНИЕ О ВЫКЛЮЧЕНИИ
- id: 'off_alarm_clock'
alias: "Выключение будильника клавишей"
trigger:
platform: state
entity_id:
- input_boolean.alarm_1_weekday
- input_boolean.alarm_1_weekend
to: 'off'
action:
- service: script.yandex_tts_alarm_off
# Запуск будильника по будням
- id: 'alarm_weekday'
alias: Wake me up (weekday)
trigger:
- platform: time_pattern
minutes: "/1"
seconds: 0
condition:
- condition: state
entity_id: input_boolean.alarm_weekday
state: 'on'
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: template
value_template: >-
{{ now().strftime("%H:%M") == states.sensor.input_alarm_weekday.state }}
- condition: state
entity_id: person.thest1tch
state: 'home'
action:
- data: {}
service: script.wakeup_sequence
# Запуск будильника по выходным
- id: 'alarm_weekend'
alias: Wake me up (weekend)
trigger:
- platform: time_pattern
minutes: "/1"
seconds: 0
condition:
- condition: state
entity_id: input_boolean.alarm_weekend
state: 'on'
- condition: time
weekday:
- sat
- sun
- condition: template
value_template: >-
{{ now().strftime("%H:%M") == states.sensor.input_alarm_weekend.state }}
- condition: state
entity_id: person.thest1tch
state: 'home'
action:
- data: {}
service: script.wakeup_sequence
script:
# Включение люстры, если солнце еще не встало
wakeup_celib_start:
alias: wakeup_celib_start
sequence:
- condition: state
entity_id: sun.sun
state: below_horizon
for:
hours: 0
minutes: 1
seconds: 0
- service: light.turn_on
data:
brightness: '3'
brightness_step: 2
entity_id:
- light.yeelight_ceilb_0x17879e8e_nightlight
# Открывание штор, если солнце уже встало
wakeup_cover_start:
alias: wakeup_cover_start
sequence:
- condition: state
entity_id: sun.sun
state: above_horizon
- service: cover.set_cover_position
data:
position: 10
target:
entity_id: cover.yeelink_ctmt1_c8c9_curtain
- delay: 00:02:00
- service: cover.set_cover_position
data:
position: 30
target:
entity_id: cover.yeelink_ctmt1_c8c9_curtain
- delay: 00:02:00
- service: cover.set_cover_position
data:
position: 50
target:
entity_id: cover.yeelink_ctmt1_c8c9_curtain
- delay: 00:02:00
- service: cover.set_cover_position
data:
position: 70
target:
entity_id: cover.yeelink_ctmt1_c8c9_curtain
- delay: 00:02:00
- service: cover.set_cover_position
data:
position: 100
target:
entity_id: cover.yeelink_ctmt1_c8c9_curtain
# Главный скрипт будильника
wakeup_sequence:
alias: wakeup_sequence
sequence:
- service: script.turn_on
target:
entity_id: script.wakeup_celib_start
- delay: 00:00:05
- service: script.turn_on
target:
entity_id: script.wakeup_cover_start
- delay: 00:00:05
- service: script.turn_on
target:
entity_id: script.yandex_tts_alarm_start
# TTS YANDEX
yandex_tts_alarm_start:
alias: "YaStation Запуск будильника"
sequence:
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_m0017y300grsqb
volume_level: 0.1
- delay: 00:00:01
- service: yandex_station.send_command
data:
entity_id: media_player.yandex_station_m0017y300grsqb
command: sendText
text: Включи фоновую музыку
- delay: 00:01:00
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_m0017y300grsqb
volume_level: 0.2
- delay: 00:00:30
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_m0017y300grsqb
volume_level: 0.3
- delay: 00:00:30
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_m0017y300grsqb
volume_level: 0.4
yandex_tts_alarm_on:
alias: "YaStation Включение будильника"
sequence:
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_m0017y300grsqb
volume_level: 0.4
- delay: 00:00:01
- service: media_player.play_media
entity_id: media_player.yandex_station_m0017y300grsqb
data:
media_content_id: Включаю будильник.
media_content_type: text
yandex_tts_alarm_off:
alias: YaStation_Выключение будильника
sequence:
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station
volume_level: 0.4
- service: media_player.play_media
entity_id: media_player.yandex_station_m0017y300grsqb
data:
media_content_id: Будильник выключен.
media_content_type: text
```

@ -0,0 +1,63 @@
# Пакеты конфигурации
С увеличением количества устройств в умном доме, возникает вопрос: как не потеряться в файле конфигурации? На помощь приходят **Packages (пакеты)**. Они позволяют организовывать и группировать компоненты ***Home Assistant*** в один или несколько файлов.
## Первые шаги
Для начала необходимо создать папку **packages** в корне директории, где храниться файл **configuration.yaml**!
Затем добавьте в **configuration.yaml** следующие строки, указанные ниже! (пример использования на картинке).
```yaml
homeassistant:
packages: !include_dir_named packages
```
Готово! Вам осталось придумать, как вы назовёте папки и файлы в которых будут храниться *switch*, *light*, *sensor* и другие компоненты.
К примеру, чтобы перенести все *switch* из **configuration.yaml** в отдельный файл, создайте в папке **packages** файл с названием - **названиеФайла.yaml** и поместите в него ваш код!
## Стандартная структура файла
Для использования компонента, укажите [название интеграции](https://www.home-assistant.io/components/) и поставьте двоеточие. После этого вы можете добавлять свои устройства! Также, можно кастомизировать устройства прямо в пакетах, пример ниже.
```yaml
binary_sensor:
- platform: workday
name: tools_workday
country: 'RU'
- platform: rest
name: hall_doorbell
device_class: sound
resource: http://0.0.0.0/sec/?pt=10&cmd=get
scan_interval: 1
# Кастомизация устройств в пакетах (не обязательно)
homeassistant:
customize:
binary_sensor.tools_workday:
friendly_name: Рабочий день
```
Еще можно объединять **несколько компонентов** в один файл:
```yaml
### Очиститель воздуха Philips ###
# Настройки интеграции
fan:
- platform: philips_airpurifier
host: !secret host_philips_airpurifier
# Внешний вид
homeassistant:
customize:
sensor.philips_pre_filter:
friendly_name: 'Предв. фильтр'
# Датчики
sensor:
- platform: template
sensors:
philips_pre_filter:
unit_of_measurement: 'ч'
value_template: "{{ state_attr('fan.philips_airpurifier', 'pre_filter') }}"
```

@ -0,0 +1,58 @@
# Zigbee2mqtt - установка и обновление в Home Assistant
Чтоб установить актуальную версию, нам нужно зайти в магазин дополнений и добавить туда новую ссылку: `https://github.com/zigbee2mqtt/hassio-zigbee2mqtt`
![](../images/hass/card-budilnik-1.png)
После добавления этой ссылки в репозитории, необходимо перезапустить Home Assistant.
После перезапуска, у нас появится новый аддон zigbee2mqtt, который можно установить. Перед установкой старый можно не удалять, достаточно его выключить.
!!! warning
Если есть какие-то аддоны или надстройки, что используют стик Zigbee, их надо удалять.
Именно удалить, а не отключить.
Иначе работать Zigbee2mqtt не будет.
## Sonoff ZB Dongle-E - USB стик
[Sonoff zb dongle-E](http://alii.pub/6hb9ju)
USB Stick Sonoff ZB Dongle-E это новый координатор Zigbee от компании SOnoff. С недавних пор они начали делать координаторы для Home Assistant и версия “E” это уже вторая версия данного свистка.
Данный Zigbee-стик у меня не заработал сам. Пришлось дописывать в конфигурации аддона Zigbee2mqtt.
На момент подключения этого стика у меня стояла версия zigbee2mqtt аддона 1.33.1-1
Для настройки нужно узнать адрес стика sonoff zb dongle-E:
1. Для этого вставим его в USB порт
2. Перейдем в **Настройки**
3. Далее в **Система**
4. Выбираем **Оборудование**
5. Нажимает на **3 точки** в правом верхнем углу экрана
6. Выбираем **Все оборудование**.
7. Находим через поиск наш стик - можно ввести в поиск sonoff, покажется адрес
![](../images/hass/zigbee2mqtt-2.png)
Копируем строчу начиная от **DEVLINKS:**. Строчка должна выглядеть примерно так:
```
/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_40fdc5301b3bec119340a4957a0af07f-if00-port0
```
Далее заходим непосредственно в аддон. Настройки->Дополнения->Zigbee2mqtt
Далее в самом аддоне Zigbee2mqtt переходим во вкладку "Конфигурация".
Там в блоке Serial прописываем следующее:
```
port: >-
/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_40fdc5301b3bec119340a4957a0af07f-if00-port0
# adapter: ezsp # должно работать и без этого. Если нет - раскоментить
```
После этого запускаем аддон и все должно начать работать.

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

@ -2,11 +2,18 @@
Данный ресурс создан для структурирования моих знаний в различных областях IT. Данный ресурс создан для структурирования моих знаний в различных областях IT.
Много из того, что здесь, было откопано на просторах интернета и долгое время лежало в закладках. И когда уже количество таких закладок перевалило за тысячи, я решил их как-то систематизировать в виде вики.
Прошло мого времени, прежде чем я пришел к такому виду. До этого были Mediawiki, Dokuwiki, WikiJS, Wordpress. Прошло мого времени, прежде чем я пришел к такому виду. До этого были Mediawiki, Dokuwiki, WikiJS, Wordpress.
Сейчас MkDocs, но я изучаю еще Docusaurus Сейчас MkDocs.
Надеюсь, что страницы будут полезны.
## **Контакты**
Надеюсь, что статьи будут полезны. E-mail: [admin@st1t.ru](mailto:admin@st1t.ru)
Для связи: [TG](https://t.me/thest1tch) Telegram: [https://t.me/thest1tch](https://t.me/thest1tch)
Мой часовой пояс: MSK +2 или UTC +5

@ -0,0 +1,77 @@
# Настройка работы с 4G модемом оператора
Открыть окно терминала в **winbox**
```plaintext
/system resource usb print
/system serial-terminal usb1 channel=1
```
Соединяемся на COM-порт модема и вводим там команду. Она нужна для включения локального эха, чтобы вы видели что вы набираете в терминале.
```plaintext
ATE1
```
Далее вводим команду, для того чтобы модем не сыпал в порт *RSSI (Received Signal Strength Indication)* и прочим.
```plaintext
AT^CURC=0
```
И наконец вводим команду смены композиции модема. ТЕ режим «без переключения». Т.е. в данном режиме первичная композиция модема (initial mode) отключена, т.е. задана как `FF - Dummy` (отсутствие переключения), а вторичная композиция (normal mode) задана как `10,12,16,A2`:
- 10 - модем
- 12 - PC UI
- 16 - RNDIS (у нас его нет)
- A2 - TF Card Reader.
```plaintext
AT^SETPORT="FF;10,12,16,A2"
```
После чего вынимаем модем из Mikrotik и вставляем его по новой. Модем будет находиться уже в рабочей композиции, поэтому соединение `ppp-out1`, когда он зарегистрируется в сети оператора должно подняться у вас в Mikrotik автоматически
Далее включаем 4G модем и отключаем режим CD-Rom:
```plaintext
AT^SETPORT="A1;10,12,13"OK
```
После чего выходим, нажав `Ctrl-A` и `Q`
```
Ctrl-A
[Q - quit connection] [B - send break] [A - send Ctrl-A prefix] [R - autoconfigure rate]
```
Теперь можете активировать интерфейс и работать с ним
## Настройка Mikrotik на 4G Megafon
Подключаем ПК к третьему порту **Mikrotik**(вообще можно использовать любой, кроме первого), переворачиваем устройство и видим на наклейке со штрих-кодом диапазон mac адресов, последний относится к пятому порту, вводим его в окно подключения **winbox**, либо используем как аргумент mactelnet. Пользователь admin, пароль отсутствует. Так же можно подучиться через поиск neighbors в окне подключения **winbox**
Появится предложение: сохранить базовую конфигурацию, либо обнулить устройство. Выбираем `Remove Configuration`. Устройство перезагрузится.
Далее проверяем что версия routerboard последняя, для этого идем в system → routerboard. Скачать последнюю версию можно по ссылке: [https://mikrotik.com/download](https://mikrotik.com/download)
Закачиваем последнюю версию на роутер, для этого открываем files и перетаскиваем сам файл прошивки
Далее идем в system → routerboard, нажимаем upgrade. Соглашаемся с обновлением. идем в system-reboot
После перезагрузки проверяем версию системы
Теперь, заливаем [конфигурашку](https://cloud.thest1tch.ru/s/tXTqRCwnGP9trRZ). В окне files выделяем скопированный файл конфигурации и жмем restore. Вводим пароль от нашего роутера
Готово
---
Список используемых ресурсов:
- список команд AT [https://3ginfo.ru/page53.html](https://3ginfo.ru/page53.html) и [http://4pda.ru/forum/lofiversion/index.php?t582284.html](https://4pda.ru/forum/lofiversion/index.php?t582284.html)
- перепрошивка модема [https://mr-allen.com/mikrotik/e3372s-lte-modem](https://mr-allen.com/mikrotik/e3372s-lte-modem) и [https://tugibaev.ru/2015/03/megafon-m150-2-mikrotik/](https://tugibaev.ru/2015/03/megafon-m150-2-mikrotik/)
- [https://buywifi.ru/blog/mikrotik/nastroyka-mikrotik-dlya-raboty-s-3g-lte-modemom/](https://buywifi.ru/blog/mikrotik/nastroyka-mikrotik-dlya-raboty-s-3g-lte-modemom/)
- [http://valec.ru/?p=316](http://valec.ru/?p=316)
- [https://dev.turn-guild.ru/?p=251](https://dev.turn-guild.ru/?p=251)
- [https://habr.com/ru/post/188424/](https://habr.com/ru/post/188424/)
- [https://trustoff.ru/page/45/vvodim-at-komandy-v-modem/](https://trustoff.ru/page/45/vvodim-at-komandy-v-modem/)
- [https://www.technotrade.com.ua/Articles/mikrotik\_3g-modem\_setup.php](https://www.technotrade.com.ua/Articles/mikrotik_3g-modem_setup.php)

@ -0,0 +1,188 @@
# Cloud Hosted Router
## Установка IP адреса
=== "У MikroTik CHR статический IP"
```
/ip address add interface=ether1 address=10.103.0.111 netmask=255.255.255.0
/ip route add gateway=10.103.0.254 dst-address=0.0.0.0/0 distance=1
```
=== "У MikroTik CHR автоматический IP(dhcp)"
```
/ip dhcp-client add disabled=no interface=ether1
```
## Настройка NTP
```
/system ntp client
set enabled=yes
/system ntp client servers
add address=193.171.23.163
add address=85.114.26.194
```
## Настройка Firewall
=== "Filter"
```
/ip firewall filter
add action=accept chain=input dst-port=22024,29514 in-interface=ether1 \
protocol=tcp src-address-list=Admin_IP
add action=accept chain=input comment="VPN Wireguard" dst-port=34567 \
in-interface=ether1 protocol=udp
add action=accept chain=input dst-port=34568 in-interface=ether1 protocol=udp \
src-address=5.189.70.251
add action=accept chain=input dst-port=34569 in-interface=ether1 protocol=udp
add action=accept chain=input comment=l2tp port=1701,500,4500 protocol=udp \
src-address=95.59.244.153
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input comment=Socks5 dst-port=24444 \
in-interface-list=VPN protocol=tcp
add action=drop chain=input dst-port=24444 in-interface-list=!VPN protocol=\
tcp
add action=accept chain=input comment="Web Proxy" dst-port=25555 \
in-interface-list=VPN log=yes log-prefix=webproxy protocol=tcp
add action=drop chain=input connection-state="" dst-port=8080 \
in-interface-list=!VPN port="" protocol=tcp src-port=""
add action=drop chain=input connection-state="" dst-port=25555 \
in-interface-list=!VPN port="" protocol=tcp src-port=""
add action=return chain=detect-ddos comment="Anti DDos" dst-limit=\
32,32,src-and-dst-addresses/10s
add action=add-dst-to-address-list address-list=ddos-target \
address-list-timeout=10m chain=detect-ddos
add action=add-src-to-address-list address-list=ddos-attackers \
address-list-timeout=10m chain=detect-ddos
add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s \
protocol=tcp tcp-flags=syn,ack
add action=fasttrack-connection chain=forward comment=" fasttrack" \
connection-state=established,related hw-offload=yes
add action=accept chain=input comment="\D0\E0\E7\F0\E5\F8\E0\E5\EC \F3\F1\F2\
\E0\ED\EE\E2\EB\E5\ED\ED\FB\E5 \E8 \F1\E2\FF\E7\E0\ED\ED\FB\E5 \E2\F5\EE\
\E4\F9\E8\E5 \F1\EE\E5\E4\E8\ED\E5\ED\E8\FF" connection-state=\
established,related,untracked
add action=accept chain=forward connection-state=\
established,related,untracked
add action=drop chain=input comment="Drop invalid" connection-state=invalid \
log-prefix=invalid
add action=drop chain=forward connection-state=invalid log-prefix=invalid
add action=drop chain=input connection-state="" dst-port=53 \
in-interface-list=WAN port="" protocol=udp src-port=""
add action=drop chain=input comment=NTP connection-state=new dst-port=123 \
in-interface-list=WAN log-prefix=" " protocol=tcp
add action=drop chain=input connection-state=new dst-port=123 \
in-interface-list=WAN log-prefix=" " protocol=udp
add action=drop chain=input comment="Drop SSH brutforce" dst-port=22-23 \
protocol=tcp
add action=accept chain=input comment="defconf: accept ICMP after RAW" \
protocol=icmp
add action=accept chain=input comment="\F0\E0\E7\F0\E5\F8\E0\E5\EC \EF\EE\E4\
\EA\EB\FE\F7\E5\ED\E8\FF \E8\E7 \ED\E0\F8\E5\E9 \EB\EE\EA \F1\E5\F2\E8" \
in-interface=!ether1 src-address=192.168.3.0/24
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
add action=drop chain=forward comment="defconf: drop bad forward IPs" \
dst-address-list=no_forward_ipv4
add action=drop chain=forward comment="defconf: drop bad forward IPs" \
src-address-list=no_forward_ipv4
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!VPN log-prefix=drop
```
=== "NAT"
```
/ip firewall nat
add action=masquerade chain=srcnat
add action=masquerade chain=srcnat out-interface=ether1 src-address=\
192.168.3.1
```
=== "RAW"
```
/ip firewall raw
add action=accept chain=prerouting comment=\
"defconf: enable for transparent firewall" disabled=yes
add action=accept chain=prerouting comment="defconf: accept DHCP discover" \
dst-address=255.255.255.255 dst-port=67 in-interface-list=LAN protocol=\
udp src-address=0.0.0.0 src-port=68
add action=drop chain=prerouting comment="defconf: drop bogon IP's" \
src-address-list=bad_ipv4
add action=drop chain=prerouting comment="defconf: drop bogon IP's" disabled=\
yes dst-address-list=bad_ipv4 log=yes log-prefix=132
add action=drop chain=prerouting comment="defconf: drop bogon IP's" \
src-address-list=bad_src_ipv4
add action=drop chain=prerouting comment="defconf: drop bogon IP's" disabled=\
yes dst-address-list=bad_dst_ipv4 log=yes
add action=drop chain=prerouting comment="defconf: drop non global from WAN" \
in-interface=ether1 src-address-list=not_global_ipv4
add action=drop chain=prerouting comment=\
"defconf: drop forward to local lan from WAN" dst-address=192.168.1.0/24 \
in-interface-list=WAN
add action=drop chain=prerouting comment=\
"defconf: drop local if not from default IP range" in-interface-list=LAN \
log=yes src-address=!192.168.3.0/24
add action=drop chain=prerouting comment="defconf: drop bad UDP" log-prefix=\
123 port=0 protocol=udp
add action=jump chain=prerouting comment="defconf: jump to ICMP chain" \
jump-target=icmp4 protocol=icmp
add action=jump chain=prerouting comment="defconf: jump to TCP chain" \
jump-target=bad_tcp protocol=tcp
add action=accept chain=prerouting comment=\
"defconf: accept everything else from LAN" in-interface-list=VPN
add action=accept chain=prerouting comment=\
"defconf: accept everything else from WAN" in-interface-list=WAN
add action=drop chain=bad_tcp comment="defconf: TCP flag filter" protocol=tcp \
tcp-flags=!fin,!syn,!rst,!ack
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=fin,syn
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=fin,rst
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=fin,!ack
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=fin,urg
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=syn,rst
add action=drop chain=bad_tcp comment=defconf protocol=tcp tcp-flags=rst,urg
add action=drop chain=bad_tcp comment="defconf: TCP port 0 drop" port=0 \
protocol=tcp
```
=== "Address List"
```
/ip firewall address-list
add address=192.168.1.2-192.168.88.254 list=allowed_to_router
add address=0.0.0.0/8 comment="defconf: RFC6890" list=no_forward_ipv4
add address=169.254.0.0/16 comment="defconf: RFC6890" list=no_forward_ipv4
add address=224.0.0.0/4 comment="defconf: multicast" list=no_forward_ipv4
add address=255.255.255.255 comment="defconf: RFC6890" list=no_forward_ipv4
add address=127.0.0.0/8 comment="defconf: RFC6890" list=bad_ipv4
add address=192.0.0.0/24 comment="defconf: RFC6890" list=bad_ipv4
add address=192.0.2.0/24 comment="defconf: RFC6890 documentation" list=\
bad_ipv4
add address=198.51.100.0/24 comment="defconf: RFC6890 documentation" list=\
bad_ipv4
add address=203.0.113.0/24 comment="defconf: RFC6890 documentation" list=\
bad_ipv4
add address=240.0.0.0/4 comment="defconf: RFC6890 reserved" list=bad_ipv4
add address=0.0.0.0/8 comment="defconf: RFC6890" list=not_global_ipv4
add address=10.0.0.0/8 comment="defconf: RFC6890" list=not_global_ipv4
add address=100.64.0.0/10 comment="defconf: RFC6890" list=not_global_ipv4
add address=169.254.0.0/16 comment="defconf: RFC6890" list=not_global_ipv4
add address=172.16.0.0/12 comment="defconf: RFC6890" list=not_global_ipv4
add address=192.0.0.0/29 comment="defconf: RFC6890" list=not_global_ipv4
add address=192.168.0.0/16 comment="defconf: RFC6890" list=not_global_ipv4
add address=198.18.0.0/15 comment="defconf: RFC6890 benchmark" list=\
not_global_ipv4
add address=255.255.255.255 comment="defconf: RFC6890" list=not_global_ipv4
add address=224.0.0.0/4 comment="defconf: multicast" list=bad_src_ipv4
add address=255.255.255.255 comment="defconf: RFC6890" list=bad_src_ipv4
add address=0.0.0.0/8 comment="defconf: RFC6890" list=bad_dst_ipv4
add address=224.0.0.0/4 comment="defconf: RFC6890" list=bad_dst_ipv4
add list=ddos-attackers
add list=ddos-target
add address=5.189.70.251 list=Admin_IP
add address=10.0.10.2 list=Admin_IP
add address=95.59.244.153 list=Admin_IP
```

@ -0,0 +1,92 @@
# DHCP
## DHCP Option
Это может понадобиться, когда необходимо, чтобы один из компьютеров в локальной сети получил нестандартный адрес DNS-Сервера, шлюза, NTP-Сервера и.т.д.. Или например, когда требуется для определенной сети установить нестандартную DHCP-опцию.
[Список RFC DHCP Options](https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml)
## Создадим DHCP опцию для DNS-Сервера.
```plaintext
/ip dhcp-server option
add code=6 name=AD_DC value="'192.168.5.10'"
```
Выведем активные подключения
```plaintext
/ip dhcp-server lease print
```
Установим dhcp опцию для конкретного хоста
```plaintext
/ip dhcp-server lease
set numbers=0 dhcp-option=AD_DC
```
## Настройка DNS-суффикса
Клиенты Windows поддерживают только доменное имя, в то время как Linux/Mac поддерживает только функцию поиска домена.
Windows, установка dhcp-опции для конкретной сети
```plaintext
/ip dhcp-server network print
/ip dhcp-server network
set 0 domain=local.net
```
Linux | Windows, установка dhcp-опции для конкретного хоста
```plaintext
/ip dhcp-server option
add code=119 name=Domain_Search value="'local.net'" | Linux
add code=15 name=Domain_Name value="'local.net'" | Windows
/ip dhcp-server lease print
/ip dhcp-server lease
set numbers=0 dhcp-option=Domain_Search
```
## Настройка выдачи статических маршрутов
[IP Address to HEX](https://ncalculators.com/digital-computation/ip-address-hex-decimal-binary.htm)
[Конвертор чисел HEX/BIN/DEC](https://lin.in.ua/tools/numconv.html)
DHCP Classless Route с Option 249 и Option 121.
## Option 249
**Дано:**
- MASK = 24 = 0x18
- DEST = 192.168.5.0 = C0A80500
- GW = 192.168.6.1 = C0A80601
**Пример:**
- `0x[MASK][DEST][GW]`
**Итог:**
- `0x18C0A80500C0A80601`
##  Option 121
( `0.0.0.0/0 [00] gw 192.168.6.1 [C0A80601]`) - необходимо добавить 00C0A80601
Должно получиться:
  `0x18C0A80500C0A8060100C0A80601`
 CLI:
```plaintext
/ip dhcp-server option add name=opt_249 code=249 value=0x18C0A80500C0A80601
/ip dhcp-server option add name=opt_121 code=121 value=0x18C0A80500C0A8060100C0A80601
/ip dhcp-server option sets add name=sets_249+121 options=opt_249,opt_121
/ip dhcp-server network print
/ip dhcp-server network set dhcp-option-set=sets_249+121 numbers=0
```

@ -0,0 +1,72 @@
# Hairpin Nat
Допустим нужно прокинуть 80 и 443 порт
`192.168.100.0/24` - наша подсеть
`WAN_IP` - внешний IP-адрес
`192.168.100.5` - сервер, куда делаем проброс
```
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=80 protocol=tcp to-addresses=192.168.100.5
add action=masquerade chain=srcnat dst-address=192.168.100.5 dst-port=80 protocol=tcp src-address=192.168.100.0/24
add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=443 protocol=tcp to-addresses=192.168.100.5
add action=masquerade chain=srcnat dst-address=192.168.100.5 dst-port=443 protocol=tcp src-address=192.168.100.0/24
```
## Подробности
Конфигурация нашей сети:
- Вы имеете IP адрес `WAN_IP` на интерфейсе WAN вашего маршрутизатора
- Вы имеете IP адрес `192.168.100.1/24` на интерфейсе LAN вашего маршрутизатора.
- Вы имеете www-сервер с адресом `192.168.100.5` в LAN сегменте.
- Адрес вашего компьютера находится в диапазоне адресов LAN. Для примера пусть это будет `192.168.100.15`
![](../../images/network/mikrotik-hnat_1.png)
Чтобы опубликовать web-сервер на внешнем ресурсе, создается правило dst-nat:
```
/ip firewall nat add action=dst-nat chain=dstnat dst-address=WAN_IP dst-port=80 protocol=tcp to-addresses=192.168.100.5
```
**in-interface** не указан потому, что правило должно срабатывать при обращении на порт 80 адреса `WAN_IP` с любого интерфейса
Вы это делаете и.. И у вас все замечательно работает снаружи сети (при обращении из Интернет), но обращение с вашего компьютера по адресу http://WAN_IP говорит «Нет ответа от сервера». Для того, чтобы понять, что же происходит, рисуем схему прохождения и преобразования пакета:
![](../../images/network/mikrotik-hnat_2.png)
Теперь распишем что происходит на каждом этапе.
1. Компьютер с адреса `192.168.100.15` пытается установить соединение с адресом `WAN_IP` по `80 порту` и отправляет пакет на маршрутизатор.
1. На маршрутизаторе срабатывает правило `dst-nat`, в результате чего адрес назначения пакета меняется на `192.168.100.5`, и пакет отправляется на www-сервер `192.168.100.5`.
1. Узел `192.168.100.5` получив пакет с адресом источника `192.168.100.15`, определяет, что они оба находятся в одной локальной сети и отвечает ему напрямую, минуя маршрутизатор.
**Проблема**
Компьютер, отправив пакет на адрес WAN_IP, вдруг получает ответ с адреса 192.168.100.5. Естественно этот пакет он игнорирует и соединение не устанавливается.
**Решение**
Чтобы решить эту проблему, необходимо, чтобы www-сервер получил пакет у которого адрес источника будет равен адресу маршрутизатора. Добавляем к нашей конфигурации правило, которое заменит адрес отправителя, адресом интерфейса маршрутизатора и получаем следующую конфигурацию:
```
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=1.1.1.1 dst-port=80 protocol=tcp to-addresses=192.168.0.10
add action=masquerade chain=srcnat dst-address=192.168.0.10 dst-port=80 protocol=tcp src-address=192.168.0.0/24
```
Теперь у нас из конфигурация работает правильно. Схема для понимания:
![](../../images/network/mikrotik-hnat_3.png)
**Работа схемы**
1. Компьютер с адреса `192.168.100.15` пытается установить соединение с адресом WAN_IP по 80 порту и отправляет пакет на маршрутизатор.
1. На маршрутизаторе срабатывает правило `dst-nat`, в результате чего адрес назначения пакета меняется на `192.168.100.5` и правило `src-nat`, где адрес источника пакета меняется на адрес интерфейса маршрутизатора (`192.168.100.1`). После чего пакет отправляется на www-сервер `192.168.100.5`.
1. Узел `192.168.100.5` получив пакет с адресом источника `192.168.100.1` (адрес маршрутизатора), определяет, что они оба находятся в одной локальной сети и отвечает ему. В результате чего пакет попадает на маршрутизатор
1. Connection Tracker маршрутизатора получив такой пакет выполняет обратное преобразование адресов. Компьютер получает ожидаемый ответ с адреса `WAN_IP`
Вот такая схема трансляции адресов и является Hairpin NAT.
Нужно отметить что у схемы есть недостаток. Заключается он в том, что публикуемый сервер будет получать запросы от хостов локальной сети с адреса маршрутизатора. Что не всегда хорошо. Например, если Вы так опубликуете прозрачный proxy-сервер, вряд ли у вас получится собрать нормальную статистику.
Альтернативой такой схемы могут служить.
Вынос публикуемых, или вообще всех серверов в отдельную подсеть.
Использование так называемого **split-dns**. Когда компьютер находясь снаружи сети на запрос www.mydomain.com получит адрес `WAN_IP`, а находясь внутри сети на этот же запрос получит адрес `192.168.100.5`.
---
[Использованы материалы сайта](https://housecomputer.ru/devices/switch/mikrotik/Setting_up_NAT_-_hairpin/Setting_up_NAT_-_hairpin.html){ .md-button .md-button--primary }

@ -0,0 +1,21 @@
# Mikrotik
## куча ссылок для микротика
[Большое собрание скриптов и различных полезных инструментов для Микротик](https://buananetpbun.github.io/)
[Прямая ссылка на готовые скрипты](https://buananetpbun.github.io/mikrotik/)
[QUEUES TREE](https://g-support.ru/articles/mikrotik_nastroyka_queues_tree.html) и [еще про QoS](https://g-support.ru/articles/mikrotik_nastroyka_queues_tree_chast_vtoraya.html)
[Закрытие портов](https://g-support.ru/articles/zakryvaem_porty_na_mikrotik.html)
[Проверка на взлом](https://g-support.ru/articles/zashchita_mikrotik_ot_vzloma.html)
[Базовый VPN](https://g-support.ru/articles/obedinenie_dvukh_ofisov_po_vpn_na_mikrotik.html)
[Capsman](https://g-support.ru/articles/nastroyka_capsman_mikrotik.html)
[NAT](https://g-support.ru/articles/probros_portov_mikrotik.html)
[Отправка уведомлений из Mikrotik RouterOS прямо на мобильный при помощи Telegram](https://hd.zp.ua/otpravka-uvedomlenij-iz-mikrotik-routeros-pryamo-na-mobilnyj-pri-pomoshhi-telegram/)

@ -0,0 +1,46 @@
# Domain Overrides (Split-DNS)
Представим себе ваш MikroTik выступает в роли маршрутизатора удалённого филиала. На нём поднимается VPN до центрального филиала прописываются маршруты и прочее. У вас доменная авторизация все компьютеры в домене, естественно хорошей практикой на компьютерах прописать DNS сервера который обслуживают Active Directory службы. Но в таком случае если туннель по какой-то причине упадёт ваш филиал останется без интернета, а ведь интернета может не быть в центральном филиале. Да перестанут работать различные шары и прочее, конечно для этих целей существует как минимум RODC, но навсегда есть возможность установить подобный сервис в филиале ввиду множества различных проблем.
На практике:
- MikroTik: 192.168.5.1 - DNS-Сервер для локальной сети;
- Samba AD DC: 192.168.5.10 - DNS-Сервер обслуживающий зону local.net.
Необходимо, чтобы все запросы, связанные с зоной local.net, обслуживались DNS-Сервером 192.168.5.10.
В pfSense такая возможность присутствует из коробки и делается немного проще чем в MikroTik.
!!! note
Начиная с версии **RouterOS v6.47**, появилась возможность пересылки запросов с помощью встроенного DNS-сервера. Раньше это делалось костылями через L7.
## DNS Settings
Для поддержки Domain Overrides необходимо, чтобы на DNS-Сервере была включена опция **Allow Remote Requests**.
```plaintext
/ip dns
set allow-remote-requests=yes
```
## Настройка Firewall
Разрешаем работу DNS-Сервера на всех интерфейсах, кроме WAN.
```plaintext
/ip firewall filter
add action=accept chain=input protocol=udp dst-port=53 in-interface=!wan
add action=drop chain=input in-interface=wan
```
## Domain Overrides
Делается это в меню DNS через управление статическими записями. Обязательным условием для работы является отключенный DoH.
```plaintext
/ip dns static add forward-to=192.168.5.10 regexp="((^)|(\.))local.net$" type=FWD
- .*\\.local\\.net
- ^.+(local).net
- ^.+local.net
- ".*local\\.net"
```

@ -0,0 +1,69 @@
# Обход блокировок
Расписывать как поднять и настроить VPN через Wireguard или OpenVPN не буду. В сети достаточно инструкций. Чуть ниже слева есть еще одна от меня.
Варианта как обходить блокировки 2:
- через таблицу маршрутизации, куда вносим ресурсы руками или скриптами
- через BGP с одного "неизвестного" сайта
## Вариант 1: таблица маршрутизации
Статья о маркировке трафика, для отправки его в VPN: [Policy_Base_Routing](https://wiki.mikrotik.com/wiki/Policy_Base_Routing)
Формируем списки (`address-list`) для подсетей, трафик на которые будем гнать через VPN:
```
# auth.servarr.com - заблоченный ресурс
/ip firewall address-list add list=unblock address=auth.servarr.com
```
Вместо формирования руками, готовые списки можно выкачивать с [https://antifilter.download](https://antifilter.download)
Создаем таблицу маршрутизации
```
/routing table
add Disabled=no name=unblock fib
```
Настраиваем правила роутинга
```
/ip firewall mangle add disabled=no action=mark-routing chain=prerouting dst-address-list=unblock new-routing-mark=unblock passthrough=yes src-address=192.168.88.2-192.168.88.254
/ip route add disabled=no dst-address=0.0.0.0/0 type=unicast gateway=wireguard1 routing-mark=unblock scope=30 target-scope=10
/ip firewall nat add chain=srcnat src-address=192.168.88.0/24 out-interface=wireguard1 action=masquerade
```
## Вариант 2: BGP
Проверяем, что VPN жив и работает.
Выпускаем трафик BGP с маршрутизатора
```
/ip firewall filter add action=accept chain=output protocol=tcp dst-address=51.75.66.20 dst-port=179 out-interface=wireguard1
```
Прописываем маршрут до сервиса antifilter.network через VPN. Это нужно для того, чтобы если провайдер блочит или фильтрует BGP, на нас это не влияло.
```
/ip route add dst-address=51.75.66.20/32 gateway=wireguard1
```
Настраиваем пиринг с сервисом
!!! info "Mikrotik ROS7"
```
/routing bgp template
add as="64999" disabled=no hold-time=4m input.filter=bgp_in .ignore-as-path-len=yes keepalive-time=1m multihop=yes name=antifilter routing-table=main
/routing bgp connection
add as=64999 disabled=no hold-time=4m input.filter=bgp_in \
.ignore-as-path-len=yes keepalive-time=1m local.address=<local_IP> .role=\
ebgp multihop=yes name=bgp-antifilter.net output.filter-chain=discard \
remote.address=51.75.66.20/32 .as=65444 router-id=<WAN_IP> \
routing-table=main templates=antifilter
/routing filter rule
add chain=bgp_in disabled=no rule="set gw wireguard1; accept;
add chain=discard disabled=no rule=reject
```

@ -0,0 +1,34 @@
# UPnP
Именно эта штука и отвечает за то, что нужные порты будут открываться автоматически по запросу программы. Настройка достаточно простая и заключается всего нескольких нажатиях мышки.
Подключаемся к нашему Mikrotik через Winbox и открываем необходимый раздел:
**IP->UPnP**
![](../../images/network/mikrotik-upnp_1.png)
Здесь достаточно поставить галочку Enable, но после этого все-равно ничего работать не будет. А все потому, что надо микротику сказать, что есть внешний интерфейс, а что внутренний. Для этого, в открытом ранее окошке находим кнопку **Interfaces** и нажимаем ее.
Сейчас у нас ничего нет и окно пустое. Жмем синий плюсик и добавляем два интерфейса.
![](../../images/network/mikrotik-upnp_2.png)
**External**
 — это наш внешний интерфейс. У меня это pppoe-соединение с провайдером. У вас может быть так же, а если получаете по DHCP, то выбрать надо тот, где висит DHCP-клиент.
**Internal**
 — это наш внутренний интерфейс. У меня часть портов объединена в bridge, поэтому я выбираю интерфейс bridge-home. Вы же выбираете свой.
Теперь закрываем окошко настройки интерфейсов. Затем жмем Apply и Ok. Вот и все. После проделанных манипуляций порты на микротике будут открываться автоматически без вмешательства в его настройку.
То же самое можно сделать не только в графической оболочке, но и через терминал.
```plaintext
/ip upnp set enabled=yes show-dummy-rule=yes allow-disable-external-interface=no
/ip upnp interfaces add interface=pppoe-out1 type=external add interface=bridge-home type=internal
```
Проверить работает или нет довольно просто, для этого достаточно зайти в раздел IP->Firewall->NAT и посмотреть наличие новых правил с префиксом D. Если такие есть, значит все в порядке.

@ -0,0 +1,171 @@
# Nmap
## Сканирование Одного Хоста или IP Адреса
| | |
| --- | --- |
| `nmap 192.168.1.1` | Сканировать Отдельный IP Адрес |
| `nmap server.shellhacks.com` | Сканировать сервер по Имени Хоста |
| `nmap -v server.shellhacks.com` <br>`nmap -vv server.shellhacks.com` | Увеличить Уровень Детализации результатов сканирования |
## Сканирование Множества IP Адресов
| | |
| --- | --- |
| `nmap 192.168.1.1 192.168.1.2 192.168.1.3`<br>`nmap 192.168.1.1,2,3` | Сканировать Множество IP Адресов |
| `nmap 192.168.1.0/24`<br>`nmap 192.168.1.*` | Сканировать Подсеть |
| `nmap 192.168.1.0-200` | Сканировать Диапазон IP Адресов |
## Поиск Активных Компьютеров в Сети
| | |
| --- | --- |
| `nmap -sn 192.168.1.0/24` | Сканировать сеть в поиске Активных Хостов |
## Сканирование Списка Хостов из Файла
| | |
| --- | --- |
| `nmap -iL input.txt` | Сканирование списка хостов/сетей из Файла |
??? note "Формат файла"
Записи могут быть представлены в любом из форматов, с которыми работает Nmap из командной строки (IP адреса, имена хостов, CIDR, IPv6, или октетные диапазоны). Записи должны разделятся одним или более пробелами, табуляциями или переходами на новую строку.
```
cat input.txt
server.shellhacks.com
192.168.1.0/24
192.168.2.1,2,3
192.168.3.0-200
```
## Исключение IP/Хостов/Сетей из Сканирования
| | |
| --- | --- |
| `nmap 192.168.1.0/24 --exclude 192.168.1.1`<br>`nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5`<br>`nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3` | Исключить Цели из сканирования Nmap-ом |
| `nmap 192.168.1.0/24 --excludefile exclude.txt` | Исключить Список хостов, взятых из файла |
!!! note
Формат файла с исключенными хостами аналогичен приведенному выше.
## Сканирование Определенных Портов
| | |
| --- | --- |
| `nmap -p 80 192.168.1.1` | Сканировать Один Порт |
| `nmap -p 80,443 192.168.1.1` | Сканировать Несколько Портов |
| `nmap -p 80-1000 192.168.1.1` | Сканировать Диапазон Портов |
| `nmap -p "*" 192.168.1.1` | Сканировать Все Порты |
| `nmap --top-ports 5 192.168.1.1`<br>`nmap --top-ports 10 192.168.1.1` | Сканировать несколько самых Распространенных Портов |
## Определение Поддерживаемых IP Протоколов
| | |
| --- | --- |
| `nmap -sO 192.168.1.1` | Определить какие IP Протоколы (TCP, UDP, ICMP, и т.д.) поддерживает сканируемый хост |
## Сканирование TCP/UDP Портов
| | |
| --- | --- |
| `nmap -sT 192.168.1.1` | Сканировать все TCP Порты |
| `nmap -p T:80 192.168.1.1` | Сканировать определенные TCP Порты |
| `nmap -sU 192.168.1.1` | Сканировать все UDP Порты |
| `nmap -p U:53 192.168.1.1` | Сканировать определенные UDP Порты |
| `nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1` | Объединение сканирования разных портов |
## Быстрое Сканирование
| | |
| --- | --- |
| `nmap -F 192.168.1.1` | Активировать Быстрый Режим сканирования |
!!! note
Сканирует меньшее кол-во портов, чем при обыкновенном сканировании.
## Показывать Причину Состояния Порта
| | |
| --- | --- |
| `nmap reason 192.168.1.1` | Показать Причину, по которой Nmap считает что порт находится в определенном состоянии |
## Показывать Только Открытые Порты
| | |
| --- | --- |
| `nmap open 192.168.1.1`| Показать Только Открытые Порты (либо возможно открытые) |
## Определение ОС
Одна из наиболее известных функциональных возможностей Nmap — это удаленное определение ОС на основе анализа работы стека TCP/IP.
Nmap посылает серию TCP и UDP пакетов на удаленный хост и изучает ответы.
После проведения множества тестов, Nmap сравнивает результаты со своей базой данных и, при нахождении соответствий, выводит информацию об ОС.
| | |
| --- | --- |
| `nmap -O 192.168.1.1` | Включить Определение ОС |
## Определение Версии Сервисов
| | |
| --- | --- |
| `nmap -sV 192.168.1.1` | Включить Определение Версии Сервисов |
> Определяет версии программ, запущенных на удаленном сервере.
## Обнаружение Фаервола
| | |
| --- | --- |
| `nmap -sA 192.168.1.1` | Узнать, защищен ли компьютер какими-либо Пакетными Фильтрами или Фаерволом |
## Подмена MAC Адреса
| | |
| --- | --- |
| `nmap spoof-mac 00:11:22:33:44:55 192.168.1.1` | Подменить MAC Адреса |
| `nmap spoof-mac 0 192.168.1.1` | Подменить MAC Адрес Случайным MAC-ом |
## Сканирование Фаервола на Уязвимости
Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые.
Когда сканируется система отвечающая требованиям RFC, любой пакет, не содержащий установленного бита SYN, RST или ACK, повлечет за собой отправку RST в ответ в случае, если порт закрыт, или не повлечет никакого ответа, если порт открыт.
Т.к. ни один из этих битов не установлен, то любая комбинация трех оставшихся (FIN, PSH и URG) будет являться правильной.
| | |
| --- | --- |
|`nmap -sN 192.168.1.1`| TCP Null сканирование - Не устанавливаются никакие биты (Флагов в TCP заголовке 0) |
| `nmap -sF 192.168.1.1` | TCP Fin сканирование - Устанавливается только TCP FIN бит |
| `nmap -sX 192.168.1.1` | TCP Xmas сканирование - Устанавливаются FIN, PSH и URG флаги (пакет светится как новогодняя елка) |
## Скрытое Сканирование
| | |
| --- | --- |
| `nmap -sS 192.168.0.1` | TCP SYN сканирование |
> Известное как сканированием с использованием полуоткрытых соединений, так как не отрывает полных TCP соединений.
## Отключение Обнаружения Хостов (No Ping)
| | |
| --- | --- |
| `nmap -Pn 192.168.1.1` | Не пинговать хосты перед сканированием |
## Отключение Использования DNS
| | |
| --- | --- |
| `nmap -n 192.168.1.1` | Никогда не производить обратное преобразование DNS имен для каждого обнаруженного активного IP адреса |
## Сохранение Результатов Сканирования Nmap в Файл
| | |
| --- | --- |
| `nmap 192.168.1.1 > output.txt`<br>`nmap -oN output.txt 192.168.1.1` | Сохранить результат сканирования Nmap в Текстовый Файл |
| `nmap -oX output.xml 192.168.1.1` | Сохранить результат сканирования Nmap в XML Файл |

@ -0,0 +1,7 @@
# Wtraf
Пока альфа-версия бинарников. Разместил [**здесь на Sourceforge**](https://sourceforge.net/projects/wtraf/files/).
Проверено на Windows 7/8/10 32-bit и 64-bit. Debian и Ubuntu.
Кушает данные SNMP — COUNTER, INTEGER, GAUGE.
https://habr.com/ru/post/358970/

@ -1,3 +1,4 @@
# Закрыть фишинговый сайт
Каждый раз, когда я в интернете натыкался на фишинговый сайт, у меня был сложный квест куда писать и что делать, чтобы его закрыть. У меня, обычно это были сайты, которые притворялись игровыми. Каждый раз даже интересно, как у тебя пытаются узнать пароль. Каждый раз, когда я в интернете натыкался на фишинговый сайт, у меня был сложный квест куда писать и что делать, чтобы его закрыть. У меня, обычно это были сайты, которые притворялись игровыми. Каждый раз даже интересно, как у тебя пытаются узнать пароль.

@ -1,24 +0,0 @@
# 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 Lets 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, [Lets 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, Traefiks default certificate will be used and your browser will throw a warning.

@ -0,0 +1,216 @@
# Версии прошивки HPE iLo
Здесь собраны **последние версии прошивок ILO** для модуля удаленного управления серверами HP (Integrated Lights-Out)
***ОБНОВЛЕНО* 2023-05-28**
ILO1 : [ilo196.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v97349/CP023365.scexe) (30-Apr-2014)
ILO2 : [ilo2_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v148520/CP035238.scexe) (30-Mar-2018)
ILO3 : [ilo3_194.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v189986/CP046328.scexe) (iLO3 v 1.94.2 06-Dec-2020)
ILO4 : [ilo4_282.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v218149/CP053894.scexe) (iLO4 v 2.82.5 06-Feb-2023)
ILO5 : [ilo5_291.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v231082/ilo5_291.fwpkg) (24-May-2023)
ILO6 : [ilo6_130.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v221408/ilo6_130.fwpkg) (07-Apr-2023)
Для получения файлов в формате .bin:
=== "Linux"
```
$ chmod +x CP022551.scexe
$ ./CP022551.scexe --unpack=/tmp/iLO3
$ ls -l /tmp/iLO3
..
ilo3_180.bin
..
```
=== "Windows"
используйте архиватор 7-zip:
![extract_ilo](https://pingtool.org/wp-content/uploads/2012/09/extract_ilo.png)
Старые версии прошивок:
??? note "ILO1"
[ilo187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v33430/CP006786.scexe)
[ilo188.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v35729/CP006953.scexe)
[ilo189.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v38868/CP007118.scexe)
[ilo191.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v41461/CP007684.scexe)
[ilo192.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308174093/v44421/CP008488.scexe)
[ilo193.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v50126/CP009895.scexe)
[ilo194.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v51876/CP010428.scexe)
[ilo195.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1980791503/v57149/CP011850.scexe)
??? note "ILO2"
[ilo2_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308277578/v33150/CP006634.scexe)
[ilo2_122.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v33324/CP006747.scexe)
[ilo2_124.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v35700/CP006942.scexe)
[ilo2_126.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v39551/CP007149.scexe)
[ilo2_129.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v40736/CP007549.scexe)
[ilo2_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v41965/CP007818.scexe)
[ilo2_135.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v42540/CP007977.scexe)
[ilo2_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v43257/CP008198.scexe)
[ilo2_142.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v43790/CP008317.scexe)
[ilo2_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v45110/CP008590.scexe)
[ilo2_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p308280586/v45689/CP008777.scexe)
[ilo2_160.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v47657/CP009237.scexe)
[ilo2_161.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v49242/CP009636.scexe)
[ilo2_170.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v49991/CP009857.scexe)
[ilo2_175.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v51453/CP010337.scexe)
[ilo2_177.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v52557/CP010541.scexe)
[ilo2_178.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v54329/CP011095.scexe)
[ilo2_179.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v55943/CP011535.scexe)
[ilo2_180.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v57485/CP011945.scexe)
[ilo2_181.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v58075/CP012108.scexe)
[ilo2_182.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v59643/CP012567.scexe)
[ilo2_183.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v98108/CP023549.scexe)
[ilo2_201.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v63249/CP013601.scexe)
[ilo2_205.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v65718/CP014256.scexe)
[ilo2_206.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v68054/CP014890.scexe)
[ilo2_207.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v71019/CP015685.scexe)
[ilo2_208.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v74437/CP016664.scexe)
[ilo2_209.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v75848/CP017013.scexe)
[ilo2_212.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v78468/CP017737.scexe)
[ilo2_213.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v80498/CP018259.scexe)
[ilo2_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v82920/CP019022.scexe)
[ilo2_220.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v85709/CP019821.scexe)
[ilo2_222.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v90711/CP021566.scexe)
[ilo2_223.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v91953/CP021881.scexe)
[ilo2_225.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1285463034/v96369/CP023069.scexe)
[ilo2_227.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v104866/CP025666.scexe)
[ilo2_228.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v108120/CP026708.scexe)
[ilo2_229.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v112310/CP027871.scexe)
[ilo2_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v128193/CP032232.scexe)
[ilo2_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v142909/CP033889.scexe)
[ilo2_232.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p915269625/v144949/CP034429.scexe)
??? note "ILO3"
[ilo3_187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v113322/CP028239.scexe)
[ilo3_100.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v57781/CP012025.scexe)
[ilo3_105.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v60837/CP012894.scexe)
[ilo3_110.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v62116/CP013210.scexe)
[ilo3_115.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v62444/CP013313.scexe)
[ilo3_116.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v65714/CP014254.scexe)
[ilo3_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v64722/CP014002.scexe)
[ilo3_126.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v70182/CP015458.scexe)
[ilo3_128.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v73832/CP016462.scexe)
[ilo3_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v73060/CP016203.scexe)
[ilo3_155.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v81459/CP018561.scexe)
[ilo3_157.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v87094/CP020301.scexe)
[ilo3_161.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v89960/CP021281.scexe)
[ilo3_165.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v92752/CP022033.scexe)
[ilo3_170.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v88836/CP020873.scexe)
[ilo3_180.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1255562964/v94618/CP022551.scexe)
[ilo3_182.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v104114/CP025437.scexe)
[ilo3_185.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v107245/CP026424.scexe)
[ilo3_187.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v113322/CP028239.scexe)
[ilo3_188.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v116231/CP029099.scexe)
[ilo3_189.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v127869/CP032172.scexe)
[ilo3_190.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v149362/CP035511.scexe)
[ilo3_191.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v158427/CP037906.scexe)
[ilo3_192.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v176309/CP042794.scexe)
[ilo3_193.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1573561412/v183969/CP044657.scexe)
??? note "ILO4"
[ilo4_101.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v72782/CP016116.scexe)
[ilo4_105.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v74710/CP016765.scexe)
[ilo4_110.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v76510/CP017241.scexe)
[ilo4_113.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v83089/CP019101.scexe)
[ilo4_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v79401/CP017976.scexe)
[ilo4_122.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v85901/CP019887.scexe)
[ilo4_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v80804/CP018365.scexe)
[ilo4_132.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v91629/CP021804.scexe)
[ilo4_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v87181/CP020340.scexe)
[ilo4_150.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v94428/CP022524.scexe)
[ilo4_151.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v98384/CP023645.scexe)
[ilo4_153.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v100933/CP024444.scexe)
[ilo4_200.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v79407/CP017980.scexe)
[ilo4_202.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v100330/CP024170.scexe)
[ilo4_203.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v102910/CP025110.scexe)
[ilo4_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1457726527/v101197/CP024540.scexe)
[ilo4_211.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1892756734/v105467/CP025816.scexe)
[ilo4_220.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1950562118/v103093/CP025143.scexe)
[ilo4_222.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v111019/CP027514.scexe)
[ilo4_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v106715/CP026236.scexe)
[ilo4_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v112690/CP027992.scexe)
[ilo4_240.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v111237/CP027578.scexe)
[ilo4_242.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v117904/CP029630.scexe)
[ilo4_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v119757/CP030133.scexe)
[ilo4_250.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v112485/CP027911.scexe)
[ilo4_253.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v124470/CP031406.scexe)
[ilo4_254.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v133828/CP032620.scexe)
[ilo4_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v129421/CP032487.scexe)
[ilo4_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v142463/CP033806.scexe)
[ilo4_261.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v154294/CP036949.scexe)
[ilo4_262.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v160135/CP038290.scexe)
[ilo4_270.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v158634/CP037959.scexe)
[ilo4_272.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v170463/CP041058.scexe)
[ilo4_273.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v176128/CP042663.scexe)
[ilo4_275.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v182737/CP044405.scexe)
[ilo4_276.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v183797/CP044610.scexe)
[ilo4_277.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v188589/CP046020.scexe)
[ilo4_278.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v190650/CP046465.scexe)
[ilo4_279.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v204995/CP049647.scexe)
[ilo4_280.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v209058/CP050768.scexe)
[ilo4_281.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p192122427/v213013/CP051872.scexe)
??? note "ILO5"
[ilo5_117.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v141254/CP033476.scexe)
[ilo5_120.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v138105/CP032773.scexe)
[ilo5_130.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v144224/CP034170.scexe)
[ilo5_135.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v153199/CP036661.scexe)
[ilo5_137.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v157138/CP037568.scexe)
[ilo5_139.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v159725/CP038198.scexe)
[ilo5_140.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v161986/cp038901.exe)
[ilo5_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v162234/RPMS/x86_64/firmware-ilo5-1.43-1.1.x86_64.rpm) *Linux RPM*
[ilo5_143.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v162231/cp038939.exe) *Windows exe*
[ilo5_145.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v168530/RPMS/x86_64/firmware-ilo5-1.45-1.1.x86_64.rpm) *Linux RPM*
[ilo5_145.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v168528/cp040393.exe) *Windows exe*
[ilo5_146.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v169508/RPMS/x86_64/firmware-ilo5-1.46-1.1.x86_64.rpm) *Linux RPM*
[ilo5_146.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v169505/cp040736.exe) *Windows exe*
[ilo5_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v161193/RPMS/x86_64/firmware-ilo5-2.10-1.1.x86_64.rpm) *Linux RPM*
[ilo5_210.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v161192/cp038706.exe) *Windows exe*
[ilo5_214.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v177105/RPMS/x86_64/firmware-ilo5-2.14-1.1.x86_64.rpm) *Linux RPM*
[ilo5_214.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v177103/cp042927.exe) *Windows exe*
[ilo5_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v178124/RPMS/x86_64/firmware-ilo5-2.15-1.1.x86_64.rpm) *Linux RPM*
[ilo5_215.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v178118/cp043129.exe) *Windows exe*
[ilo5_216.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v179644/RPMS/x86_64/firmware-ilo5-2.16-1.1.x86_64.rpm) *Linux RPM*
[ilo5_216.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v179643/cp043490.exe) *Windows exe*
[ilo5_218.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v183738/RPMS/x86_64/firmware-ilo5-2.18-1.1.x86_64.rpm) *Linux RPM*
[ilo5_218.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v183739/cp044597.exe) *Windows exe*
[ilo5_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v167893/RPMS/x86_64/firmware-ilo5-2.30-1.1.x86_64.rpm) *Linux RPM*
[ilo5_230.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v167896/cp040154.exe) *Windows exe*
[ilo5_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v182696/RPMS/x86_64/firmware-ilo5-2.31-1.1.x86_64.rpm) *Linux RPM*
[ilo5_231.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v182701/cp044397.exe) *Windows exe*
[ilo5_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v188218/RPMS/x86_64/firmware-ilo5-2.33-1.1.x86_64.rpm) *Linux RPM*
[ilo5_233.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v188225/cp045967.exe) *Windows exe*
[ilo5_235.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v192284/RPMS/x86_64/firmware-ilo5-2.35-1.1.x86_64.rpm) *Linux RPM*
[ilo5_235.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v192285/cp046894.exe) *Windows exe*
[ilo5_241.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v193150/RPMS/x86_64/firmware-ilo5-2.41-1.1.x86_64.rpm) *Linux RPM*
[ilo5_241.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v193154/cp047027.exe) *Windows exe*
[ilo5_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v193437/RPMS/x86_64/firmware-ilo5-2.44-1.1.x86_64.rpm) *Linux RPM*
[ilo5_244.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v193439/cp047147.exe) *Windows exe*
[ilo5_246.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v195963/cp047873.exe) *Windows exe*
[ilo5_248.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v196411/RPMS/x86_64/firmware-ilo5-2.48-1.1.x86_64.rpm) *Linux RPM*
[ilo5_248.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v196412/cp047987.exe) *Windows exe*
[ilo5_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v190646/RPMS/x86_64/firmware-ilo5-2.55-1.1.x86_64.rpm) *Linux RPM*
[ilo5_255.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v190647/cp046463.exe) *Windows exe*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v204064/RPMS/x86_64/firmware-ilo5-2.60-1.1.x86_64.rpm) *Linux RPM*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v204066/cp049452.exe) *Windows exe*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v208441/RPMS/x86_64/firmware-ilo5-2.60-1.1.x86_64.rpm) *Linux RPM*
[ilo5_260.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v208443/cp050571.exe) *Windows exe*
[ilo5_263.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v205679/RPMS/x86_64/firmware-ilo5-2.63-1.1.x86_64.rpm) *Linux RPM*
[ilo5_263.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v205681/cp049779.exe) *Windows exe*
[ilo5_265.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v205303/RPMS/x86_64/firmware-ilo5-2.65-1.1.x86_64.rpm) *Linux RPM*
[ilo5_265.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v205305/cp049685.exe) *Windows exe*
[ilo5_271.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-linux-fw-ilo/p1342933511/v214929/RPMS/x86_64/firmware-ilo5-2.71-1.1.x86_64.rpm) *Linux RPM*
[ilo5_271.bin](https://downloads.hpe.com/pub/softlib2/software1/sc-windows-fw-ilo/p1748018352/v214931/cp052505.exe) *Windows exe*
[ilo5_272.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v203662/ilo5_272.fwpkg)
[ilo5_278.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v217404/ilo5_278.fwpkg)
[ilo5_281.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p991377599/v225522/ilo5_281.fwpkg)
??? note "ILO6"
[ilo6_110.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v201141/ilo6_110.fwpkg)
[ilo6_120.bin](https://downloads.hpe.com/pub/softlib2/software1/fwpkg-ilo/p788720876/v217630/ilo6_120.fwpkg)
---
[Источник](https://pingtool.org/ru/latest-hp-ilo-firmwares/){ .md-button .md-button--primary }

@ -0,0 +1,46 @@
# Kyocera
## Обновление ПО
Извлечь файлы из архива, зайти в папку соответствующую модели принтера и скопировать на флешку в корень. Чтобы файлы были без папки
1. Включи питание и дождись пока на дисплее будет написано “Ready to print” («Готов к печати»), затем выключи устройство.
2. Вставь флешку с обновлением в USB-порт
3. Включи питание
4. В течении 40 секунд будет отображаться на экране надпись “FW-Update” и будет мигать индикатор «память»
5. Окончание прошивки будет выведено на экран сообщением complite и индикатор «память» перестанет мигать
6. Выдерни кабель из устройства и вытащи флешку
7. Готово
Для проверки версии используй вход в системное меню 10871087 и команду U000
Если обновление производится из-за того, что были проблемы, то после обновления, нужно сбросить на заводские параметры. Для этого:
1. Включить МФУ и дождаться окончания загрузку
2. Набрать 10871087, и мы попадаем в техническое меню
3. Набираем команду U021
4. Нажимаем большую зеленую кнопку «Старт»
5. Выбираем \[EXECUTE\] и нажимаем кнопку «Старт»
6. Выключаем питание
7. Включаем питание
8. Настройки сброшены
## Сбой обновления
В случаях возникновения сбоев в момент прошивки устройства можно провести процедуру по восстановлению микропрограммного обеспечения.
Данная процедура называется **Emergency update**. Вот краткая инструкция по ее проведению:
1. Загрузить обычную прошивку с сайта Kyocera Document Solutions
2. Распаковать и скопировать все файлы на флешку
3. Открыть скопированные файлы на флешке и:
4. переименовать файл DL\_CTRL.**\* в KM\_EMRG.**\* *(где .\*\*\* расширение файла)*
5. удалить файл ES\_SKIP.ON
6. Вставить флешку в аппарат, включить и ждать. Прошивка займет значительно больше времени, чем обычно.
## Файлы прошивок
[https://cloud.mail.ru/public/4pfw/P4JtQwhfa](https://cloud.mail.ru/public/4pfw/P4JtQwhfa)
## Страница в ВК с прошивками
[https://vk.com/topic-115150661\_35168109](https://vk.com/topic-115150661_35168109)

@ -1,53 +0,0 @@
Оптимальный вариант просмотра (в порядке выхода)
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)

@ -1,267 +0,0 @@
# Как запустить 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
<code>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</code>
Вы можете открыть и изменить файл в соответствии с вашим вариантом использования.
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:<VERSION-TAG>#get tag https://hub.docker.com/r/prom/prometheus/tags
---
grafana:
image: grafana/grafana:<VERSION-TAG># 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<code></code>
Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже:
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)

@ -0,0 +1,8 @@
## Self-Hosting
Self-Hosting - это практика размещения и управления приложениями на собственных серверах вместо использования услуг поставщиков SaaS
Ресурсы, с подборками сервисов и служб:
- https://awesome-selfhosted.net/
- https://github.com/awesome-foss/awesome-sysadmin

@ -1,9 +1,27 @@
# Прошивка ТСД MC9200 на CE7.0 + TelnetCE # ТСД - Терминалы Сбора Данных
Весь процесс по перепрошивку ТСД можно разделить на 5 этапов:
1. Переустановка ОС 1. [Решение проблем с ТСД Motorola](../../other/tsd/troubleshooting.md)
2. Настройка ТСД 2. [Компонентный ремонт](../../other/tsd/repair.md)
3. Настройка Wi-Fi
4. Настройка TelnetCE
5. Установка TelnetCE
## Motorola MC 9090
1. [Переустановка ОС CE 5.0](../../other/tsd/reinstall-os/ce5.md)
2. [Переустановка ОС WM 6.1](../../other/tsd/reinstall-os/m61.md)
## Motorola MC 9200
1. [Переустановка ОС](../../other/tsd/reinstall-os/ce7.md)
2. [Настройка ТСД](../../other/tsd/config-ce.md)
3. [Настройка Wi-Fi](../../other/tsd/config-wifi.md)
4. [Настройка TelnetCE](../../other/tsd/config-telnetce.md)
5. [Установка TelnetCE](../../other/tsd/install-telnetce.md)
## Софт
!!! note
7.0 версии не требуют лицензии
1. [Zebra MC9000](http://www.wavelink.com/Zebra-MC9000-Emulators-downloads/)
2. [Zebra MC9100](http://www.wavelink.com/Zebra-MC9100-Emulators-downloads/)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save