由于 Docker 基础镜像 现在为 nginx-unpriviledged,Docker 镜像现在监听 8080 端口,不再是 80。因此你需要更新端口映射,例如从 8080:80 改为 8080:8080。
如果你想要使用包含我 PR 及其他更新的最新版 it-tools,可以在 docker-compose 文件中使用我的镜像,直到主分支更新为止。
- GitHub Action 会在每次推送到此分支时触发 - 查看包
(感谢 gitmotion 提供的 README fork 范本)
非常感谢所有已经做出贡献的人们!
几乎包含 it-tools 所有 PR。
GitHub Container Registry:ghcr.io/sharevb/it-tools:latest
Docker Hub:sharevb/it-tools:latest
一些工具(如 PGP 加密)依赖于 WebCrypto API,该 API 仅在 HTTPS/SSL 环境下可用。
因此,即使在内部安装中,你也可以使用 Let's Encrypt 通过 DNS 质询启用 HTTPS。
关于 DNS 质询的一些文档:
- https://medium.com/@life-is-short-so-enjoy-it/homelab-nginx-proxy-manager-setup-ssl-certificate-with-domain-name-in-cloudflare-dns-732af64ddc0b
- https://doc.traefik.io/traefik/user-guides/docker-compose/acme-dns/
- https://medium.com/@svenvanginkel/traefik-letsencrypt-dns01-challenge-with-ovhcloud-52f2a2c6d08a
services:
it-tools:
container_name: it-tools
image: sharevb/it-tools:latest
pull_policy: always
restart: unless-stopped
ports:
- 8080:8080你可以通过挂载 home.custom.md 到 /usr/share/nginx/html,在主页添加自定义内容。
你也可以通过挂载 tools-filter.json 到 /usr/share/nginx/html,过滤可用工具。内容示例:
{
"excludeCategoryFilterRegex": "",
"includeCategoryFilterRegex": "",
"excludeToolsFilterRegex": "",
"includeToolsFilterRegex": ""
}Category 匹配英文分类名;Tools 匹配工具路径/URL。
详见 docker-tools-filter-and-home-content
docker build -t it-tools-fr --build-arg VITE_LANGUAGE=fr .
docker run -d --name it-tools-fr --restart unless-stopped -p 8080:8080 it-tools-fr
参考 https://github.com/sharevb/it-tools/pull/461#issuecomment-1602506049 和 https://github.com/CorentinTh/it-tools/pull/461:
docker build -t it-tools --build-arg BASE_URL="/my-folder/" .
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 it-tools
然后访问 http://localhost:8080 会看到空白页,但在 DevTools 的 Network 标签页会发现应用尝试从 /my-folder/... 加载资源。
因此你需要在前面加一层服务器,如 Nginx Proxy Manager、Traefik、caddy 等,并设置 /my-folder 的反向代理。
对于 /it-tools/ 子文件夹,可以使用 baseurl-it-tools 标签。
参见 docker-compose.yml 和 nginx.conf 示例,此镜像需要前置反向代理,如 Nginx Proxy Manager、Traefik、caddy 等。
设置 /it-tools/ 的反向代理后,即可通过服务器的 /it-tools/ 访问 it-tools。
运行示例:
git clone https://github.com/sharevb/it-tools
cd it-tools/docker-subfolder-sample/
docker compose up然后访问 http://localhost:8080/it-tools/
BASE_URL="/it-tools/" pnpm build- 将生成的
dist文件夹重命名为it-tools,并部署到https://your-domain.com/it-tools
- 在你的 fork 仓库中启用 GitHub Pages 构建和部署选项,路径为 Settings > Pages,然后选择 GitHub Actions 作为源。
- 将以下 GitHub action 添加到你的仓库:https://github.com/sharevb/it-tools/.github/workflows/sharevb-github-pages-publish.yml
本地安装需先安装:python3 make g++
| Docker 镜像 | 本地安装 |
|---|---|
GitHub Container Registry: ghcr.io/sharevb/it-tools:latestDocker Hub: sharevb/it-tools:latest |
sudo apt-get install python3 make g++ && git clone -b chore/all-my-stuffs https://github.com/sharevb/it-tools.git && cd it-tools/ && pnpm i && pnpm dev |
| 替换你当前的镜像为此镜像 | 复制粘贴一键安装命令(来自 github 仓库) |
| 可能需要清除缓存并强制刷新以加载新功能 | 首次安装依赖包可能需要一些时间,请耐心等待 |
Details
为开发者和 IT 从业者提供实用工具。点此体验!。
请查看 issues 了解待实现的功能。
有新工具想法?欢迎提交 功能请求!
适合你的 homelab 的自托管方案
Docker Hub 镜像:
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 corentinth/it-tools:latestGitHub Packages 镜像:
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 ghcr.io/corentinth/it-tools:latest其他方案:
建议使用 VSCode 并安装以下扩展:
- Volar(并禁用 Vetur)
- TypeScript Vue Plugin (Volar)
- ESLint
- i18n Ally
推荐设置如下:
{
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"i18n-ally.localesPaths": ["locales", "src/tools/*/locales"],
"i18n-ally.keystyle": "nested"
}TypeScript 默认无法处理 .vue 导入的类型信息,因此需用 vue-tsc 替代 tsc 进行类型检查。编辑器中需安装 TypeScript Vue Plugin (Volar) 以支持 .vue 类型。
如果独立 TypeScript 插件速度不够快,Volar 还实现了更高效的 Take Over Mode。启用方法:
- 禁用内置 TypeScript 扩展
- 在命令面板运行
Extensions: Show Built-in Extensions - 找到
TypeScript and JavaScript Language Features,右键选择Disable (Workspace)
- 在命令面板运行
- 在命令面板运行
Developer: Reload Window重载窗口
pnpm installpnpm devpnpm build使用 Vitest 运行单元测试
pnpm test使用 ESLint 进行代码检查
pnpm lint可通过脚本生成新工具模板,命令如下:
pnpm run script:create:tool my-tool-name会在 src/tools 下创建对应目录和文件,并自动导入到 src/tools/index.ts。你只需将其添加到合适的分类并开发即可。
感谢所有已参与贡献的朋友!
由 Corentin Thomasset ❤️ 编写。
本项目通过 vercel.com 持续部署。
贡献者图由 contrib.rocks 生成。
本项目采用 GNU GPLv3 协议。