Files in the top-level directory from the latest check-in
- .env.example
- app
- config
- db
- docker
- docs
- public
- spec
- src
- AGENTS.md
- Caddyfile
- CHANGELOG.md
- docker-compose.yml
- Dockerfile
- INSTALL.md
- LICENSE
- README.md
- shard.lock
- shard.yml
Fossil-Manager (FOS-Anvil)
通过 Web 界面管理 Fossil 仓库的控制面板,替代人工 SSH 登录操作。
本仓库是 Fossil-Manager 的 Crystal + Amber Framework V2 + SQLite 实现,功能与界面与原项目一致。
功能
- 仓库创建:输入仓库名称、管理员账号密码,自动执行
fossil init - 管理员仪表盘:查看所有仓库的名称、文件大小、管理员、Timeline 条目数、最后更新时间
- 公开仓库列表:Bitbucket 风格扁平表格布局,服务端分页(每页 20 条)、按名称搜索、按分组筛选
- 远程仓库聚合:配置远程 Fossil Server,自动拉取并展示远程仓库列表
- 克隆远程仓库:仪表盘一键
fossil clone远程仓库到本地 - 镜像仓库:编辑页配置镜像地址与同步间隔,后台定时单向拉取与对方保持一致
- 推送到 Git:配置 Git 远程地址后,新 commit 自动增量
fossil git export推送(仅单向) - 外链仓库:分类管理外部 Fossil Web 链接,公开页分组展示
- 用户设置:支持修改用户名和密码
- 站点自定义:站点标题、ICP 备案号、公安网备号均可通过环境变量或设置页配置
- Docker 自动化:选 Timeline 构建镜像(本机或远程 Docker),日志与产物可下载;每任务最多保留 5 个版本;SSH 服务器档案可复用
- 安全防护:参数校验防命令注入,Argon2 密码哈希,Session + Cookie 认证
技术栈
- Crystal + Amber Framework 2.0.0-beta.5(Web 框架,ECR 模板)
- SQLite + crystal-sqlite3(数据库,幂等迁移,无 Grant 业务表)
- libargon2(密码哈希,系统库 + 自写 FFI)
- HTTP::Client(远程仓库 HTTP 请求,标准库)
快速开始
# 1. 安装依赖(需系统已装 libargon2)
cp .env.example .env # 编辑 .env 填写配置
shards install
# 2. 运行
crystal run src/FOS-Anvil.cr
# 3. 访问
open http://localhost:3000
首次启动进入 /setup 创建超级管理员。登录后请妥善保管密码。
详细安装步骤、Docker 部署、反向代理配置请参考 INSTALL.md
项目结构
FOS-Anvil/
├── shard.yml # 依赖(amber 2.0.0-beta.5、sqlite3)
├── .env.example
├── src/
│ ├── FOS-Anvil.cr # 入口
│ ├── app.cr # 加载配置、迁移、调度器
│ ├── app_config.cr # 环境变量(含自实现 .env)
│ ├── db.cr # SQLite 连接与幂等迁移
│ ├── controllers/ # Amber 控制器
│ ├── models/ # 查询模块
│ ├── services/ # fossil 封装 / 统计 / 聚合 / 扫描 / 密码
│ ├── scheduler/ # 后台调度(镜像同步 + Git 导出)
│ └── views/ # ECR 模板
├── public/static/ # CSS 与备案图标
├── config/ # Amber 环境与路由
├── docker/ # supervisord 与 fossil server
└── docs/