mirror of
https://github.com/deadcxap/init_scripts.git
synced 2026-07-02 05:43:40 +03:00
docs: add auth portal usage guide
This commit is contained in:
@@ -2,12 +2,6 @@
|
||||
# для зоны nothing.help — не используйте глобальный API‑ключ!)
|
||||
CF_API_TOKEN=jRq98TKXi2rYYtG42x9w1M8EOElt5V5BOkA4TBoY
|
||||
|
||||
# Секрет для cookie (ровно 32 латинских буквы/цифры)
|
||||
# openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32
|
||||
TINYAUTH_SECRET=TtbYjkb1ZfzyXG7D6Q3FR6Ri8Pw2K98i
|
||||
|
||||
# Пользователи Tinyauth (формат для docker/compose!)
|
||||
# Пример с одним юзером admin:
|
||||
# admin:$2a$10$yVb0... (bcrypt)
|
||||
# Если несколько — через запятую.
|
||||
TINYAUTH_USERS='deadcxap:$$2a$$10$$5x5iG8uDD/A.zxTCr14iUuLS1d8FgEiH8oi1de6pF2Nl/iZNDBEvG'
|
||||
# Пользователи для авторизации описываются в файле users.json
|
||||
# рядом с docker-compose.yml. Хэши паролей можно получить
|
||||
# командой `caddy hash-password --plaintext "пароль"`.
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# Bootstrap
|
||||
|
||||
Роль поднимает Portainer и настраивает аутентификацию через модуль [caddy-security](https://github.com/greenpau/caddy-security).
|
||||
Портал авторизации доступен на `auth.realy.nothing.help`, а настройки пользователей находятся в файле `users.json`.
|
||||
|
||||
## Пользователи
|
||||
|
||||
Файл `users.json` содержит массив пользователей. Пример:
|
||||
|
||||
```json
|
||||
{
|
||||
"users": [
|
||||
{
|
||||
"username": "deadcxap",
|
||||
"email": "dead@cxap.space",
|
||||
"password": "$2a$10$5x5iG8uDD/A.zxTCr14iUuLS1d8FgEiH8oi1de6pF2Nl/iZNDBEvG",
|
||||
"roles": ["admin"]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Хэш пароля можно получить командой:
|
||||
|
||||
```bash
|
||||
caddy hash-password --plaintext 'секрет'
|
||||
```
|
||||
|
||||
После изменения файла нужно перезапустить контейнер `caddy`.
|
||||
|
||||
## Защита контейнеров
|
||||
|
||||
Чтобы ограничить доступ к какому-либо сервису, добавьте к контейнеру метку:
|
||||
|
||||
```
|
||||
caddy.import: auth_portal_forwarder
|
||||
```
|
||||
|
||||
и обычные метки для виртуального хоста и `reverse_proxy`. Пример для Portainer уже есть в `docker-compose.yml`.
|
||||
После авторизации пользователь возвращается к запрошенному сервису.
|
||||
@@ -16,29 +16,10 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- caddy_data:/data
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- ./users.json:/data/users.json:ro
|
||||
networks: [proxy]
|
||||
command: ["caddy","docker-proxy","--caddyfile-path=/etc/caddy/Caddyfile","--docker-sockets","unix:///var/run/docker.sock"]
|
||||
|
||||
tinyauth:
|
||||
image: ghcr.io/steveiliop56/tinyauth:v3
|
||||
container_name: tinyauth
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- LOG_LEVEL=2
|
||||
- APP_URL=https://auth.realy.nothing.help
|
||||
- SECRET=${TINYAUTH_SECRET}
|
||||
- USERS=${TINYAUTH_USERS}
|
||||
- COOKIE_SECURE=true
|
||||
- DISABLE_CONTINUE=true
|
||||
- APP_TITLE="Оставь надежду, всяк сюда входящий..."
|
||||
- FORGOT_PASSWORD_MESSAGE="Штош, сочувствую, но нчием помочь не могу."
|
||||
expose: ["3000"]
|
||||
networks: [proxy]
|
||||
labels:
|
||||
caddy: auth.realy.nothing.help
|
||||
caddy.encode: zstd gzip
|
||||
caddy.reverse_proxy: "{{upstreams 3000}}"
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer-ce:latest
|
||||
container_name: portainer
|
||||
@@ -53,7 +34,7 @@ services:
|
||||
labels:
|
||||
caddy: port.realy.nothing.help
|
||||
caddy.encode: zstd gzip
|
||||
caddy.import: tinyauth_forwarder
|
||||
caddy.import: auth_portal_forwarder
|
||||
caddy.reverse_proxy: "{{upstreams 9000}}"
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"users": [
|
||||
{
|
||||
"username": "deadcxap",
|
||||
"email": "dead@cxap.space",
|
||||
"password": "$2a$10$5x5iG8uDD/A.zxTCr14iUuLS1d8FgEiH8oi1de6pF2Nl/iZNDBEvG",
|
||||
"roles": ["admin"]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user