From d71d3d08e03a9942ab6d61107dad706c45aa9333 Mon Sep 17 00:00:00 2001 From: deadcxap Date: Wed, 27 Aug 2025 15:33:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7=D0=BE=D0=BF=D0=B0=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D1=81=D0=B8=D0=BB=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=B4=D0=B4=D0=B8,=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 23 ++++++++++++++++++++++- docker-compose.yml | 4 +++- users.json | 8 +++++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.MD b/README.MD index 4bbd1f3..6acc1e7 100644 --- a/README.MD +++ b/README.MD @@ -26,6 +26,15 @@ caddy hash-password --plaintext 'секрет' ``` +Или на python: + +```bash +pip install bcrypt +``` +```bash +python -c "import bcrypt,sys; print(bcrypt.hashpw(sys.argv[1].encode(), bcrypt.gensalt(rounds=12)).decode())" 'секрет' +``` + После изменения файла нужно перезапустить контейнер `caddy`. ## Защита контейнеров @@ -33,8 +42,20 @@ caddy hash-password --plaintext 'секрет' Чтобы ограничить доступ к какому-либо сервису, добавьте к контейнеру метку: ``` -caddy.import: auth_portal_forwarder +caddy.import: auth_forward ``` и обычные метки для виртуального хоста и `reverse_proxy`. Пример для Portainer уже есть в `docker-compose.yml`. После авторизации пользователь возвращается к запрошенному сервису. + +### Открытие пути для API + +Чтобы открыть некий путь без авторизации, добавить лейблы: + +``` + caddy.handle_path: /api/* + caddy.handle_path.0_reverse_proxy: "{{upstreams 9000}}" +``` + +и не прописывать им `caddy.import: auth_forward`. +И наоборот, аналогично можно закрыть авторизацией только нужный путь. \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index edd390d..183dfcd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,8 +33,10 @@ services: networks: [proxy] labels: caddy: port.realy.nothing.help + caddy.handle_path: /api/* + caddy.handle_path.0_reverse_proxy: "{{upstreams 9000}}" caddy.encode: zstd gzip - caddy.import: auth_portal_forwarder + caddy.import: auth_forward caddy.reverse_proxy: "{{upstreams 9000}}" volumes: diff --git a/users.json b/users.json index 8dd6bc9..ff25a6d 100644 --- a/users.json +++ b/users.json @@ -3,8 +3,10 @@ { "username": "deadcxap", "email": "dead@cxap.space", - "password": "$2a$10$5x5iG8uDD/A.zxTCr14iUuLS1d8FgEiH8oi1de6pF2Nl/iZNDBEvG", - "roles": ["admin"] + "password": "$2b$12$s5SZcTu0THrdIHmdqTIuS.Hb89nokYfwF5xSDPSJPZsKoYnFkv61i", + "roles": [ + "admin" + ] } ] -} +} \ No newline at end of file