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

License: MIT Version

通过 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/                # 需求/设计/任务文档

License

MIT