Установка сервера
Требования
Операционная система
Поддерживаются все основные операционные системы, включая Windows, Linux и macOS.
Окружение
Мы настоятельно рекомендуем использовать Yarn 1.x для запуска и сборки фронтенда Casdoor. Использование NPM может вызвать проблемы со стилем UI. Для более подробной информации смотрите: casdoor#294.
Если ваша сеть не может напрямую синхронизировать пакеты зависимостей Go успешно, вам нужно использовать Go прокси, настроив переменную окружения GOPROXY. Мы настоятельно рекомендуем использовать: https://goproxy.cn/
База данных
Casdoor использует XORM для взаимодействия с базой данных. Based on Xorm Drivers Support, Casdoor currently provides support for the following databases:
MySQLMariaDBPostgreSQLCockroachDBSQL ServerOracleSQLite 3TiDB
Скачать
Исходный код Casdoor размещен на GitHub: https://github.com/casdoor/casdoor. Код бэкенда на Go и код фронтенда на React содержатся в одном репозитории.
| Имя | Описание | Язык | Исходный код |
|---|---|---|---|
| Фронтенд | Веб-интерфейс пользователя для Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
| Бэкенд | RESTful API бэкенд для Casdoor | Golang + Beego + XORM | https://github.com/casdoor/casdoor |
Casdoor поддерживает Go Modules. Чтобы скачать код, просто клонируйте его с помощью git:
cd path/to/folder
git clone https://github.com/casdoor/casdoor
Конфигурация
Настройка базы данных
Casdoor поддерживает MySQL, MSSQL, SQLite3 и PostgreSQL. По умолчанию Casdoor использует MySQL.
MySQL
Casdoor хранит информацию о пользователях, узлах и темах в базе данных MySQL под названием casdoor. Если база данных не существует, ее необходимо создать вручную. Строка подключения к БД может быть указана здесь: https://github.com/casdoor/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
Перед запуском Casdoor, вам нужно вручную подготовить базу данных для PostgreSQL, так как Casdoor требует выбора базы данных при открытии Postgres с xorm.
Предполагая, что вы уже подготовили базу данных под названием casdoor, вы должны указать app.conf вот так:
driverName = postgres
dataSourceName = user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor
dbName = casdoor
dataSourceName имеет непустое значение dbName и также дублируйте имя базы данных для поля dbname, как показано в примере выше. :::CockroachDB
CockroachDB также может быть использован с драйвером PostgreSQL и имеет такую же конфигурацию, как и PostgreSQL.
driverName = postgres
dataSourceName = user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor serial_normalization=virtual_sequence
dbName = casdoor
SQLite3
Чтобы настроить SQLite3, вы должны указать app.conf вот так:
driverName = sqlite
dataSourceName = file:casdoor.db?cache=shared
dbName = casdoor
Через 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) |
Через переменные окружения
Все элементы конфигурации, определенные Casdoor в файле ini, упомянутом выше, могут быть настроены через переменные окружения, а также некоторые элементы конфигурации beego (httpport, appname).
Например, когда вы пытаетесь запустить Casdoor, вы можете использовать что-то вроде этого, чтобы передать конфигурацию через переменные окружения:
appname=casbin go run main.go
Кроме того, производные export также являются возможным методом. Имена переменных окружения должны точно соответствовать именам, которые вы хотите использовать в файле ini.
Примечание: конфигурации в переменных окружения могут переопределить конфигурации в файле ini.
Запуск
В настоящее время существует два метода запуска, и вы можете выбрать один в зависимости от вашей ситуации.
Режим разработки
Бэкенд
Бэкенд Go Casdoor по умолчанию работает на порту 8000. Вы можете запустить бэкенд Go с помощью следующей команды:
go run main.go
После успешного запуска сервера вы можете начать работу с фронтендом.
Фронтенд
Фронтенд Casdoor это очень классический проект Create-React-App (CRA). По умолчанию он работает на порту 7001. Используйте следующие команды для запуска фронтенда:
cd web
yarn install
yarn start
Посетите http://localhost:7001 в вашем браузере. Войдите в панель управления Casdoor с использованием учетной записи глобального администратора по умолчанию: built-in/admin.
admin
123
Режим Продакшн
Бэкенд
Соберите исполняемый код бэкенда Casdoor Go и запустите его.
Для Linux:
go build
./casdoor
Для Windows:
go build
casdoor.exe
Фронтенд
Соберите код фронтенда Casdoor в статические ресурсы (.html, .js, .css файлы):
cd web
yarn install
yarn build
Посетите http://localhost:8000 в вашем браузере. Войдите в панель управления Casdoor с использованием учетной записи глобального администратора по умолчанию: built-in/admin.
admin
123
Чтобы использовать другой порт, пожалуйста, отредактируйте conf/app.conf и измените httpport, затем перезапустите бэкенд Go.
В среде dev фронтенд запускается с помощью yarn run на порту 7001, так что если вы хотите перейти на страницу входа Casdoor, вам нужно установить ссылку Casdoor как http://localhost:7001.
В среде prod файлы фронтенда сначала собираются с помощью yarn build и предоставляются на порту 8000, так что если вы хотите перейти на страницу входа Casdoor, вам нужно установить ссылку Casdoor как https://your-casdoor-url.com:8000 (Если вы используете обратный прокси, вам нужно установить ссылку как ваш домен).
Пример нашего официального форума Casnode
Casnode использует Casdoor для аутентификации.
Когда мы тестируем Casnode в среде dev, мы устанавливаем serverUrl как http://localhost:7001, так что когда мы тестируем функциональность входа и регистрации с использованием Casdoor, это будет перенаправлять на localhost 7001, который является портом Casdoor.
И когда мы размещаем Casnode в среде prod, мы устанавливаем serverUrl как https://door.casdoor.com, так что пользователи могут входить или регистрироваться с использованием Casdoor.
