Saltar al contenido principal

Instalación del Servidor

Requisitos

Sistema Operativo

Todos los principales sistemas operativos, incluyendo Windows, Linux y macOS, son compatibles.

Entorno

información

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.

precaución

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. Basado en Soporte de Drivers de Xorm, Casdoor actualmente proporciona soporte para las siguientes bases de datos:

  • MySQL
  • MariaDB
  • PostgreSQL
  • CockroachDB
  • SQL Server
  • Oracle
  • SQLite 3
  • TiDB

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.

NombreDescripciónIdiomaCódigo fuente
FrontendInterfaz de usuario frontend web para CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
BackendBackend API RESTful para CasdoorGolang + Beego + XORMhttps://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
Para PostgreSQL, asegúrese de que 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 se puede configurar a través de un solo archivo: conf/app.conf, que por defecto contiene el siguiente contenido:

appname = casdoor
httpport = 8000
runmode = dev
SessionOn = true
copyrequestbody = true
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 10
initScore = 2000
logPostOnly = true
origin = "https://door.casdoor.com"
staticBaseUrl = "https://cdn.casbin.org"
enableGzip = true
inactiveTimeoutMinutes =
  • appname es el nombre de la aplicación, que actualmente no tiene uso práctico.
  • httpport es el puerto en el que tu aplicación backend está escuchando.
  • runmode se puede configurar a dev o prod.
  • SessionOn determina si habilitar la sesión y está habilitado por defecto.
  • driverName, dataSourceName y dbName fueron introducidos anteriormente. Por favor, ver Configurar Base de Datos para más detalles.
  • verificationCodeTimeout establece el tiempo de expiración del código de verificación. Después de la expiración, el usuario necesita obtenerlo de nuevo.

Como principiante, solo necesitas modificar dos elementos: driverName y dataSourceName basado en tu base de datos. Esta base de datos será utilizada por Casdoor para almacenar todos los datos, incluyendo usuarios, organizaciones y aplicaciones.

  • tableNamePrefix es el prefijo de la tabla al usar un adaptador.
  • showSql determina si mostrar las declaraciones SQL en el logger si el nivel de log es mayor que INFO.
  • redisEndpoint es el punto final de Redis utilizado por el almacenamiento de sesión de Beego. Si este parámetro está vacío, los datos de la sesión se almacenarán localmente como archivos en la carpeta ./tmp. Para usar Redis como almacenamiento de sesión de Beego, el valor sería algo como: redis.example.com:6379. Si Redis está desplegado localmente, puedes usar localhost:6379. Si la contraseña de Redis está habilitada, usa redis.example.com:6379,db,password. Ver más detalles en: https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config.
  • defaultStorageProvider es el nombre del servicio de almacenamiento de archivos predeterminado. Si necesitas utilizar servicios de almacenamiento de archivos como la carga de avatares, necesitas configurar un proveedor de almacenamiento y aplicarlo en tu aplicación. Ver almacenamiento para más detalles.
  • isCloudIntranet se utiliza para identificar si tu punto final del proveedor es un punto final de intranet.
  • authState es el nombre de la aplicación de autorización. Este parámetro será verificado al iniciar sesión.
  • socks5Proxy es la dirección IP del servidor proxy SOCKS. Establece el puerto del proxy porque tenemos servicios relacionados con Google o usamos Google, GitHub, Facebook, LinkedIn o Steam como Proveedores de OAuth, que pueden estar restringidos por la red en algunas áreas.
  • initScore es la puntuación inicial de cada usuario. Cada usuario tiene un atributo de puntuación. La puntuación es utilizada por Casnode y no controla nada en Casdoor.
  • logPostOnly se utiliza para determinar si solo se utiliza el método post para agregar un registro.
  • origin es el nombre de dominio del backend de origen.
  • staticBaseUrl es la dirección de la imagen estática utilizada cuando el sistema inicializa la base de datos.
  • enableGzip aceptará y responderá con codificación gzip si el encabezado de la solicitud incluye Accept-Encoding=gzip.
  • inactiveTimeoutMinutes sets the maximum number of minutes of inactivity. If the inactivity time reaches this value, then casdoor will log the user out. Empty value or value less than or equal to 0 means there is no limit on the user's inactivity time.

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
consejo

Para usar otro puerto, por favor edite conf/app.conf y modifique httpport, luego reinicie el backend de Go.

Detalles del Puerto de Casdoor

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.

Ejemplo de Casnode