การติดตั้งเซิร์ฟเวอร์
ความต้องการ
ระบบปฏิบัติการ
รองรับระบบปฏิบัติการหลักทั้งหมด รวมถึง 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 อยู่ในที่เก็บเดียวกัน
| ชื่อ | คำอธิบาย | ภาษา | ซอร์สโค้ด |
|---|---|---|---|
| ฟรอนต์เอนด์ | UI ฟรอนต์เอนด์เว็บสำหรับ Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
| แบ็กเอนด์ | แบ็กเอนด์ API แบบ RESTful สำหรับ 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
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
serial_normalization=virtual_sequence ใน dataSourceName ตามที่แสดงในตัวอย่างด้านบน มิฉะนั้น คุณจะได้รับข้อผิดพลาดเกี่ยวกับฐานข้อมูลที่มีอยู่แล้วเมื่อบริการเริ่มต้นหรือรีสตาร์ท โปรดทราบว่าสิ่งนี้ต้องเพิ่มก่อนที่จะสร้างฐานข้อมูล :::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 files):
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 (หากคุณใช้ reverse proxy คุณต้องตั้งค่าลิงก์เป็น โดเมนของคุณ)
ยกตัวอย่างเว็บบอร์ดอย่างเป็นทางการของเรา Casnode
Casnode ใช้ Casdoor เพื่อจัดการการตรวจสอบสิทธิ์
เมื่อเรากำลังทดสอบ Casnode ในสภาพแวดล้อม dev เราตั้งค่า serverUrl เป็น http://localhost:7001 ดังนั้นเมื่อเราทดสอบฟังก์ชันล็อกอินและสมัครใช้งานผ่าน Casdoor มันจะไปที่ localhost 7001 ซึ่งเป็นพอร์ตของ Casdoor
และเมื่อเรานำ Casnode ไปใช้ในสภาพแวดล้อม prod เราตั้งค่า serverUrl เป็น https://door.casdoor.com ดังนั้นผู้ใช้สามารถล็อกอินหรือสมัครใช้งานผ่าน Casdoor
