Dillo 浏览器作为一个经典的轻量级图形化网页浏览器,以其极小的体积和高效性能著称,源代码仅约 600 KB,静态二进制约 980 KB,使用 C/C++ 编写并基于 FLTK GUI 库构建。它支持多平台运行,包括 Linux、BSD、MacOS 和 Windows,支持 HTTP/HTTPS/FTP 等协议,并通过插件扩展如 Gemini、Gopher 等协议。该项目强调降低网页访问门槛、支持老旧设备和慢速连接,同时注重个人隐私与软件效率。
然而,许多开源项目如 Dillo 最初托管在 GitHub 上,虽然便利但存在供应商锁定风险:平台政策变动可能中断访问,数据隐私依赖第三方,且免费服务随时可能收费或限流。对于追求最小化开发的 Dillo 团队,自托管 Git 仓库是理想方案,能实现完全平台独立、避免 vendor lock-in,并持续最小化开发流程。自托管还能自定义权限、集成本地 CI/CD,并降低长期维护成本。
自托管 Git 的核心优势
选择自托管 Git 服务如 Gitea 或 Forgejo(Gitea 的社区 fork),这些工具轻量级、易部署,支持完整 Git 功能包括代码审查、Issue 跟踪、Wiki 和 CI/CD。相比 GitHub,它们资源占用低:Gitea 单实例只需几十 MB 内存,适合 Raspberry Pi 等嵌入式设备,与 Dillo 的 “高效” 理念高度契合。
证据显示,Dillo 项目已部分转向自托管:其主仓库位于 https://git.dillo-browser.org/dillo/,而 GitHub 仅用于 Issue 跟踪。这证明迁移可行,且能维持开发连续性。自托管避免了 GitHub 的潜在中断,如 2024 年开源项目资金争议中暴露的依赖风险。
迁移前的准备清单
-
备份现有仓库:克隆 Dillo GitHub 仓库(https://github.com/dillo-browser/dillo)。
git clone --mirror https://github.com/dillo-browser/dillo.git dillo-backup.git cd dillo-backup.git git bundle create ../dillo-full.bundle --all这生成完整 bundle 文件,包含所有分支、标签和历史。
-
选择自托管工具:
工具 优势 资源需求 推荐场景 Gitea 功能丰富、API 完整、易迁移 CPU: 1 核,RAM: 256MB 团队协作 Forgejo 纯社区驱动、轻量、安全优先 CPU: 1 核,RAM: 128MB 单人 / 最小化 优先 Forgejo,其设计聚焦 “轻量软件锻造”,与 Dillo 匹配。
-
服务器环境:
- OS: Debian/Ubuntu(最小化安装)。
- Docker 部署(推荐,避免依赖冲突):
docker run -d --name forgejo -p 3000:3000 -p 2222:22 -v /srv/forgejo:/data codeberg.org/forgejo/forgejo:1.21 rootless - 域名 / SSL:用 Caddy 或 Nginx 反代,Certbot 自动 HTTPS。
- 数据库:SQLite(默认,轻量);生产用 PostgreSQL。
详细迁移步骤
-
安装并初始化 Forgejo/Gitea:
- 访问 http://your-server:3000,完成安装向导:设置站点标题为 “Dillo Git”、管理员账号。
- 配置 app.ini(/data/gitea/conf/app.ini):
重启服务:[server] DOMAIN = git.dillo-browser.org SSH_PORT = 2222 [security] INSTALL_LOCK = true SECRET_KEY = your-32-char-secret [database] DB_TYPE = sqlite3 PATH = /data/gitea/gitea.dbdocker restart forgejo。
-
推送裸仓库:
- 在 Forgejo Web 界面创建新仓库 “Dillo”,选择 “导入现有仓库”。
- 或命令行:
配置 SSH 密钥:生成git clone --bare dillo-backup.git cd dillo-backup.git git push --mirror git@your-server:2222/dillo-browser/dillo.gitssh-keygen -t ed25519 -C "dillo-dev",公钥加到 Forgejo 用户设置。
-
迁移 Issue/PR/Wiki(关键,避免丢失元数据):
- Forgejo/Gitea 支持内置迁移:Web 界面 “新建仓库”→“从 GitHub 迁移”,输入 GitHub clone URL 和 Personal Access Token(repo 权限)。
- 参数:启用 “Wiki”、“Issues”、“Pull Requests”、“Milestones”、“Labels”、“Releases”。
- 超时阈值:若仓库大,设
MIGRATE_TIMEOUT=3600环境变量。 - 脚本自动化(Python + API):
import requests headers = {'Authorization': 'token YOUR_FORGEJO_TOKEN'} data = { 'clone_addr': 'https://github.com/dillo-browser/dillo.git', 'uid': 1, # admin user ID 'repo_name': 'dillo', 'private': False, 'wiki': True, 'issues': True, 'pull_requests': True } requests.post('http://your-server:3000/api/v1/repos/migrate', json=data, headers=headers)
-
插件与 CI 配置:
- Dillo 插件仓库(如 gemini://)一并迁移。
- Actions CI:Forgejo 内置,配置 .forgejo/workflows/build.yml 测试构建:
阈值:超时 30min,内存限 512MB。jobs: build: runs-on: docker steps: - uses: actions/checkout@v4 - run: ./autogen.sh && ./configure && make
-
权限与访问控制:
- 团队:创建组织 “Dillo”,协作员读写,维护者合并 PR。
- Webhooks:集成 IRC/Mastodon(Dillo 已用),URL: https://fosstodon.org/@dillo。
- 备份策略:cron 每日
gitea dump -c /data/gitea/conf/app.ini,存 S3 或本地。
风险规避与监控参数
- 风险:迁移中断(网络 /token 失效)→ 分步执行,先代码后元数据;测试环境验证。
- 回滚:保留 GitHub 镜像,DNS TTL 设 300s 快速切换。
- 监控:
指标 阈值 工具 仓库大小 <500MB du -sh /data/git 响应时间 <200ms Prometheus + Grafana 磁盘使用 80% 告警 df -h Uptime 99.9% Uptime Kuma
生产阈值:PostgreSQL 连接池 50,缓存 Redis(可选)。
迁移后,Dillo 开发可持续:插件开发者推送 PR,本地构建测试,低资源服务器年成本 <100 元。Dillo 官网已指向自托管 Git,此举强化其 “高效独立” 哲学。
资料来源:
- Dillo 官网:https://dillo-browser.org (项目介绍与 Git 链接)。
- Forgejo 文档:https://forgejo.org (迁移指南)。
(正文约 1250 字)