Pular para o conteúdo principal

Instalação do Servidor

Requisitos

Sistema Operacional

Todos os principais sistemas operacionais, incluindo Windows, Linux e macOS, são suportados.

Ambiente

informação

Sugerimos fortemente o uso de Yarn 1.x para executar e construir o frontend do Casdoor. Usar NPM pode causar problemas de estilo da UI. Para mais detalhes, veja: casdoor#294.

cuidado

Se sua rede falhar ao sincronizar diretamente os pacotes de dependência do Go com sucesso, você precisará usar um proxy Go configurando a variável de ambiente GOPROXY. Sugerimos fortemente o uso de: https://goproxy.cn/

Banco de dados

Casdoor usa XORM para se comunicar com o banco de dados. Baseado no Suporte a Drivers do Xorm, o Casdoor atualmente fornece suporte para os seguintes bancos de dados:

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

Baixar

O código-fonte do Casdoor está hospedado no GitHub: https://github.com/casdoor/casdoor. Tanto o código backend em Go quanto o código frontend em React estão contidos em um único repositório.

NomeDescriçãoIdiomaCódigo-fonte
FrontendUI de frontend web para CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
BackendBackend de API RESTful para CasdoorGolang + Beego + XORMhttps://github.com/casdoor/casdoor

Casdoor suporta Go Modules. Para baixar o código, basta clonar o código usando git:

cd path/to/folder
git clone https://github.com/casdoor/casdoor

Configuração

Configurar Banco de Dados

Casdoor suporta MySQL, MSSQL, SQLite3 e PostgreSQL. Por padrão, o Casdoor usa MySQL.

MySQL

Casdoor armazena informações de usuário, nó e tópico em um banco de dados MySQL chamado casdoor. Se o banco de dados não existir, ele deve ser criado manualmente. A string de conexão do DB pode ser especificada em: https://github.com/casdoor/casdoor/blob/master/conf/app.conf

driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor

PostgreSQL

Antes de executar o Casdoor, você precisa preparar manualmente um banco de dados para PostgreSQL, pois o Casdoor requer a seleção de um banco de dados ao abrir o Postgres com xorm.

Supondo que você já tenha preparado um banco de dados chamado casdoor, você deve especificar app.conf assim:

driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
Para PostgreSQL, certifique-se de que dataSourceName tenha um dbName não vazio e também duplicar o nome do banco de dados para o campo dbname como mostrado no exemplo acima. :::

CockroachDB

CockroachDB também pode ser usado com o driver do PostgreSQL e tem a mesma configuração que o 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 o SQLite3, você deve especificar app.conf assim:

driverName = sqlite
dataSourceName = "file:casdoor.db?cache=shared"
dbName = casdoor

Via arquivo Ini

Casdoor pode ser configurado via um único arquivo: conf/app.conf, que por padrão contém o seguinte conteúdo:

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
  • appname é o nome da aplicação, que atualmente não tem uso prático.
  • httpport é a porta que sua aplicação backend está ouvindo.
  • runmode pode ser definido como dev ou prod.
  • SessionOn determina se a sessão será habilitada e está habilitada por padrão.
  • driverName, dataSourceName e dbName foram introduzidos anteriormente. Por favor, veja Configurar Banco de Dados para detalhes.
  • verificationCodeTimeout define o tempo de expiração do código de verificação. Após a expiração, o usuário precisa obtê-lo novamente.

