快速上手
本页从master分支编译CasWAF,在一台机器上运行,并把一个Web应用放到它后面。大约需要十五分钟。
需要什么
- Go 1.20或更新版本
- 编译管理界面用的Node.js 20和Yarn 1
- MySQL 5.7或8
- 一个用来登录的Casdoor实例,并且有权限在里面添加应用
- 机器上的端口80、443和17000没有被占用
警告:CasWAF启动时会结束正在监听端口80、443和17000的进程,包括你还在运行的Nginx或Apache。请先把它们移到别的端口,再让CasWAF转发过去。
1. 获取代码
git clone https://github.com/caswaf/caswaf
cd caswaf2. 创建Casdoor应用
在Casdoor里为CasWAF添加一个应用,并给它加上这个回调地址:
http://localhost:17000/callback记下组织、应用名、Client ID和Client secret。用Casdoor登录解释了每一项设置以及谁能登录。
3. 配置CasWAF
编辑conf/app.conf:
driverName = mysql
dataSourceName = root:your-password@tcp(localhost:3306)/
dbName = caswaf
casdoorEndpoint = https://your-casdoor.example.com
clientId = <client ID>
clientSecret = <client secret>
casdoorOrganization = <organization>
casdoorApplication = <application>管理界面自己的登录按钮读的是web/src/Conf.js,它会编译进前端,所以在那里也填上相同的值:
export const AuthConfig = {
serverUrl: "https://your-casdoor.example.com",
clientId: "<client ID>",
appName: "<application>",
organizationName: "<organization>",
redirectPath: "/callback",
};4. 编译管理界面
cd web
yarn install
yarn build
cd ..5. 运行
CasWAF启动时会建表,但不会建数据库。可以先在MySQL里建一个空的caswaf数据库,或者第一次运行时加上-createDatabase=true:
go build -o caswaf .
sudo ./caswaf -createDatabase=true在Linux上,绑定端口80和443需要root或CAP_NET_BIND_SERVICE权限。要在仓库目录下运行:它从工作目录读取conf/app.conf和web/build。
注意:在Windows上,以及在Linux上以systemd服务运行时,CasWAF还会把自己注册为开机自启:Windows上是
Desktop\run下的一个<dbName>.bat,加上“启动”文件夹里的一个快捷方式;Linux上是一个systemd unit。见节点。
6. 登录
打开http://localhost:17000,通过Casdoor登录。登录后进入站点列表。
7. 把站点放到它后面
假设同一台机器上有一个应用监听端口3000,要通过app.example.com访问。
- 打开Sites,点Add,再点新行上的Edit。
- 把Domain设为
app.example.com。 - 把Port设为
3000,或者把Host设为http://127.0.0.1:3000。 - 在有证书之前把Mode设为
HTTP,把Status设为Active。 - 点Save。
网关几秒内就会生效。在DNS指向这台机器之前可以先这样试:
curl -H "Host: app.example.com" http://127.0.0.1/然后把DNS指向这台机器,添加证书(证书或Let's Encrypt),把Mode改成HTTPS Only,再挂上一些规则。