Instalación del Servidor
Requisitos
Sistema Operativo
Todos los principales sistemas operativos, incluyendo Windows, Linux y macOS, son compatibles.
Entorno
Sugerimos encarecidamente utilizar Yarn 1.x para ejecutar y construir el frontend de Casdoor. Usar NPM podría causar problemas de estilo de la interfaz de usuario. Para más detalles, ver: casdoor#294.
Si tu red no logra sincronizar directamente los paquetes de dependencia de Go con éxito, necesitas usar un proxy de Go configurando la variable de entorno GOPROXY. Recomendamos encarecidamente utilizar: https://goproxy.cn/
Base de datos
Casdoor utiliza XORM para comunicarse con la base de datos. Based on Xorm Drivers Support, Casdoor currently provides support for the following databases:
MySQLMariaDBPostgreSQLCockroachDBSQL ServerOracleSQLite 3TiDB
Descargar
El código fuente de Casdoor está alojado en GitHub: https://github.com/casdoor/casdoor. Tanto el código backend de Go como el código frontend de React están contenidos en un solo repositorio.
| Nombre | Descripción | Idioma | Código fuente |
|---|---|---|---|
| Frontend | Interfaz de usuario frontend web para Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
| Backend | Backend API RESTful para Casdoor | Golang + Beego + XORM | https://github.com/casdoor/casdoor |
Casdoor soporta Go Modules. Para descargar el código, simplemente clona el código usando git:
cd path/to/folder
git clone https://github.com/casdoor/casdoor
Configuración
Configurar Base de Datos
Casdoor soporta MySQL, MSSQL, SQLite3 y PostgreSQL. Por defecto, Casdoor utiliza MySQL.
MySQL
Casdoor almacena información de usuarios, nodos y temas en una base de datos MySQL llamada casdoor. Si la base de datos no existe, debe ser creada manualmente. La cadena de conexión de la DB se puede especificar en: https://github.com/casdoor/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
Antes de ejecutar Casdoor, necesitas preparar manualmente una base de datos para PostgreSQL, ya que Casdoor requiere seleccionar una base de datos al abrir Postgres con xorm.
Suponiendo que ya has preparado una base de datos llamada casdoor, deberías especificar app.conf de esta manera:
driverName = postgres
dataSourceName = user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor
dbName = casdoor
dataSourceName tenga un dbName no vacío y también duplique el nombre de la base de datos para el campo dbname como se muestra en el ejemplo anterior. :::CockroachDB
CockroachDB también se puede utilizar con el controlador de PostgreSQL y tiene la misma configuración que PostgreSQL.
driverName = postgres
dataSourceName = user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor serial_normalization=virtual_sequence
dbName = casdoor
SQLite3
Para configurar SQLite3, deberías especificar app.conf de esta manera:
driverName = sqlite
dataSourceName = file:casdoor.db?cache=shared
dbName = casdoor
A través de archivo Ini
Casdoor can be configured via a single file: conf/app.conf. As a beginner, you only need to modify driverName and dataSourceName based on your database (see Configure Database). Below is a complete reference of all configuration options:
| Parameter | Default Value | Description |
|---|---|---|
appname | casdoor | Application name (currently has no practical use) |
httpport | 8000 | Port that the backend application listens on |
runmode | dev | Running mode: dev or prod |
copyrequestbody | true | Whether to copy request body for later use |
driverName | mysql | Database driver (e.g., mysql, postgres, sqlite). See Configure Database |
dataSourceName | root:123456@tcp(localhost:3306)/ | Database connection string. See Configure Database |
dbName | casdoor | Database name used by Casdoor |
tableNamePrefix | (empty) | Prefix for table names when using an adapter |
showSql | false | Show SQL statements in logger when log level is greater than INFO |
redisEndpoint | (empty) | Redis endpoint for session storage (e.g., localhost:6379). If empty, sessions are stored locally in ./tmp. For password: host:port,db,password |
defaultStorageProvider | (empty) | Default storage provider name for file uploads (e.g., avatars). See storage |
isCloudIntranet | false | Whether provider endpoints use intranet addresses |
authState | "casdoor" | Authorization application name checked during login |
socks5Proxy | "127.0.0.1:10808" | SOCKS5 proxy address for OAuth providers (Google, GitHub, etc.) that may be blocked |
verificationCodeTimeout | 10 | Verification code expiration time in minutes |
initScore | 0 | Initial score assigned to new users (used by Casnode, not Casdoor) |
logPostOnly | true | Whether to log only POST requests |
isUsernameLowered | false | Whether to convert usernames to lowercase |
origin | (empty) | Backend origin URL (e.g., https://door.casdoor.com) |
originFrontend | (empty) | Frontend origin URL if different from backend |
staticBaseUrl | "https://cdn.casbin.org" | CDN URL for static assets used during database initialization |
isDemoMode | false | Enable demo mode restrictions |
batchSize | 100 | Batch size for bulk operations |
enableErrorMask | false | Whether to mask detailed error messages |
enableGzip | true | Accept and respond with gzip encoding when client supports it |
inactiveTimeoutMinutes | (empty) | Auto-logout timeout in minutes. Empty or ≤0 means no timeout |
ldapServerPort | 389 | Port for LDAP server |
ldapsCertId | "" | Certificate ID for LDAPS connections |
ldapsServerPort | 636 | Port for LDAPS (LDAP over SSL) server |
radiusServerPort | 1812 | Port for RADIUS server |
radiusDefaultOrganization | "built-in" | Default organization for RADIUS authentication |
radiusSecret | "secret" | Shared secret for RADIUS authentication |
quota | {"organization": -1, "user": -1, "application": -1, "provider": -1} | Resource quotas (-1 means unlimited) |
logConfig | {"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"} | Logging configuration (adapter, file path, rotation, permissions) |
initDataNewOnly | false | Whether to initialize data only for new installations |
initDataFile | "./init_data.json" | Path to data initialization file. See Data Initialization |
frontendBaseDir | "../cc_0" | Base directory for frontend files (only for development) |
A través de Variables de Entorno
Todos los elementos de configuración definidos por Casdoor en el archivo ini mencionado anteriormente se pueden configurar a través de variables de entorno, así como algunos de los elementos de configuración de beego (httpport, appname).
Por ejemplo, cuando intentas iniciar Casdoor, puedes usar algo como esto para pasar la configuración a través de variables de entorno:
appname=casbin go run main.go
Además, los derivados de export también son un método posible. Los nombres de las variables ambientales deben coincidir exactamente con los nombres que deseas utilizar en el archivo ini.
Nota: las configuraciones en variables ambientales pueden sobrescribir las configuraciones en el archivo ini.
Ejecutar
Actualmente hay dos métodos para iniciar, y puedes elegir uno según tu situación.
Modo de Desarrollo
Backend
El backend de Go de Casdoor se ejecuta en el puerto 8000 por defecto. Puedes iniciar el backend de Go con el siguiente comando:
go run main.go
Después de que el servidor esté funcionando con éxito, puedes iniciar la parte frontend.
Frontend
El frontend de Casdoor es un proyecto muy clásico de Create-React-App (CRA). Se ejecuta en el puerto 7001 por defecto. Usa los siguientes comandos para ejecutar el frontend:
cd web
yarn install
yarn start
Visita http://localhost:7001 en tu navegador. Inicie sesión en el panel de Casdoor con la cuenta de administrador global predeterminada: built-in/admin.
admin
123
Modo Producción
Backend
Construya el código del backend de Casdoor Go en un ejecutable e inícielo.
Para Linux:
go build
./casdoor
Para Windows:
go build
casdoor.exe
Frontend
Construya el código del frontend de Casdoor en recursos estáticos (archivos .html, .js, .css):
cd web
yarn install
yarn build
Visite http://localhost:8000 en su navegador. Inicie sesión en el panel de Casdoor con la cuenta de administrador global predeterminada: built-in/admin.
admin
123
Para usar otro puerto, por favor edite conf/app.conf y modifique httpport, luego reinicie el backend de Go.
En el entorno dev, el frontend se ejecuta por yarn run en el puerto 7001, así que si quiere ir a la página de inicio de sesión de Casdoor, necesita configurar el enlace de Casdoor como http://localhost:7001.
En el entorno prod, los archivos del frontend se construyen primero por yarn build y se sirven en el puerto 8000, así que si quiere ir a la página de inicio de sesión de Casdoor, necesita configurar el enlace de Casdoor como https://your-casdoor-url.com:8000 (Si está utilizando un proxy inverso, necesita configurar el enlace como su dominio).
Tome Nuestro Foro Oficial Casnode como Ejemplo
Casnode utiliza Casdoor para manejar la autenticación.
Cuando estamos probando Casnode en el entorno dev, configuramos el serverUrl como http://localhost:7001, así que cuando probamos la funcionalidad de inicio de sesión y registro usando Casdoor, irá a localhost 7001, que es el puerto de Casdoor.
Y cuando ponemos Casnode en el entorno prod, configuramos el serverUrl como https://door.casdoor.com, así los usuarios pueden iniciar sesión o registrarse usando Casdoor.
