65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
# gitea-pages
|
||
|
||
> 新一代 Gitea Pages,替换之前的 `caddy-gitea-proxy`
|
||
|
||
**此项目是 Dragon's Zone HomeLab 的一部分**
|
||
|
||
本项目致力于提供高性能、安全且可扩展的 Gitea Pages 服务。
|
||
|
||
**注意**:此项目已经被完全重构,不兼容 `0.0.1` 版本升级
|
||
|
||
## 特性
|
||
|
||
- [x] **高性能**: 采用 JS 预编译缓存和高效的异步 Promise 处理机制。
|
||
- [x] **安全**: 内置模板和文件访问的路径穿越保护。
|
||
- [x] **内容缓存**: 多级元数据和二进制内容缓存。
|
||
- [x] **CNAME**: 支持自定义域名。
|
||
- [x] **模板引擎**: 安全的模板渲染,支持 `load` 动态加载。
|
||
- [x] **可编程**: 使用 JavaScript (Goja) 编写自定义路由逻辑。
|
||
- [x] **反向代理**: 支持将请求代理到后端服务。
|
||
|
||
> [!WARNING]
|
||
> **安全提示**: 本项目设计用于自托管或私有环境。它不对 CNAME 别名进行域名所有权验证。在多用户环境中,用户可能会通过在 `.pages.yaml` 中声明他人域名来实施“劫持”。
|
||
|
||
|
||
## Get Started
|
||
|
||
安装 `go1.25` 或更高版本,同时安装 `Make` 工具 ,然后执行如下命令:
|
||
|
||
```bash
|
||
make gitea-pages
|
||
```
|
||
|
||
之后可使用如下命令启动
|
||
|
||
```bash
|
||
./gitea-pages -conf config.yaml
|
||
```
|
||
|
||
具体配置可查看 [`config.yaml`](./config.yaml)。
|
||
|
||
### Page Config
|
||
|
||
在项目的 `gh-pages` 分支创建 `.pages.yaml`,填入如下内容
|
||
|
||
```yaml
|
||
alias: # CNAME
|
||
- "example.com"
|
||
- "example2.com"
|
||
routes:
|
||
- path: "**"
|
||
js:
|
||
exec: index.js
|
||
```
|
||
|
||
## TODO
|
||
|
||
- [ ] 支持跨域
|
||
- [ ] 支持自定义缓存策略 (http cache-control)
|
||
- [ ] OAuth2 授权访问私有页面
|
||
- [ ] ~~http01 自动签发证书~~: 交由 Caddy 完成
|
||
- [ ] ~~Web 钩子触发更新~~: 对实时性需求不大
|
||
|
||
## LICENSE
|
||
|
||
此项目使用 [Apache-2.0](./LICENSE) |