📦⚡️ Casdoor

A UI-first centralized authentication / Single-Sign-On (SSO) platform based on OAuth 2.0 / OIDC.

semantic-release docker pull casbin/casdoor GitHub Workflow Status (branch) GitHub Release Docker Image Version (latest semver)

Go Report Card license GitHub issues GitHub stars GitHub forks Crowdin Gitter

## Online demo Deployed site: https://door.casdoor.com/ ## Quick Start Run your own casdoor program in a few minutes. ### Download There are two methods, get code via go subcommand `get`: ```shell go get github.com/casdoor/casdoor ``` or `git`: ```bash git clone https://github.com/casdoor/casdoor ``` Finally, change directory: ```bash cd casdoor/ ``` We provide two start up methods for all kinds of users. ### Manual #### Simple configuration Casdoor requires a running Relational database to be operational.Thus you need to modify configuration to point out the location of database. Edit `conf/app.conf`, modify `dataSourceName` to correct database info, which follows this format: ```bash username:password@tcp(database_ip:database_port)/ ``` #### Run Casdoor provides two run modes, the difference is binary size and user prompt. ##### Dev Mode Edit `conf/app.conf`, set `runmode=dev`. Firstly build front-end files: ```bash cd web/ && yarn && yarn run start ``` *❗ A word of caution ❗: Casdoor's front-end is built using yarn. You should use `yarn` instead of `npm`. It has a potential failure during building the files if you use `npm`.* Then build back-end binary file, change directory to root(Relative to casdoor): ```bash go run main.go ``` That's it! Try to visit http://127.0.0.1:7001/. :small_airplane: **But make sure you always request the backend port 8000 when you are using SDKs.** ##### Production Mode Edit `conf/app.conf`, set `runmode=prod`. Firstly build front-end files: ```bash cd web/ && yarn && yarn run build ``` Then build back-end binary file, change directory to root(Relative to casdoor): ```bash go build main.go && sudo ./main ``` > Notice, you should visit back-end port, default 8000. Now try to visit **http://SERVER_IP:8000/** ### Docker Casdoor provide 2 kinds of image: - casbin/casdoor-all-in-one, in which casdoor binary, a mysql database and all necessary configurations are packed up. This image is for new user to have a trial on casdoor quickly. **With this image you can start a casdoor immediately with one single command (or two) without any complex configuration**. **Note: we DO NOT recommend you to use this image in productive environment** - casbin/casdoor: normal & graceful casdoor image with only casdoor and environment installed. This method requires [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/) to be installed first. ### Start casdoor with casbin/casdoor-all-in-one if the image is not pulled, pull it from dockerhub ```shell docker pull casbin/casdoor-all-in-one ``` Start it with ```shell docker run -p 8000:8000 casbin/casdoor-all-in-one ``` Now you can visit http://localhost:8000 and have a try. Default account and password is 'admin' and '123'. Go for it! ### Start casdoor with casbin/casdoor #### modify the configurations For the convenience of your first attempt, docker-compose.yml contains commands to start a database via docker. Thus edit `conf/app.conf` to point out the location of database(db:3306), modify `dataSourceName` to the fixed content: ```bash dataSourceName = root:123456@tcp(db:3306)/ ``` > If you need to modify `conf/app.conf`, you need to re-run `docker-compose up`. #### Run ```bash docker-compose up ``` That's it! Try to visit http://localhost:8000/. :small_airplane: ## Detailed documentation We also provide a complete [document](https://casdoor.org/) as a reference. ## Other examples These all use casdoor as a centralized authentication platform. - [Casnode](https://github.com/casbin/casnode): Next-generation forum software based on React + Golang. - [Casbin-OA](https://github.com/casbin/casbin-oa): A full-featured OA(Office Assistant) system. - ...... ## Contribute For casdoor, if you have any questions, you can give Issues, or you can also directly start Pull Requests(but we recommend giving issues first to communicate with the community). ### I18n notice If you are contributing to casdoor, please note that we use [Crowdin](https://crowdin.com/project/casdoor-web) as translating platform and i18next as translating tool. When you add some words using i18next in the ```web/``` directory, please remember to add what you have added to the ```web/src/locales/en/data.json``` file. ## License [Apache-2.0](https://github.com/casdoor/casdoor/blob/master/LICENSE)