diff --git a/.drone.yml b/.drone.yml index 60c40ad..e2cb570 100755 --- a/.drone.yml +++ b/.drone.yml @@ -4,29 +4,28 @@ type: docker name: build-home-docs steps: -#- name: build main -# image: squidfunk/mkdocs-material:9.4.6 -# pull: if-not-exists -# volumes: -# - name: site -# path: /site -# commands: -# - pip install -U -r ./requirements.txt -# - mkdocs build -# - cp -r site/ /site -# - chown 1000:1000 /site -# - chmod -R 777 /site -# when: -# event: -# - push -# branch: -# - main +- name: build main + image: git.st1t.ru/thest1tch/mkdocs-material:latest + pull: if-not-exists + volumes: + - name: site-st1tru + path: /site + commands: + - mkdocs build + - cp -r site/ /site + - chown 1000:1000 /site + - chmod -R 777 /site + when: + event: + - push + branch: + - main - name: build states image: git.st1t.ru/thest1tch/mkdocs-material:latest pull: if-not-exists volumes: - - name: site-st1tru + - name: site-dev path: /site commands: - mkdocs build @@ -40,9 +39,9 @@ steps: - states/* volumes: -- name: site - host: - path: /opt/appdata/mkdocswiki - name: site-st1tru host: - path: /opt/appdata/nginx/st1t.ru \ No newline at end of file + path: /opt/appdata/nginx/st1t.ru +- name: site-dev + host: + path: /opt/appdata/nginx/dev.thest1tch.ru \ No newline at end of file diff --git a/docs/docker/grafana/index.md b/docs/docker/grafana/index.md index 3c645bc..3253821 100755 --- a/docs/docker/grafana/index.md +++ b/docs/docker/grafana/index.md @@ -1,6 +1,6 @@ # Grafana -Для запуска будет использовать Docker Compose. Я предпологаю, что уже есть настроенное окружение с Docker Compose, если нет, то сделать можно в [инструкции](docs/docker/install.md). +Для запуска будет использовать Docker Compose. Я предпологаю, что уже есть настроенное окружение с Docker Compose, если нет, то сделать можно в [инструкции](../install.md). Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов. diff --git a/docs/docker/homarr.md b/docs/docker/homarr.md index efbd90e..f0e7558 100755 --- a/docs/docker/homarr.md +++ b/docs/docker/homarr.md @@ -1,12 +1,12 @@ # 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/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/ajnart/homarr) +[![](https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/ajnart/homarr/releases/latest) [![](https://img.shields.io/badge/Demo-purple)](https://demo.homarr.dev/ru) -Современная панель управления домашней лабой. Позваоляет видеть все, что поднято. - +Современная панель управления домашней лабой. Позволяет видеть все, что поднято. +![](../images/docker/homarr.png) ## Запуск через Docker diff --git a/docs/docker/homepage.md b/docs/docker/homepage.md new file mode 100644 index 0000000..2544025 --- /dev/null +++ b/docs/docker/homepage.md @@ -0,0 +1,27 @@ +# Homepage + +[![](https://img.shields.io/github/stars/gethomepage/homepage?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/gethomepage/homepage) +[![](https://img.shields.io/github/v/release/gethomepage/homepage?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/gethomepage/homepage/releases/latest) + +Современная, полностью статичная, быстрая, безопасная, полностью прокси-серверная, легко настраиваемая панель управления приложениями с интеграцией более чем 100 сервисов и переводом на несколько языков. Легко настраивается с помощью файлов YAML или с помощью обнаружения меток Docker. + +![](../images/docker/homepage-1.png) + +## Запуск через Docker Compose + +```yaml +version: "3.3" +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + environment: + PUID: 1000 #-- optional, your user id + PGID: 1000 #-- optional, your group id + ports: + - 3000:3000 + volumes: + - /path/to/config:/app/config # Make sure your local config directory exists + - /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations + restart: unless-stopped +``` \ No newline at end of file diff --git a/docs/docker/nextcloud/index.md b/docs/docker/nextcloud/index.md index e5191e5..d8aff4b 100755 --- a/docs/docker/nextcloud/index.md +++ b/docs/docker/nextcloud/index.md @@ -1,14 +1,11 @@ # Nextcloud - свое облако для файлов - Запуск через docker-compose. Для начала создадим файл `.env` со следующим содержанием: ```env title=".env" PUID= PGID= TZ= -DOCKER_APP= -SECRETSDIR= NEXTCLOUD_DOMAIN_NAME= REDIS_PASSWORD= ``` @@ -21,15 +18,14 @@ version: "3.7" services: # Nextcloud Docker Application nextcloud: - image: nextcloud:25.0.4 + image: nextcloud:28 container_name: nextcloud restart: always volumes: - - $DOCKER_APP/nextcloud:/var/www/html - - $DOCKER_APP/nextcloud/apps:/var/www/html/custom_apps - - $DOCKER_APP/nextcloud/config:/var/www/html/config - - /mnt/NAS/Nextcloud:/var/www/html/data - - /mnt:/mnt + - ./nextcloud:/var/www/html + - ./nextcloud/apps:/var/www/html/custom_apps + - ./nextcloud/config:/var/www/html/config + - ./nextcloud/data:/var/www/html/data environment: - POSTGRES_HOST=192.168.1.12 - POSTGRES_DB_FILE=/run/secrets/nextcloud_postgres_db @@ -37,8 +33,8 @@ services: - POSTGRES_PASSWORD_FILE=/run/secrets/nextcloud_postgres_password - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password - NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user - - REDIS_HOST=172.18.3.249 - - REDIS_HOST_PASSWORD=$REDIS_PASSWORD + #- REDIS_HOST= + #- REDIS_HOST_PASSWORD= - PUID=$PUID - PGID=$PGID - TZ=$TZ diff --git a/docs/docker/photoprism.md b/docs/docker/photoprism.md new file mode 100644 index 0000000..f5dac5c --- /dev/null +++ b/docs/docker/photoprism.md @@ -0,0 +1,134 @@ +# Photoprism + +[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/photoprism/photoprism) +[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/photoprism/photoprism/releases/latest) +[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/photoprism/photoprism) + +PhotoPrism® — это приложение для фотографий на базе искусственного интеллекта для [децентрализованной сети](https://en.wikipedia.org/wiki/Decentralized_web). Он использует новейшие технологии для автоматического пометки и поиска изображений, не мешая вам. Вы можете запустить его дома, на частном сервере или в облаке. + +![](../images/docker/photoprism.png) + +Чтобы получить первое впечатление, можно поиграться в [демо-версию](https://try.photoprism.app/). + +## Установка + +Устанавливать будем через Docker. Как обычно. + +!!! tip + + Настройка докера описывается в статье: [Установка Docker](install.md) + +Создаем файл `docker-compose.yml`, используя команду: + +```bash +nano docker-compose.yml +``` +Заполняем новый файл: + +```yaml +version: "3.7" + +services: + photoprism: + container_name: photoprism + image: photoprism/photoprism:latest + restart: unless-stopped + stop_grace_period: 10s + depends_on: + - mariadb + security_opt: + - seccomp:unconfined + - apparmor:unconfined + ports: + - "2342:2342" + environment: + PHOTOPRISM_ADMIN_USER: $PHOTOPRISM_ADMIN_USER # admin login username + PHOTOPRISM_ADMIN_PASSWORD: $PHOTOPRISM_ADMIN_PASSWORD # initial admin password (8-72 characters) + PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: $PHOTOPRISM_SITE_URL # server URL in the format "http(s)://domain.name(:port)/(path)" + PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available + PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server + PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name + PHOTOPRISM_DATABASE_PASSWORD: $MARIADB_PASSWORD # MariaDB or MySQL database user password + PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" + PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description + PHOTOPRISM_SITE_AUTHOR: "" # meta site author + ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): + # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) + # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) + # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) + ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): + # PHOTOPRISM_INIT: "https gpu tensorflow" + ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + # PHOTOPRISM_UID: 1000 + # PHOTOPRISM_GID: 1000 + # PHOTOPRISM_UMASK: 0000 + user: "1000:1000" + working_dir: "/photoprism" # do not change or remove + ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory + volumes: + # "/host/folder:/photoprism/folder" # Example + - ./photoprism/originals:/photoprism/originals + - ./photoprism/storage:/photoprism/storage + - ./photoprism/import:/photoprism/import + # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this + + ## Database Server (recommended) + ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql + mariadb: + container_name: mariadb + image: mariadb:11 + ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue: + ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors + restart: unless-stopped + stop_grace_period: 5s + security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239 + - seccomp:unconfined + - apparmor:unconfined + command: --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120 + ## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder: + volumes: + - "./database:/var/lib/mysql" # DO NOT REMOVE + environment: + MARIADB_AUTO_UPGRADE: "1" + MARIADB_INITDB_SKIP_TZINFO: "1" + MARIADB_DATABASE: "photoprism" + MARIADB_USER: "photoprism" + MARIADB_PASSWORD: $MARIADB_PASSWORD + MARIADB_ROOT_PASSWORD: $MARIADB_ROOT_PASSWORD +``` + +Создаем файл, где будут описаны переменные: + +```bash +cp .env +``` +Нужно заполнить его: +``` +PHOTOPRISM_ADMIN_USER=admin # Имя админа +PHOTOPRISM_ADMIN_PASSWORD=password # пароль админа +PHOTOPRISM_SITE_URL=http://site.name # URL сайта, для доступа +MARIADB_ROOT_PASSWORD=strong-password # Пароль root от БД mariadb +MARIADB_PASSWORD=strong-password1 # Пароль от юзера photoprism БД +``` diff --git a/docs/docker/pictshare.md b/docs/docker/pictshare.md index 2c325b9..7f238c2 100755 --- a/docs/docker/pictshare.md +++ b/docs/docker/pictshare.md @@ -11,7 +11,7 @@ Запуск простой, через docker: ```bash -docker run -d -p 8080:80 --name=pictshare ghcr.io/hascheksolutions/pictshare +docker run -d -p 8080:80 -e "TITLE=My own PictShare" -e "URL=http://localhost/" hascheksolutions/pictshare:2 ``` После, открываем [http://localhost:8080/](http://localhost:8080) в браузере и пользуемся. @@ -30,4 +30,5 @@ docker run -d -p 8080:80 --name=pictshare ghcr.io/hascheksolutions/pictshare - Изменяйте и изменяйте размеры своих изображений и видео, просто отредактировав URL-адрес. - Дубликаты не занимают места. Если один и тот же файл загружается дважды, вторая загрузка будет связана с первой. - [Много возможностей для настройки](https://github.com/HaschekSolutions/pictshare/blob/master/rtfm/CONFIG.md) -- Полный контроль над вашими данными. Удаление изображений с индивидуальными и глобальными кодами удаления \ No newline at end of file +- Полный контроль над вашими данными. Удаление изображений с индивидуальными и глобальными кодами удаления + diff --git a/docs/docker/plex/index.md b/docs/docker/plex/index.md index b5ed397..a620dd8 100755 --- a/docs/docker/plex/index.md +++ b/docs/docker/plex/index.md @@ -144,14 +144,4 @@ sudo docker compose -f ~/docker/docker-compose.yml up -d Другой безопасный способ доступа к Plex - использовать обратный прокси. Но для этого нужно доменное имя или DDNS. -Можно использовать NGINX или Traefik. NGINX прост в настройке, но не гибок. Я рекомендую [Traefik](../traefik/index.md). - -## Полезные команды - -### Удаление мусора из PhotoTranscoder - -Часто бывает так, что папка `../Library/Application Support/Plex Media Server/Cache/PhotoTranscoder` начинает занимать очень много места. в ней хранится весь кеш из изображений. Разные версии превью - все тут. Надо как-то почистить старое, чтобы освободить место: - -```bash -find "/home/plex/plexconfig/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete -``` \ No newline at end of file +Можно использовать NGINX или Traefik. NGINX прост в настройке, но не гибок. Я рекомендую [Traefik](../traefik/index.md). \ No newline at end of file diff --git a/docs/docker/plex/radarr.md b/docs/docker/plex/radarr.md index 85b77a2..e590650 100755 --- a/docs/docker/plex/radarr.md +++ b/docs/docker/plex/radarr.md @@ -2,4 +2,9 @@ [![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr) [![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest) -[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/) \ No newline at end of file +<<<<<<< HEAD +[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/) +======= +[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/) + +>>>>>>> 49f6799 (?) diff --git a/docs/docker/plex/troubleshooting.md b/docs/docker/plex/troubleshooting.md new file mode 100644 index 0000000..6d334e4 --- /dev/null +++ b/docs/docker/plex/troubleshooting.md @@ -0,0 +1,41 @@ +# Решение проблем Plex + +## Удаление мусора из PhotoTranscoder + +Часто бывает так, что папка `../Library/Application Support/Plex Media Server/Cache/PhotoTranscoder` начинает занимать очень много места. в ней хранится весь кеш из изображений. Разные версии превью - все тут. Надо как-то почистить старое, чтобы освободить место: + +```bash +find "/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder" -name "*.jpg" -type f -mtime +5 -delete +``` + +## Удаленный доступ в LAN сети + +### Длинная версия + +Столкнулся тут с проблемой воспроизведения киношки на тв дома. Почему-то, клиент Plex для ТВ не понимал, что находится в локальной сети и сервер плекса, с которого воспроизводится контент, находится в 5 метрах от него. Из-за этого, шел постоянный процесс транскодинга к 700p. Согласитесь, смотреть кино 4K ужатое до 700p это ужас. + +Мой сетап: + +- Plex для TV на базе Plex for Android, версия 10.12. +- Сервер Plex на Ubuntu Server в docker (8 ядер, 16гб RAM) +- Роутер Mikrotik - это важно, далее поясню почему. + +Первым дело решено было смотреть, какие натсройки есть в Plex, влияющие на подключения. В настройках был обнаружен параметр **Включить ретрансляцию** (Настройки/Сеть). Если кратко, то при включении параметр позволяет подключаться через прокси ретранслятор, когда нет прямого доступа до сервера Плекса. Скорость у этого пркоси ограниченная. Это была первая причина, почему тормозило. + +При отключении этого параметра, клиент Плекса на ТВ перестал подключаться к серверу. Это был знак. С одной стороны хороший, с другой не очень - ибо надо дальше искать и чинить проблему. Ошибка `Plex unable to connect securely`. + +Ниже этого параметра, есть другой - **Внешний URL-адрес сервера**. Как я понял, это URL адреса для подключения к серверу плекса через DNS-подмену. У меня был указан адрес контейнера Докера в bridge сети. Поменял на свои внешние адреса. Пример: `"https://plex.site.ru","http://your_wan_ip:32400"` + +Но это не помогло :( + +При входе из локалки на [https://app.plex.tv](https://app.plex.tv) показывало, что библиотека не доступна. Но если входить из вне, то доступ появлялся. Значит какая то проблема с роутером. И тут я вспомнил, что для доступа к своей лабе из локалки, я настраивал [Hairpin NAT](../../network/mikrotik/hairpin-nat.md). Так может и для плекса нужно его сделать. + +Это помогло. Настроил для порта *32400* + +### Короткая версия + +Если ТВ в локалке пишет, что скорости мало, то: + +- Проверить не включен ли параметр **Включить ретрансляцию** (Настройки/Сеть) +- Проверить, стоят ли верные **внешние URL адреса** +- Если микротик, то попробовать настроить Hairpin NAT для порта plex (обычно 32400) \ No newline at end of file diff --git a/docs/docker/traefik/forward-auth.md b/docs/docker/traefik/forward-auth.md index 6185b43..38238b6 100755 --- a/docs/docker/traefik/forward-auth.md +++ b/docs/docker/traefik/forward-auth.md @@ -127,7 +127,7 @@ Google SSO выбран, как один из самых простых спос Теперь, когда учетные данные OAuth настроены, нужно полготовить контейнер OAuth. -Обязательно нужно остановить контейнер [Traefik](../traefik.md) и поправить файл `docker-compose.yml`, добавив метки Traefik и контейнер OAuth, как описано ниже. +Обязательно нужно остановить контейнер [Traefik](index.md) и поправить файл `docker-compose.yml`, добавив метки Traefik и контейнер OAuth, как описано ниже. ### Этап 3.1. Создание middlewares - Traefik Auth diff --git a/docs/docker/traefik/index.md b/docs/docker/traefik/index.md index 86cc651..663bce1 100755 --- a/docs/docker/traefik/index.md +++ b/docs/docker/traefik/index.md @@ -1,16 +1,22 @@ -Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями. +# Traefik -Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет: -- обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах; -- осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами; -- обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети; -- организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр). +**Traefik** — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями. + +!!! tip + Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет: + + - обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах + - осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами + - обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети + - организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр). В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов. ## Введение -Traefik позиционируется разработчиками как “Edge Router”, то есть можно направить его непосредственно в глобальную сеть одной стороной и во внутреннюю другой. Если у читателя создалось впечатление что таким образом создается единая точка отказа всей системы, то так и есть, но есть несколько моментов: -- во-первых, **Traefik** имеет развитый функционал для автоматического восстановления при сбоях; + +**Traefik** позиционируется разработчиками как "Edge Router", то есть можно направить его непосредственно в глобальную сеть одной стороной и во внутреннюю другой. Если у читателя создалось впечатление что таким образом создается единая точка отказа всей системы, то так и есть, но есть несколько моментов: + +- во-первых, **Traefik** имеет развитый функционал для автоматического восстановления при сбоях - во-вторых, существует **Traefik EE** — платная версия, в которой помимо прочих преимуществ имеется HA (Hight Availability, Высокая доступность), что подразумевает распределение нагрузки между несколькими экземплярами сервиса (узлами), таким образом при отказе одного его задачи перераспределяются на другие узлы, а отказавший узел отключается и затем немедленно вводится обратно в эксплуатацию. > В качестве примечания отметим, что в статье будет рассматриваться бесплатная версия Traefik. @@ -19,23 +25,23 @@ Traefik позиционируется разработчиками как “Ed Список основных провайдеров: - Docker +- File - Kubernetes - Consul Catalog - Marathon - Rancher -- File -В рамках этой статьи будут рассмотрены первый и последний провайдеры из этого списка. +В рамках этой статьи будут рассмотрены первый и второй провайдеры из этого списка. -Вероятно, не знакомому с темой читателю будет не понятно, чем является провайдер с именем — “File”, это некоторый файл (или папка с файлами), в котором описана конфигурация какого-либо сервиса, не связанного с другими провайдерами, но который должен быть скрыт за реверс-прокси. Остальные же провайдеры являются различными системами оркестрации контейнеров. +Вероятно, не знакомому с темой читателю будет не понятно, чем является провайдер с именем — *File*, это некоторый файл (или папка с файлами), в котором описана конфигурация какого-либо сервиса, не связанного с другими провайдерами, но который должен быть скрыт за реверс-прокси. Остальные же провайдеры являются различными системами оркестрации контейнеров. -Файл конфигурации Traefik, а также файлы для провайдера “File” могут быть написаны на TOML либо YAML, в статье будут приведены примеры на YAML так как этот синтаксис больше нравится автору, а какой-либо функциональной разницы между ними нет, а также не составляет трудности переписать файлы на другой формат конфигурации. Traefik будет развернут в Docker. Для развертывания будет использоваться docker-compose, для обеспечения простоты повторного развертывания. +Файл конфигурации **Traefik**, а также файлы для провайдера *File* могут быть написаны на TOML либо YAML, в статье будут приведены примеры на YAML так как этот синтаксис больше нравится автору, а какой-либо функциональной разницы между ними нет, а также не составляет трудности переписать файлы на другой формат конфигурации. Traefik будет развернут в Docker. Для развертывания будет использоваться `docker-compose`, для обеспечения простоты повторного развертывания. -> В статье будут приведены команды для ОС Linux. +> В статье будут приведены команды для ОС Ubuntu. ## Деплой Traefik -Предполагается что у читателя установлены и настроены `docker` и `docker-compose`, их установка выходит за рамки этой статьи. +Предполагается, что у читателя установлены и настроены `docker` и `docker-compose`. Установить можно [тут](../install.md) Создадим в домашней папке пользователя папку `traefik`, в которой будем хранить всю конфигурацию, и перейдем в эту папку @@ -49,7 +55,7 @@ cd ~/traefik version: '3.9' services: traefik: - image: traefik:v2.10 + image: traefik:v2.10 # Лучше не использовать тег latest container_name: traefik restart: unless-stopped security_opt: @@ -58,9 +64,9 @@ services: - 80:80 - 443:443 volumes: - - /etc/localtime:/etc/localtime:ro - - /var/run/docker.sock:/var/run/docker.sock:ro - - ./data/traefik.yml:/traefik.yml:ro + - /etc/localtime:/etc/localtime:ro # for localtime + - /var/run/docker.sock:/var/run/docker.sock:ro # Docker Socket + - ./data/traefik.yml:/traefik.yml:ro # static config ``` Во внешний мир будут смотреть порты 80 и 443 для HTTP и HTTPS соответственно. Также пробросим в контейнер сокет демона Docker для работы механизма автоматической конфигурации. Конфигурацию Traefik будем описывать в файле `traefik.yml` находящемся в папке `data` в текущей директории. @@ -70,6 +76,7 @@ services: Создадим и будем постепенно наполнять этот файл. Для начала опишем точки входа в наш прокси (те самые порты, которые смотрят во внешний мир): + ```yaml entryPoints: http: @@ -89,7 +96,7 @@ providers: exposedByDefault: false ``` -Параметром указываем что Traefik не должен брать все контейнеры подряд, далее будет объяснено каким образом мы будем сообщать какие контейнеры нас интересуют. Также здесь видно зачем мы пробрасывали сокет в контейнер — именно через него Traefik будет получать сведения о запускаемых контейнерах на этом хосте (можно подключиться и к демону на другом хосте). +Параметром `exposedByDefault` указываем, что Traefik не должен брать все контейнеры подряд, далее будет объяснено каким образом мы будем сообщать какие контейнеры нас интересуют. Также здесь видно зачем мы пробрасывали сокет в контейнер — именно через него Traefik будет получать сведения о запускаемых контейнерах на этом хосте (можно подключиться и к демону на другом хосте). Следующим шагом развернем весь HTTP трафик в HTTPS (почему это было сделано именно таким образом будет описано дальше): @@ -117,10 +124,10 @@ Traefik может проксировать не только HTTP трафик, Рассмотрим на примере описанного выше роутера: -- `http-catchall` — имя роутера, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации Traefik; -- `rule:` — правило, описывает какой трафик попадает в этот роутер, в данном случае описывается `HostRegexp`, то есть поле `Host` запроса должно попадать под регулярное выражение `.+` (то есть любое), здесь мы видим специфику регулярных выражений в Traefik — оно должно быть заключено в фигурные скобки и иметь наименование (`host` в данном случае), то есть синтаксис имеем вид `{name:reg_exp}`; -- `entrypoints` — массив описанных ранее точек входа, которые будут использоваться этим роутером, в нашем случае используем только `http`; -- `middlewares` — массив промежуточных обработчиков, куда попадает трафик перед передачей к сервису (сервисы будут рассмотрены позднее). +- `http-catchall` — имя роутера, может быть любым, но обязано быть уникальным в рамках блока `http` всей конфигурации **Traefik** +- `rule` — правило, описывает какой трафик попадает в этот роутер, в данном случае описывается `HostRegexp`, то есть поле `Host` запроса должно попадать под регулярное выражение `.+` (то есть любое). Синтаксис имеет вид `{name:reg_exp}` +- `entrypoints` — массив описанных ранее точек входа, которые будут использоваться этим роутером, в нашем случае используем только `http` +- `middlewares` — массив промежуточных обработчиков, куда попадает трафик перед передачей к сервису (сервисы будут рассмотрены позднее) Подробнее о различных видах правил можно прочитать в [документации](https://docs.traefik.io/routing/routers/#rule). @@ -133,6 +140,8 @@ Traefik может проксировать не только HTTP трафик, Подробнее о различных обработчиках можно прочитать в [документации](https://docs.traefik.io/middlewares/overview/) (дальше в статье будет описан ещё один обработчик — BasicAuth). +## Файл конфиурации + ??? note "Полностью файл traefik.yml" ```yaml entryPoints: @@ -159,15 +168,17 @@ Traefik может проксировать не только HTTP трафик, permanent: false ``` -Таким образом мы получим первую рабочую конфигурацию. Выполняем +Таким образом мы получим первую рабочую конфигурацию. Выполняем: + ```bash sudo docker-compose up -d ``` + И прокси должен подняться, можно почитать логи (`sudo docker-compose logs -f`) и убедиться, что всё работает. ## Let’s Encrypt -Поскольку мы хотим использовать HTTPS нам нужно где-то взять SSL сертификаты для сервисов, есть возможность использовать свои сертификаты, но мы настроем автоматическое получение бесплатных сертификатов от Let’s Encrypt. +Поскольку мы хотим использовать HTTPS, нам нужно где-то взять SSL сертификаты для сервисов. У нас есть возможность использовать свои сертификаты, но мы настроем автоматическое получение бесплатных сертификатов от **Let’s Encrypt**. Добавим в конфигурацию (`traefik.yml`) новый блок: @@ -181,17 +192,17 @@ certificatesResolvers: httpChallenge: entryPoint: http ``` - Здесь: -- `letsEncrypt` — это просто имя резолвера; -- `acme` — тип резолвера (других типов в общем-то и нет); -- `storage` — файл, в котором хранятся сведения о полученных сертификатах; -- `httpChallenge` — тип acme-челенжа, дополнительно указываем параметр — точку входа; + +- `letsEncrypt` — это просто имя резолвера +- `acme` — тип резолвера (других типов в общем-то и нет) +- `storage` — файл, в котором хранятся сведения о полученных сертификатах +- `httpChallenge` — тип acme-челенжа, дополнительно указываем параметр — точку входа - `caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"` — позволяет использовать не основной сервер Let’s Encrypt в тестовых целях, так как основной имеет строгие лимиты API (можно закомментировать, когда наладите получение сертификатов). Также дополним пункт `volumes` в файле `docker-compose.yml`, чтобы сохранять сертификаты при перезапуске контейнера (предварительно создав файл `data/acme.json`): -```yaml +```yaml hl_lines="5" volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro @@ -215,20 +226,21 @@ HTTPS настроен, пришло время поднять первый се - "traefik.http.services.traefik-traefik.loadbalancer.server.port=888" ``` Разберем построчно: + - `traefik.enable=true` — указываем что Traefik должен обеспечить - доступ к этому контейнеру, необходимо для всего остального; + доступ к этому контейнеру, необходимо для всего остального - `traefik.http.routers.traefik.entrypoints=https` — создаем новый - роутер с точной входа `https`; + роутер с точной входа `https` - `traefik.http.routers.traefik.rule=Host(`traefik.example.com`)` — - роутер будет жить по адресу traefik.example.com; + роутер будет жить по адресу traefik.example.com - `traefik.http.routers.traefik.tls=true` — указываем что используется - TLS; + TLS - `traefik.http.routers.traefik.tls.certresolver=letsEncrypt` — - указываем через какой резолвер получать сертификат; + указываем через какой резолвер получать сертификат - `traefik.http.routers.traefik.service=api@internal` — указываем, что сервер за этим роутером — `api@internal`, это специальный сервис, созданный по умолчанию, это как раз и есть дашбоард который мы хотели - увидеть; + увидеть - `traefik.http.services.traefik-traefik.loadbalancer.server.port=888` — издержки интерфейса, без этого не заработает, но можно написать абсолютно любую цифру. @@ -248,25 +260,26 @@ sudo docker-compose down && sudo docker-compose up -d Когда всё поднимется можно перейти на `traefik.example.com` (тут на самом деле должен быть ваш домен, который направлен на хост с Traefik) и увидеть дашборд. -Дашбоард это хорошо, но мы не хотим, чтобы все пользователи интернета имели к нему доступ, закроем его от внешнего мира с помощью BasicAuth, для это в Traefik есть специальный middleware. +Дашбоард это хорошо, но мы не хотим, чтобы все пользователи интернета имели к нему доступ, закроем его от внешнего мира с помощью BasicAuth, для это в Traefik есть специальный *middleware*. -Для начала сгенерируем для нас строку с логином и паролем (admin/password)^ +Для начала сгенерируем для нас строку с логином и паролем (admin/password): ```bash $ htpasswd -nb admin password admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1 ``` - Теперь добавим в наш `docker-compose.yml` новые строчки: + ```yaml - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1" - "traefik.http.routers.traefik.middlewares=traefik-auth" ``` Заметим, что символы `$` из полученной строки мы должны заменить на `$$`. -- `traefik.http.middlewares.traefik-auth.basicauth.users=...` — создаем middleware типа `basicauth` с параметром `users`; -- `traefik.http.routers.traefik.middlewares=traefik-auth` — указываем что роутер `traefik` использует только что-то созданный middleware. + +- `traefik.http.middlewares.traefik-auth.basicauth.users=...` — создаем middleware типа `basicauth` с параметром `users` +- `traefik.http.routers.traefik.middlewares=traefik-auth` — указываем что роутер `traefik` использует только что-то созданный middleware ??? note "Весь docker-compose.yml" ```yaml @@ -294,6 +307,8 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1 - "traefik.http.routers.traefik.tls.certresolver=letsEncrypt" - "traefik.http.routers.traefik.service=api@internal" - "traefik.http.services.traefik-traefik.loadbalancer.server.port=888" + - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$vDSqkf.v$$GTJOtsd9CBiAFFnHTI2Ds1" + - "traefik.http.routers.traefik.middlewares=traefik-auth" ``` Теперь при попытке доступа к дашборду у нас спросят логин и пароль. @@ -318,7 +333,7 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1 Добавим в `docker-compose.yml` ещё один `volume`: -```yaml +```yaml hl_lines="5" volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro @@ -333,7 +348,6 @@ admin:$apr1$vDSqkf.v$GTJOtsd9CBiAFFnHTI2Ds1 ```yaml providers: -... file: directory: /custom watch: true @@ -370,7 +384,7 @@ http: loadBalancer: servers: - хосты для балансировки нагрузки - - ... + #- ... ``` Дополнительно мы указываем параметр `passHostHeader: true` чтобы тот хост думал, что он на самом деле смотрит в сеть и прокси нет. \ No newline at end of file diff --git a/docs/games/factorio/blueprints.md b/docs/games/factorio/blueprints.md index e2ccc99..2115cf8 100755 --- a/docs/games/factorio/blueprints.md +++ b/docs/games/factorio/blueprints.md @@ -9,8 +9,6 @@ ## Modular Rail Network [![](https://i.imgur.com/7UHaFA1.jpeg)](https://www.factorio.school/view/-K_VpUtsGAlQeBuZ1oez) -[![name](pic)](link) - ## Tileable Science Production 0.17-1.0 - Early to Mid Game [![](http://i.imgur.com/42RoMSil.jpeg)](https://www.factorio.school/view/-KnQ865j-qQ21WoUPbd3) diff --git a/docs/other/hardware/hpe-ilo.md b/docs/hardware/hpe-ilo.md similarity index 100% rename from docs/other/hardware/hpe-ilo.md rename to docs/hardware/hpe-ilo.md diff --git a/docs/other/phone/grandstream/example-config.md b/docs/hardware/phone/grandstream/example-config.md similarity index 100% rename from docs/other/phone/grandstream/example-config.md rename to docs/hardware/phone/grandstream/example-config.md diff --git a/docs/other/phone/grandstream/provisioning.md b/docs/hardware/phone/grandstream/provisioning.md similarity index 100% rename from docs/other/phone/grandstream/provisioning.md rename to docs/hardware/phone/grandstream/provisioning.md diff --git a/docs/other/phone/ipecs-mg/books.md b/docs/hardware/phone/ipecs-mg/books.md similarity index 100% rename from docs/other/phone/ipecs-mg/books.md rename to docs/hardware/phone/ipecs-mg/books.md diff --git a/docs/other/phone/ipecs-mg/general.md b/docs/hardware/phone/ipecs-mg/general.md similarity index 100% rename from docs/other/phone/ipecs-mg/general.md rename to docs/hardware/phone/ipecs-mg/general.md diff --git a/docs/other/phone/ipecs-mg/voice.md b/docs/hardware/phone/ipecs-mg/voice.md similarity index 100% rename from docs/other/phone/ipecs-mg/voice.md rename to docs/hardware/phone/ipecs-mg/voice.md diff --git a/docs/other/hardware/printers/kyocera.md b/docs/hardware/printers/kyocera.md similarity index 100% rename from docs/other/hardware/printers/kyocera.md rename to docs/hardware/printers/kyocera.md diff --git a/docs/other/synology/install-hpe-ms-gen10.md b/docs/hardware/synology/install-hpe-ms-gen10.md similarity index 100% rename from docs/other/synology/install-hpe-ms-gen10.md rename to docs/hardware/synology/install-hpe-ms-gen10.md diff --git a/docs/hardware/synology/install-xpenology-dsm7.2.md b/docs/hardware/synology/install-xpenology-dsm7.2.md new file mode 100644 index 0000000..c856899 --- /dev/null +++ b/docs/hardware/synology/install-xpenology-dsm7.2.md @@ -0,0 +1,11 @@ +# Установка Xpenology DSM 7.2 + +Ставить будем через ARC + +https://github.com/AuxXxilium/arc +https://www.reddit.com/r/Xpenology/comments/xho4fg/upgrade_from_6x_to_7x_xpenology/ +https://xpenology.com/forum/topic/62221-tutorial-installmigrate-to-dsm-7x-with-tinycore-redpill-tcrp-loader/ +https://bafista.ru/kak-obnovit-xpenology-s-dsm-7-1-do-7-2/ + +Тут же применимо обновление версии Xpenology с 6 до 7.2 +Обновление не сильно отличает от новой устанвоки diff --git a/docs/hardware/synology/sso-client.md b/docs/hardware/synology/sso-client.md new file mode 100644 index 0000000..2098f57 --- /dev/null +++ b/docs/hardware/synology/sso-client.md @@ -0,0 +1,46 @@ +# SSO вход на Synology через Authentik + +Чуть от себя, чуть с [официальной документации](https://kb.synology.com/en-af/DSM/help/DSM/AdminCenter/file_directory_service_sso?version=7). + +!!! warning + + Применимо к DSM 7.1 и выше. + +# Подготовка + +Будут использоваться следующие заполнители: + +- `synology.company`— это полное доменное имя сервера Synology DSM. +- `authentik.company`— это полное доменное имя установки authentik. + +## Настройки на Authentik + +В интерфейсе администратора Authentik, в разделе *«Поставщики»* создайте поставщика OAuth2/OpenID со следующими настройками: + +- Название: Synology +- URI перенаправления: `https://synology.company/#/signin` (обратите внимание на отсутствие косой черты и включение порта веб-интерфейса) +- Ключ подписи: выберите любой доступный ключ. +- Режим темы: `Based on the Users's Email` +- Обратите внимание на `Client ID` и `Client secret`. + +Далее. Создайте приложение, использующее этого провайдера. При необходимости примените ограничения доступа к приложению. + +## Настройка Synology DSM + +Чтобы настроить Synology DSM для использования Authentik в качестве поставщика OpenID Connect 1.0: + +1. В панели управления DSM перейдите в раздел **Домен/LDAP** -> **Клиент SSO**. +2. Установите флажок **Выберите SSO по умолчанию на странице входа в систему**. +3. Установите флажок **Включить службу OpenID Connect SSO**. +4. Нажмите на кнопку **Настройки OpenID Connect SSO**. +5. Настройте следующие значения: + - Профиль: OIDC + - Тип учетной записи: Домен/LDAP/локальный + - Имя: Authentik + - Well-known url: скопируйте его из «URL-адреса конфигурации OpenID» в провайдере аутентификации (URL-адрес заканчивается на «/.well-known/openid-configuration»). + - Идентификатор приложения: «Идентификатор клиента» от поставщика аутентификации. + - Секрет приложения: «Секрет клиента» от провайдера аутентификации. + - Переадресация URI: `https://synology.company/#/signin` (он должен точно соответствовать «URI перенаправления» в authentik) + - Область действия авторизации: `openid profile email` + - Заявка на имя пользователя: `preferred_username` + - Сохраните настройки. \ No newline at end of file diff --git a/docs/hardware/synology/update-ca-root-cert.md b/docs/hardware/synology/update-ca-root-cert.md new file mode 100644 index 0000000..af259eb --- /dev/null +++ b/docs/hardware/synology/update-ca-root-cert.md @@ -0,0 +1,29 @@ +# Обновление пакета корневых сертификатов CA + +Я столкнулся с проблемой, что мой Synology NAS не может получить данные из локального реестра Docker: + +``` +docker: Error response from daemon: Get "https://redacted-local-hostname.net/v2/": x509: certificate has expired or is not yet valid +``` + +Оказывается, мой Synology не получает последние корневые сертификаты CA. Я обнаружил это, пытаясь скачать докер образ. Каждый раз выходила ошибка. Тогда я решил постучаться куда нить через **curl**. + +```bash +curl -I https://st1t.ru +curl: (60) SSL certificate problem: certificate has expired +More details here: https://curl.haxx.se/docs/sslcerts.html +... +``` +Исправить оказалось довольно легко. Нужно лишь скачать актуальные корневые сертифиаты. Приведенные ниже команды загружают сертификаты с сайта Curl.se в формате PEM. Перемещаем их туда, где Synology хранит связку CA-сертификатов, перезаписывая его. Мы сделаем резервную копию исходного пакета сертификатов CA с *.backup* расширением на тот случай, если по какой-либо причине вы захотите вернуться. + +```bash +cp /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.backup +wget --no-check-certificate https://curl.se/ca/cacert.pem +mv cacert.pem /etc/ssl/certs/ca-certificates.crt +``` + +После этого та же команда **curl** начала работать успешно. Однако Docker по-прежнему выдавал ту же ошибку — то есть не получал обновленные корневые сертификаты. Чтобы заставить работать, нужно перезапустить демон Synology Docker: + +```bash +synoservice --restart pkgctl-Docker +``` \ No newline at end of file diff --git a/docs/other/tsd/config-ce.md b/docs/hardware/tsd/config-ce.md similarity index 100% rename from docs/other/tsd/config-ce.md rename to docs/hardware/tsd/config-ce.md diff --git a/docs/other/tsd/config-telnetce.md b/docs/hardware/tsd/config-telnetce.md similarity index 100% rename from docs/other/tsd/config-telnetce.md rename to docs/hardware/tsd/config-telnetce.md diff --git a/docs/other/tsd/config-wifi.md b/docs/hardware/tsd/config-wifi.md similarity index 100% rename from docs/other/tsd/config-wifi.md rename to docs/hardware/tsd/config-wifi.md diff --git a/docs/hardware/tsd/index.md b/docs/hardware/tsd/index.md new file mode 100755 index 0000000..27dc3fa --- /dev/null +++ b/docs/hardware/tsd/index.md @@ -0,0 +1,27 @@ +# ТСД - Терминалы Сбора Данных + +1. [Решение проблем с ТСД Motorola](troubleshooting.md) +2. [Компонентный ремонт](repair.md) + +## Motorola MC 9090 + +1. [Переустановка ОС CE 5.0](reinstall-os/ce5.md) +2. [Переустановка ОС WM 6.1](reinstall-os/m61.md) + + +## Motorola MC 9200 + + 1. [Переустановка ОС](reinstall-os/ce7.md) + 2. [Настройка ТСД](config-ce.md) + 3. [Настройка Wi-Fi](config-wifi.md) + 4. [Настройка TelnetCE](config-telnetce.md) + 5. [Установка TelnetCE](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/) \ No newline at end of file diff --git a/docs/other/tsd/install-telnetce.md b/docs/hardware/tsd/install-telnetce.md similarity index 100% rename from docs/other/tsd/install-telnetce.md rename to docs/hardware/tsd/install-telnetce.md diff --git a/docs/other/tsd/reinstall-os/ce5.md b/docs/hardware/tsd/reinstall-os/ce5.md similarity index 100% rename from docs/other/tsd/reinstall-os/ce5.md rename to docs/hardware/tsd/reinstall-os/ce5.md diff --git a/docs/other/tsd/reinstall-os/ce7.md b/docs/hardware/tsd/reinstall-os/ce7.md similarity index 100% rename from docs/other/tsd/reinstall-os/ce7.md rename to docs/hardware/tsd/reinstall-os/ce7.md diff --git a/docs/other/tsd/reinstall-os/m61.md b/docs/hardware/tsd/reinstall-os/m61.md similarity index 100% rename from docs/other/tsd/reinstall-os/m61.md rename to docs/hardware/tsd/reinstall-os/m61.md diff --git a/docs/other/tsd/repair.md b/docs/hardware/tsd/repair.md similarity index 100% rename from docs/other/tsd/repair.md rename to docs/hardware/tsd/repair.md diff --git a/docs/other/tsd/troubleshooting.md b/docs/hardware/tsd/troubleshooting.md similarity index 100% rename from docs/other/tsd/troubleshooting.md rename to docs/hardware/tsd/troubleshooting.md diff --git a/docs/other/tsd/update-mc9090.md b/docs/hardware/tsd/update-mc9090.md similarity index 100% rename from docs/other/tsd/update-mc9090.md rename to docs/hardware/tsd/update-mc9090.md diff --git a/docs/images/docker/homarr.png b/docs/images/docker/homarr.png new file mode 100644 index 0000000..20dc09e Binary files /dev/null and b/docs/images/docker/homarr.png differ diff --git a/docs/images/docker/homepage-1.png b/docs/images/docker/homepage-1.png new file mode 100644 index 0000000..63ba45f Binary files /dev/null and b/docs/images/docker/homepage-1.png differ diff --git a/docs/images/docker/photoprism.png b/docs/images/docker/photoprism.png new file mode 100644 index 0000000..0468f6f Binary files /dev/null and b/docs/images/docker/photoprism.png differ diff --git a/docs/other/tsd/index.md b/docs/other/tsd/index.md deleted file mode 100755 index 1db8b0a..0000000 --- a/docs/other/tsd/index.md +++ /dev/null @@ -1,27 +0,0 @@ -# ТСД - Терминалы Сбора Данных - -1. [Решение проблем с ТСД Motorola](../../other/tsd/troubleshooting.md) -2. [Компонентный ремонт](../../other/tsd/repair.md) - -## 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/) \ No newline at end of file diff --git a/docs/smart-home/hass/package/budilnik.md b/docs/smart-home/hass/package/budilnik.md index 315c6f9..4c4f0de 100755 --- a/docs/smart-home/hass/package/budilnik.md +++ b/docs/smart-home/hass/package/budilnik.md @@ -9,8 +9,8 @@ ## Карточка -![](../../images/hass/card-budilnik-1.png) -![](../../images/hass/card-budilnik-2.png) +![](../../../images/hass/card-budilnik-1.png) +![](../../../images/hass/card-budilnik-2.png) ??? example "Код карточки" diff --git a/docs/smart-home/hass/zigbee2mqtt.md b/docs/smart-home/hass/zigbee2mqtt.md index fbdd5e5..3c5b4c1 100755 --- a/docs/smart-home/hass/zigbee2mqtt.md +++ b/docs/smart-home/hass/zigbee2mqtt.md @@ -2,7 +2,7 @@ Чтоб установить актуальную версию, нам нужно зайти в магазин дополнений и добавить туда новую ссылку: `https://github.com/zigbee2mqtt/hassio-zigbee2mqtt` -![](../images/hass/card-budilnik-1.png) +![](../../images/hass/zigbee2mqtt-1.png) После добавления этой ссылки в репозитории, необходимо перезапустить Home Assistant. @@ -35,7 +35,7 @@ USB Stick Sonoff ZB Dongle-E – это новый координатор Zigbee 6. Выбираем **Все оборудование**. 7. Находим через поиск наш стик - можно ввести в поиск sonoff, покажется адрес -![](../images/hass/zigbee2mqtt-2.png) +![](../../images/hass/zigbee2mqtt-2.png) Копируем строчу начиная от **DEVLINKS:**. Строчка должна выглядеть примерно так: diff --git a/docs/smart-home/wirenboard/new-controller.md b/docs/smart-home/wirenboard/new-controller.md index e790173..a963687 100755 --- a/docs/smart-home/wirenboard/new-controller.md +++ b/docs/smart-home/wirenboard/new-controller.md @@ -12,4 +12,23 @@ https://wirenboard.com/wiki/Wiren_Board_7.4 ``` timedatectl set-timezone Asia/Yekaterinburg -``` \ No newline at end of file +``` + +## Новое устройство для Modbus + +Первым делом, увеличиваем скорость работы. Со стандартных 9600 на 115200, что соответствует "быстрому modbus" + +Подключаемся к контроллеру по ssh и останавливаем службу `wb-mqtt-serial`. Затем выставляем нужную скорость и запускаем службу обратно. + +```bash +systemctl stop wb-mqtt-serial +modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a212 -t0x06 -r110 1152 +systemctl start wb-mqtt-serial +``` +Разберем 2 строчку подробнее: + +- `-b9600` - текущая скорость работы +- `-a212` - адрес устройство в modbus +- `/dev/ttyRS485-2` - через какой интерфейс подключаемся +- `-r110 1152` - записываем в регистр **110** значение скорости *115200* + diff --git a/docs/software/win/serv/mssql.md b/docs/software/win/serv/mssql.md index d22434f..4435b76 100755 --- a/docs/software/win/serv/mssql.md +++ b/docs/software/win/serv/mssql.md @@ -31,12 +31,6 @@ GO ## Удаление Log Shipping без второго сервера -![Database Properties](http%3A%2F%2Flh3.googleusercontent.com%2F-8u7Gar1yO54%2FVbBhpg9uqII%2FAAAAAAAAAxk%2FscsPJqqKNRI%2Fimage_thumb%5B5%5D.png) - -![Error Deleting Log Shipping Configuration](http%3A%2F%2Flh3.googleusercontent.com%2F-0bXadZHuNDo%2FVbBhqc0arwI%2FAAAAAAAAAxw%2FiTkT7RLZsJQ%2Fimage_thumb%5B7%5D.png) - -![image](http%3A%2F%2Flh3.googleusercontent.com%2F-2JVo2aXEBAU%2FVbBhq7Ocz-I%2FAAAAAAAAAyA%2FMB1kTPPthvM%2Fimage_thumb%5B9%5D.png) - Удаление через скрипт ```sql diff --git a/mkdocs.yml b/mkdocs.yml index 570954a..1d920e4 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,9 +22,13 @@ nav: - Сервисы: - Drone CI: docker/drone.md - Gitea: docker/gitea.md - - Grafana+Prometheus: docker/grafana-prometheus.md + #- Grafana+Prometheus: docker/grafana-prometheus.md + - Grafana: + - index.md + - Prometheus: docker/grafana/prometheus.md - HandBrake: docker/handbrake.md - Homarr: docker/homarr.md + - Homepage: docker/homepage.md - Linx Server: docker/linx-server.md - MotionEye: docker/motioneye.md - Nextcloud: @@ -34,6 +38,7 @@ nav: - Cron: docker/nextcloud/cron.md - Проблемы с data: docker/nextcloud/problems-after-moving-data-folder.md - OCC: docker/nextcloud/occ-files-scan.md + - Photoprism: docker/photoprism.md - Pictshare: docker/pictshare.md - Plex: - docker/plex/index.md @@ -43,8 +48,9 @@ nav: - Plex Meta Manager: docker/plex/plex-mm.md - Plex Trakt Sync: docker/plex/plextraktsync.md - Prowlarr: docker/plex/prowlarr.md - #- Radarr: - #- Sonarr: + - Radarr: docker/plex/radarr.md + - Sonarr: docker/plex/sonarr.md + - Решение проблем: docker/plex/troubleshooting.md - Redis: docker/redis.md - Samba: docker/samba.md - Syncthing: docker/syncthing.md @@ -116,6 +122,33 @@ nav: - Установка DialUX: software/win/desk/dialux.md - VS Code: - Запрос учетных данных Git: software/vscode/asking-git-credentials.md + - Hardware: + - IP Телефоны: + - Grandstream: + - Provisioning через TFTP: hardware/phone/grandstream/provisioning.md + - Пример конфигурации: hardware/phone/grandstream/example-config.md + - Ipecs-MG: + - Общие настройки: hardware/phone/ipecs-mg/general.md + - Книги: hardware/phone/ipecs-mg/books.md + - Голосовые приветствия: hardware/phone/ipecs-mg/voice.md + - Принтеры: + - Kyocera: hardware/printers/kyocera.md + - ТСД: + - hardware/tsd/index.md + - Переустановка ОС: + - CE 5.0: hardware/tsd/reinstall-os/ce5.md + - CE 7.0: hardware/tsd/reinstall-os/ce7.md + - WM 6.1: hardware/tsd/reinstall-os/m61.md + - Настройка ТСД: hardware/tsd/config-ce.md + - Настройка Wi-Fi: hardware/tsd/config-wifi.md + - Настройка TelnetCE: hardware/tsd/config-telnetce.md + - Установка TelnetCE: hardware/tsd/install-telnetce.md + - Траблшутинг: hardware/tsd/troubleshooting.md + - Synology: + - HPE Microserver Gen10: hardware/synology/install-hpe-ms-gen10.md + - SSO Login: hardware/synology/sso-client.md + - Update CA root Cert: hardware/synology/update-ca-root-cert.md + - HPE iLo: hardware/hpe-ilo.md - Proxmox: - Proxmox VE: - proxmox/index.md @@ -139,24 +172,7 @@ nav: - Другое: - Закрыть фишинговый сайт: other/close-phishing-site.md - SSL для сайта: other/ssl-for-site.md - - Self Hosted: other/self-hosted.md - - Hardware: - - HPE iLo: other/hardware/hpe-ilo.md - - Принтеры: - - Kyocera: other/hardware/printers/kyocera.md - - ТСД: - - other/tsd/index.md - - Переустановка ОС: - - CE 5.0: other/tsd/reinstall-os/ce5.md - - CE 7.0: other/tsd/reinstall-os/ce7.md - - WM 6.1: other/tsd/reinstall-os/m61.md - - Настройка ТСД: other/tsd/config-ce.md - - Настройка Wi-Fi: other/tsd/config-wifi.md - - Настройка TelnetCE: other/tsd/config-telnetce.md - - Установка TelnetCE: other/tsd/install-telnetce.md - - Траблшутинг: other/tsd/troubleshooting.md - - Synology: - - HPE Microserver Gen10: other/synology/install-hpe-ms-gen10.md + - Self Hosted: other/self-hosted.md - Office: - Excel: - other/office/excel/index.md @@ -169,14 +185,6 @@ nav: - VBA Удаление пароля: other/office/excel/vba-remove-pass.md - Outlook: - Ошибки: other/office/outlook/error.md - - IP Телефоны: - - Grandstream: - - Provisioning через TFTP: other/phone/grandstream/provisioning.md - - Пример конфигурации: other/phone/grandstream/example-config.md - - Ipecs-MG: - - Общие настройки: other/phone/ipecs-mg/general.md - - Книги: other/phone/ipecs-mg/books.md - - Голосовые приветствия: other/phone/ipecs-mg/voice.md - Сеть: - Утилиты: - Wtraf: network/tools/wtraf.md