День добрый! Хочу вывесить свои сервисы наружу, но что бы была аутентификация.
Глаз упал на Casdoor(может вроде как в роли, как я понимаю можно настроить одним и тем же пользователям через роли доступ к разным сервисам)
Установить я его смог достаточно просто в LXC+Docker Compose:
version: '3'
services:
postgres-casdoor:
image: postgres:16
container_name: postgres-casdoor
restart: unless-stopped
environment:
POSTGRES_DB: casdoor
POSTGRES_USER: postgres
POSTGRES_PASSWORD: s3cr3t!
ports:
- "5432:5432"
volumes:
- ./data/postgres/data:/var/lib/postgresql/data
networks:
- casdoor-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d casdoor"]
interval: 10s
timeout: 5s
retries: 5
casdoor:
image: casbin/casdoor:latest
container_name: casdoor
restart: unless-stopped
ports:
- "8000:8000"
environment:
- GIN_MODE=release
- RUNNING_IN_DOCKER=true
volumes:
- ./data/casdoor/conf:/conf
- ./data/casdoor/logs:/logs
- ./data/casdoor/files:/files
depends_on:
postgres-casdoor:
condition: service_healthy
networks:
- casdoor-net
networks:
casdoor-net:
driver: bridge
Но в UI не все так гладко:
Вот конфиг:
appname = casdoor
httpport = 8000
runmode = prod
copyrequestbody = true
driverName = postgres
dataSourceName = "user=postgres password=s3cr3t! host=postgres-casdoor port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider = local
isCloudIntranet = false
authState = "casdoor"
socks5Proxy =
verificationCodeTimeout = 10
initScore = 0
logPostOnly = true
isUsernameLowered = false
origin =
originFrontend =
isDemoMode = false
batchSize = 100
enableErrorMask = false
enableGzip = true
inactiveTimeoutMinutes =
ldapServerPort = 389
ldapsCertId = ""
ldapsServerPort = 636
radiusServerPort = 1812
radiusDefaultOrganization = "built-in"
radiusSecret = "secret"
quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
logConfig = {"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}
initDataNewOnly = false
initDataFile = "./init_data.json"
frontendBaseDir =
staticBaseUrl = "https://auth.example.ru/"
Адрес auth.example.ru прокинут через adguard через замену на локальный IP, из инета торчит внешний IP. Доступ и так и так есть.
Есть статья по провайдеру для Storage: https://casdoor.org/docs/provider/storage/localFileSystem/
Сделал как там указано - ничего не поменялось…
В чем может быть проблема никто не может подсказать? ChatGPT уже кругами ходит, я тоже голову сломал - нифига не работает…