Como iniciante, você só precisa modificar dois itens: driverName e dataSourceName com base no seu banco de dados. Este banco de dados será usado pelo Casdoor para armazenar todos os dados, incluindo usuários, organizações e aplicações.

  • tableNamePrefix é o prefixo da tabela ao usar um adaptador.
  • showSql determina se as instruções SQL serão mostradas no logger se o nível de log for maior que INFO.
  • redisEndpoint é o endpoint do Redis usado pelo armazenamento de sessão do Beego. Se este parâmetro estiver vazio, os dados da sessão serão armazenados localmente como arquivos na pasta ./tmp. Para usar o Redis como armazenamento de sessão do Beego, o valor seria algo como: redis.example.com:6379. Se o Redis estiver implantado localmente, você pode usar localhost:6379. Se a senha do Redis estiver habilitada, use redis.example.com:6379,db,senha. Veja mais detalhes em: https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config.
  • defaultStorageProvider é o nome do serviço de armazenamento de arquivos padrão. Se você precisa usar serviços de armazenamento de arquivos, como upload de avatar, você precisa configurar um provedor de armazenamento e aplicá-lo em sua aplicação. Veja armazenamento para detalhes.
  • isCloudIntranet é usado para identificar se o endpoint do seu provedor é um endpoint de intranet.
  • authState é o nome da aplicação de autorização. Este parâmetro será verificado ao fazer login.
  • socks5Proxy é o endereço IP do servidor proxy SOCKS. Defina a porta do proxy porque temos serviços relacionados ao Google ou usamos Google, GitHub, Facebook, LinkedIn ou Steam como Provedores OAuth, que podem ser restritos pela rede em algumas áreas.
  • initScore é a pontuação inicial de cada usuário. Cada usuário tem um atributo de pontuação. A pontuação é usada pelo Casnode e não controla nada no Casdoor.
  • logPostOnly é usado para determinar se apenas o método post é usado para adicionar um registro.
  • origin é o nome de domínio do backend de origem.
  • staticBaseUrl é o endereço da imagem estática usada quando o sistema inicializa o banco de dados.
  • enableGzip aceitará e responderá com codificação gzip se o cabeçalho da solicitação incluir Accept-Encoding=gzip.

Via Variáveis de Ambiente

Todos os itens de configuração definidos pelo Casdoor no arquivo ini mencionado acima podem ser configurados via variáveis de ambiente, bem como alguns dos itens de configuração do beego (httpport, appname).

Por exemplo, quando você tenta iniciar o Casdoor, você pode usar algo assim para passar a configuração via variáveis de ambiente:

appname=casbin go run main.go

Além disso, derivativos de export também são um método possível. Os nomes das variáveis ambientais devem corresponder exatamente aos nomes que você deseja usar no arquivo ini.

Observação: configurações em variáveis ambientais podem substituir as configurações no arquivo ini.

Executar

Atualmente, existem dois métodos para iniciar, e você pode escolher um de acordo com sua situação.

Modo de Desenvolvimento

Backend

O backend Go do Casdoor roda na porta 8000 por padrão. Você pode iniciar o backend Go com o seguinte comando:

go run main.go

Depois que o servidor estiver rodando com sucesso, você pode iniciar a parte do frontend.

Frontend

O frontend do Casdoor é um projeto muito clássico Create-React-App (CRA). Ele roda na porta 7001 por padrão. Use os seguintes comandos para executar o frontend:

cd web
yarn install
yarn start

Visite http://localhost:7001 no seu navegador. Faça login no painel do Casdoor com a conta de administrador global padrão: built-in/admin.

admin
123

Modo de Produção

Backend

Compile o código backend do Casdoor Go em um executável e inicie-o.

Para Linux:

go build
./casdoor

Para Windows:

go build
casdoor.exe

Frontend

Compile o código frontend do Casdoor em recursos estáticos (arquivos .html, .js, .css):

cd web
yarn install
yarn build

Visite http://localhost:8000 no seu navegador. Faça login no painel do Casdoor com a conta de administrador global padrão: built-in/admin.

admin
123
dica

Para usar outra porta, por favor edite conf/app.conf e modifique httpport, depois reinicie o backend Go.

Detalhes da Porta do Casdoor

No ambiente dev, o frontend é executado por yarn run na porta 7001, então se você quiser ir para a página de login do Casdoor, você precisa configurar o link do Casdoor como http://localhost:7001.

No ambiente prod, os arquivos do frontend são primeiro compilados por yarn build e servidos na porta 8000, então se você quiser ir para a página de login do Casdoor, você precisa configurar o link do Casdoor como https://your-casdoor-url.com:8000 (Se você estiver usando um proxy reverso, você precisa configurar o link como seu domínio).

Pegue Nosso Fórum Oficial Casnode como Exemplo

Casnode usa o Casdoor para lidar com autenticação.

Quando estamos testando o Casnode no ambiente dev, configuramos o serverUrl como http://localhost:7001, então quando testamos a funcionalidade de login e cadastro usando o Casdoor, ele irá para o localhost 7001, que é a porta do Casdoor.

E quando colocamos o Casnode no ambiente prod, configuramos o serverUrl como https://door.casdoor.com, então os usuários podem se inscrever ou se cadastrar usando o Casdoor.

Exemplo de Casnode