Files in the top-level directory in any check-in
- .dockerignore
- .env.example
- .fossil-settings
- config
- docker
- docs
- migrations
- scripts
- src
- static
- templates
- views
- AGENTS.md
- Caddyfile
- Cargo.lock
- Cargo.toml
- CHANGELOG.md
- docker-compose.yml
- Dockerfile
- fossil-manager-linux-amd64
- fossil_manager.db
- INSTALL.md
- LICENSE
- README.md
- shard.lock
- shard.yml
Fossil-Manager
通过 Web 界面管理 Fossil 仓库的控制面板,替代人工 SSH 登录操作。
功能
- 仓库创建:输入仓库名称、管理员账号密码,自动执行
fossil init - 管理员仪表盘:查看所有仓库的名称、文件大小、管理员、Timeline 条目数、最后更新时间
- 公开仓库列表:Bitbucket 风格扁平表格布局,服务端分页(每页 20 条)、按名称搜索、按分组筛选
- 远程仓库聚合:配置远程 Fossil Server,自动拉取并展示远程仓库列表
- 克隆远程仓库:仪表盘一键
fossil clone远程仓库到本地 - 镜像仓库:编辑页配置镜像地址与同步间隔,后台定时单向拉取与对方保持一致
- 推送到 Git:配置 Git 远程地址后,新 commit 自动增量
fossil git export推送(仅单向) - 用户设置:支持修改用户名和密码
- 站点自定义:站点标题、ICP 备案号、公安网备号均可通过环境变量配置
- 安全防护:参数校验防命令注入,Argon2 密码哈希,Session + Cookie 认证
技术栈
- Crystal + Lucky (Web 框架)
- SQLite + crystal-sqlite3 (数据库)
- Crinja (服务端模板渲染)
- libargon2 (密码哈希,系统库 + 自写 FFI)
- HTTP::Client (远程仓库 HTTP 请求,标准库)
快速开始
# 1. 安装依赖(需系统已装 libargon2)
cp .env.example .env # 编辑 .env 填写配置
shards install
# 2. 运行
crystal run src/fossil_manager.cr
# 3. 访问
open http://localhost:3000
首次启动自动创建默认管理员账号(见 .env 配置),登录后请立即修改密码。
详细安装步骤、Docker 部署、反向代理配置请参考 INSTALL.md
项目结构
Fossil-Manager/
├── shard.yml # 依赖配置
├── .env # 环境变量配置
├── LICENSE # MIT 许可证
├── CHANGELOG.md # 版本变更记录
├── INSTALL.md # 详细安装指南
├── AGENTS.md # AI 助手约定
├── src/
│ ├── fossil_manager.cr # 入口
│ ├── config.cr # 配置加载(含自实现 .env 加载)
│ ├── db.cr # 数据库连接与幂等迁移
│ ├── actions/ # 路由 Action(认证/仓库/公开/设置)
│ ├── models/ # 数据模型
│ ├── services/ # fossil 封装/统计/聚合/扫描/密码
│ ├── scheduler/ # 后台调度(镜像同步 + Git 导出)
│ └── views/ # Crinja HTML 模板
├── views/ # Crinja HTML 模板
├── static/ # 静态资源
├── docker/ # Docker 构建与 supervisord 配置
└── docs/ # 需求/设计/任务文档