diff --git a/docs/docker/dockge.md b/docs/docker/dockge.md new file mode 100644 index 0000000..08dfca2 --- /dev/null +++ b/docs/docker/dockge.md @@ -0,0 +1,107 @@ +# Dockge + +![](../images/docker/dockge.svg){: style="height:150px;width:150px"} + +[![](https://img.shields.io/github/stars/louislam/dockge?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/louislam/dockge) +[![](https://img.shields.io/github/v/release/louislam/dockge?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/louislam/dockge/releases/latest) +[![Docker Pulls](https://img.shields.io/docker/pulls/louislam/dockge.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/louislam/dockge/) + +Стильный, простой и быстрый self-hosted менеджер Docker Compose менеджер. + +![](../images/docker/dockge01.png) + + +## ⭐ Возможности + +- 🧑‍💼 Управление `compose.yaml` файлом + - Создание/Редактирование/Запуск/Остановка/Перезапуск/Удаление + - Обновление Docker образов +- ⌨️ Интерактивный редактор для `compose.yaml` +- 🦦 Интерактивный Web-терминал +- 🕷️ (1.4.0 🆕) Поддержка нескольких инстансов - Можно управлять несколькими стаками на разных Docker хостах через один интерфейс +- 🏪 Преобразование `docker run ...` команд в `compose.yaml` +- 📙 Файловая структура - Dockge не меняет изначальные файлы, они хранятся на диске как обычно. Можно взаимодействовать с ними, используя обычные `docker compose` команды +- 🚄 Быстрый - Прогресс (Pull/Up/Down) и вывод терминала в режиме реального времени +- 🐣 Простой в использовании и стильный пользовательский интерфейс. + +## 🔧 Установка + +Requirements: +- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman +- (Podman only) podman-docker (Debian: `apt install podman-docker`) +- OS: + - Основные дистрибутивы Linux могут запускать Docker/Podman, например: + - ✅ Ubuntu + - ✅ Debian (Bullseye или новее) + - ✅ Raspbian (Bullseye или новее) + - ✅ CentOS + - ✅ Fedora + - ✅ ArchLinux +- Arch: armv7, arm64, amd64 (a.k.a x86_64) + +### Основы + +- Папка хранения стеков: `/opt/stacks` +- Порт: 5001 + +``` +# Create directories that store your stacks and stores Dockge's stack +mkdir -p /opt/stacks /opt/dockge +cd /opt/dockge + +# Download the compose.yaml +curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml + +# Start the server +docker compose up -d + +# If you are using docker-compose V1 or Podman +# docker-compose up -d +``` + +Dockge будет запущен по адресу http://localhost:5001 + +### Углубленный + +```yaml +services: + dockge: + image: louislam/dockge:1 + restart: unless-stopped + ports: + # Host Port : Container Port + - 5001:5001 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./data:/app/data + + # If you want to use private registries, you need to share the auth file with Dockge: + # - /root/.docker/:/root/.docker + + # Stacks Directory + # ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH. + # ⚠️ 1. FULL path only. No relative path (MUST) + # ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST) + - /opt/stacks:/opt/stacks + environment: + # Tell Dockge where is your stacks directory + - DOCKGE_STACKS_DIR=/opt/stacks +``` + +## Обновление + +```bash +cd /opt/dockge +docker compose pull && docker compose up -d +``` + +## Скриншоты + +![](https://github.com/louislam/dockge/assets/1336778/e7ff0222-af2e-405c-b533-4eab04791b40) + + +![](https://github.com/louislam/dockge/assets/1336778/7139e88c-77ed-4d45-96e3-00b66d36d871) + +![](https://github.com/louislam/dockge/assets/1336778/f019944c-0e87-405b-a1b8-625b35de1eeb) + +![](https://github.com/louislam/dockge/assets/1336778/a4478d23-b1c4-4991-8768-1a7cad3472e3) \ No newline at end of file diff --git a/docs/docker/plex/prowlarr.md b/docs/docker/plex/prowlarr.md index 4d7ba6d..7f79c2b 100755 --- a/docs/docker/plex/prowlarr.md +++ b/docs/docker/plex/prowlarr.md @@ -1,7 +1,7 @@ # Prowlarr [![](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) +[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Prowlarr/Prowlarr/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/) ![](../../images/docker/prowlarr-1.png) @@ -23,8 +23,6 @@ Prowlarr — это менеджер индексаторов и прокси, С Prowlarr у вас будет одно место для управления всеми индексаторами всех ваших приложений Arr. Это отличная замена [Jackett](./jackett.md). ```yaml title="docker-compose.yml" -version: "3.7" - services: prowlarr: image: lscr.io/linuxserver/prowlarr:latest diff --git a/docs/images/docker/dockge.svg b/docs/images/docker/dockge.svg new file mode 100644 index 0000000..b8e2df2 --- /dev/null +++ b/docs/images/docker/dockge.svg @@ -0,0 +1,14 @@ + + + +Created with Fabric.js 5.3.0 + + + + + + + + + + \ No newline at end of file diff --git a/docs/images/docker/dockge01.png b/docs/images/docker/dockge01.png new file mode 100644 index 0000000..3542e44 Binary files /dev/null and b/docs/images/docker/dockge01.png differ diff --git a/docs/network/mikrotik/ebgp.md b/docs/network/mikrotik/ebgp.md new file mode 100644 index 0000000..8999ff6 --- /dev/null +++ b/docs/network/mikrotik/ebgp.md @@ -0,0 +1,31 @@ +# Получение кастомных маршрутов eBGP + +Выпускаем трафик BGP с маршрутизатора + +``` +/ip firewall filter add action=accept chain=output protocol=tcp dst-address=51.75.66.20 dst-port=179 out-interface=site2 +``` + +Прописываем маршрут до сервиса, который содержит маршруты BGP. Это нужно для того, чтобы избежать фильтрации BGP. + +``` +/ip route add dst-address=51.75.66.20/32 gateway=site2 +``` + +Настраиваем пиринг с сервисом + +!!! 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=BGP_1 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= .role=\ + ebgp multihop=yes name=BGP1 output.filter-chain=discard \ + remote.address=51.75.66.20/32 .as=65444 router-id= \ + routing-table=main templates=BGP_1 + + /routing filter rule + add chain=bgp_in disabled=no rule="set gw site2; accept; + add chain=discard disabled=no rule=reject + ``` \ No newline at end of file diff --git a/docs/network/mikrotik/mark-traffik.md b/docs/network/mikrotik/mark-traffik.md new file mode 100644 index 0000000..d91ab70 --- /dev/null +++ b/docs/network/mikrotik/mark-traffik.md @@ -0,0 +1,23 @@ +# Маркировка траффика + +Сделаем Policy-based Routing (PBR) - маршрутизация на основе определенных политик (правил, условий), которые являются относительно гибкими и устанавливаются Администратором. Другими словами это технология предоставляет условия гибкой маршрутизации (если смотреть на технологию с первоочередной ее задачи), по источнику или назначению пакета. + +Формируем списки (`address-list`) для адресов или подсетей: +``` +# auth.servarr.com - ресурс, у которого меняем маршрут +/ip firewall address-list add list=PBR address=auth.servarr.com +``` + +Создаем таблицу маршрутизации + +``` +/routing table +add Disabled=no name=PBR fib +``` +Настраиваем правила роутинга + +``` +/ip firewall mangle add disabled=no action=mark-routing chain=prerouting dst-address-list=PBR new-routing-mark=PBR 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=site2 routing-mark=PBR scope=30 target-scope=10 +/ip firewall nat add chain=srcnat src-address=192.168.88.0/24 out-interface=site2 action=masquerade +``` \ No newline at end of file diff --git a/docs/network/mikrotik/unblock-site.md b/docs/network/mikrotik/unblock-site.md deleted file mode 100755 index 6e5f576..0000000 --- a/docs/network/mikrotik/unblock-site.md +++ /dev/null @@ -1,67 +0,0 @@ -# Обход блокировок Европейских сайтов - -Расписывать как поднять и настроить 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= .role=\ - ebgp multihop=yes name=bgp-antifilter.net output.filter-chain=discard \ - remote.address=51.75.66.20/32 .as=65444 router-id= \ - 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 - ``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index c35d68f..e98bcfa 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -21,6 +21,7 @@ nav: - TCP Route: docker/traefik/tcp-routes.md - Сервисы: - Drone CI: docker/drone.md + - Dockge: docker/dockge.md - Gitea: docker/gitea.md #- Grafana+Prometheus: docker/grafana-prometheus.md - Grafana: @@ -198,6 +199,8 @@ nav: - Split-DNS: network/mikrotik/split-dns.md - Hairpin NAT: network/mikrotik/hairpin-nat.md - UPnP: network/mikrotik/upnp.md + - eBGP: network/mikrotik/ebgp.md + - Маркировка трафика: network/mikrotik/mark-traffik.md #- Обход блокировок: network/mikrotik/unblock-site.md - Ubiquiti: - Добавление новой точки: network/ubi/add-new-ap.md