diff --git a/README.md b/README.md index 92f14b1..5d5baf0 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ A [proxy](https://en.wikipedia.org/wiki/Proxy_server) is a server application th - [Authentik](examples/authentik) - Authentik is an open-source Identity Provider focused on flexibility and versatility. - [Keycloak](examples/keycloak) - Keycloak is an open-source Identity and Access Management (IAM) solution for modern applications and services. - [ZITADEL](examples/zitadel) - ZITADEL is an open-source identity and access management platform built for teams that need more than basic auth. +- [Casdoor](examples/casdoor) - An open-source AI-first Identity and Access Management (IAM) /AI MCP gateway and auth server with web UI. - [lldap](examples/lldap) - lldap is a lightweight authentication server that provides an opinionated, simplified LDAP interface for authentication. It integrates with many backends, from KeyCloak to Authelia to Nextcloud and more. ### Large Language Models & AI diff --git a/examples/casdoor/README.md b/examples/casdoor/README.md new file mode 100644 index 0000000..f19d970 --- /dev/null +++ b/examples/casdoor/README.md @@ -0,0 +1,12 @@ +# References + +- https://github.com/casdoor/casdoor +- https://casdoor.org/pl/docs/basic/try-with-docker/ + +# Notes + +You have to manually supply an `app.conf` configuration file. + +Within this file, you have to define your postgresql database connection string. + +An example `app.conf` is provided in this repository. diff --git a/examples/casdoor/app.conf b/examples/casdoor/app.conf new file mode 100644 index 0000000..a2ce6e0 --- /dev/null +++ b/examples/casdoor/app.conf @@ -0,0 +1,18 @@ +# general +appname = casdoor +httpport = 8000 +runmode = prod + +# database +driverName = postgres +dataSourceName = host=db port=5432 user=casdoor password=Str0ngPassw0rt! dbname=casdoor sslmode=disable + +# logging and debugging +showSql = true +logPostOnly = true + +# more settings +verificationCodeTimeout = 10 +inactiveTimeoutMinutes = 10 +staticBaseUrl = "https://cdn.casbin.org" +enableGzip = true diff --git a/examples/casdoor/docker-compose.yml b/examples/casdoor/docker-compose.yml new file mode 100644 index 0000000..6c5bd0c --- /dev/null +++ b/examples/casdoor/docker-compose.yml @@ -0,0 +1,47 @@ +services: + + casdoor: + image: casbin/casdoor:2.353.0 + container_name: casdoor + restart: unless-stopped + depends_on: + - db + ports: + - 8000:8000 + expose: + - 8000 + environment: + - GIN_MODE=release + - RUNNING_IN_DOCKER=true + volumes: + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/casdoor/conf:/conf # config file must be created manually with postgres connection + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/casdoor/logs:/logs + #networks: + # - proxy + # - casdoor_net + #labels: + # - traefik.enable=true + # - traefik.docker.network=proxy + # - traefik.http.routers.casdoor.rule=Host(`casdoor.example.com`) + # - traefik.http.services.casdoor.loadbalancer.server.port=8000 + # # Optional part for traefik middlewares + # - traefik.http.routers.casdoor.middlewares=local-ipwhitelist@file,crowdsec@file,limit-CHANGEME + + db: + image: postgres:18-alpine + container_name: casdoor-db + restart: unless-stopped + environment: + - POSTGRES_USER=casdoor + - POSTGRES_PASSWORD=pls-changeme-to-strong-pw + - POSTGRES_DB=casdoor + volumes: + - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/casdoor/db:/var/lib/postgresql + #networks: + # - casdoor_net + +#networks: +# proxy: +# external: true +# casdoor_net: +# internal: true