# it-tools
**Repository Path**: binghe021/it-tools
## Basic Information
- **Project Name**: it-tools
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: chore/all-my-stuffs
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-05
- **Last Updated**: 2026-01-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## BREAKING CHANGE for Container Image
Since the *base image* is now `nginx-unpriviledged` the container will now listen to port **8080** and not 80. So you need to update your port mapping, i.e. from `8080:80` to `8080:8080`.
If the container needs to listen to IPv6, it needs to be enabled: https://serverfault.com/questions/1147296/how-to-enable-ipv6-on-ubuntu-20-04. Alternatively, you can mount your own `nginx.conf` own using docker option `-v "./nginx.conf:/etc/nginx/conf.d/nginx.conf"` (with `listen [::]:8080;` removed)
## PR Welcome
Especially for UI improvements and translation. And for anything else.
Want to support this fork of IT Tools: [Buy me a coffee](https://www.buymeacoffee.com/sharevb)
## HTTPS is recommended
Some tools like PGP encryption rely on WebCrypto API that is only available in HTTPS/SSL. Also, if you want to use PWA, HTTPS is required.
So even on internal installations, you should enable HTTPS using Let's Encrypt using DNS Challenge
Some docs about DNS Challenge:
- 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
Related doc for CyberPanel: https://community.cyberpanel.net/t/reverse-proxy-traffic-to-docker-container-on-cyberpanel/30644
### Check out these change here: or
You can use my image in your docker-compose/quadlet file if you want an up-to-date version of it-tools (with my PR and some of others) until the main branch has been updated.
- github action triggers on every push to this branch - [view package here](https://github.com/sharevb/it-tools/pkgs/container/it-tools)
(Thanks to [gitmotion](https://github.com/gitmotion/it-tools) for this model of README fork)
## Contributors
Big thanks to all the people who have already contributed!
[](https://github.com/sharevb/it-tools/graphs/contributors)
## Development under Windows
Use of WSL2 is recommended to develop using VSCode on Windows. Direct development is tricky (because of some dependencies)
## Added features
Almost [all tools PR of it-tools](https://github.com/sharevb/it-tools/pulls).
## Container images
[GitHub Container Registry](https://github.com/sharevb/it-tools/pkgs/container/it-tools): `ghcr.io/sharevb/it-tools:latest`
[Docker Hub](https://hub.docker.com/r/sharevb/it-tools): `sharevb/it-tools:latest`
## Use in Docker Compose file
```yml
services:
it-tools:
container_name: it-tools
image: sharevb/it-tools:latest
pull_policy: always
restart: unless-stopped
ports:
- 8080:8080
```
## Use in Podman Quadlet file
```
[Unit]
Description=IT Tools container
After=network-online.target
[Container]
AutoUpdate=registry
Image=ghcr.io/sharevb/it-tools:latest
PublishPort=8080:8080
Label=io.containers.autoupdate=registry
[Install]
WantedBy=multi-user.target default.target
[Service]
Restart=always
```
## Filter tools and add home custom content
You can add custom content in Home page by mounting a `home.custom.md` in `/usr/share/nginx/html`.
You can filter available tools by mounting `tools-filter.json` in `/usr/share/nginx/html`. It can contains the following filtering regex:
```json
{
"excludeCategoryFilterRegex": "",
"includeCategoryFilterRegex": "",
"excludeToolsFilterRegex": "",
"includeToolsFilterRegex": ""
}
```
Category matches on category (English) names ; Tools matches on tools path/url.
See (docker-tools-filter-and-home-content)[https://github.com/sharevb/it-tools]
## Add custom external tools
You can add custom external tools (href or markdownContent) by mounting a `external-tools.json` in `/usr/share/nginx/html` with the following structure:
```json
[
{
"name": "GitHub",
"path": "/github",
"description": "Link to Github",
"keywords": ["github"],
"category": "Links",
"href": "https://github.com"
},
{
"name": "Some text",
"path": "/some-text",
"description": "Some description",
"keywords": ["some"],
"category": "Links",
"markdownContent": "Some useful **text**\n\nin *markdown*"
}
]
```
See (docker-tools-filter-and-home-content)[https://github.com/sharevb/it-tools]
## Setting default tools parameters / default UI language at runtime
You can set default tool parameters by mounting a `tools-setting.json` in `/usr/share/nginx/html`.
It is a two level json, with the first level being for `tool name` and the second level for `parameter name`:
```json
{
"regex-tester": {
"multi": true,
"regex": "some regex",
"global": false
}
}
```
You can find `tool name` and `parameter name` in the tools source code `src/tools` subfolder :
- example pattern for `const global = useQueryParamOrStorage({ storageName: 'regex-tester:g', name: 'global', defaultValue: true });`:
```json
{
"regex-tester": {
"global": false
}
}
```
- example pattern for `const value = useQueryParam({ tool: 'barcode-gen', name: 'text', defaultValue: '123456789' });`:
```json
{
"barcode-gen": {
"text": "4356"
}
}
```
- example pattern for `const width = useITStorage('ascii-text-drawer:width', 80);`:
```json
{
"ascii-text-drawer": {
"width": 80
}
}
```
To define the default UI language, add a `default_locale` key to json:
```json
{
"default_locale": "fr"
}
```
## To build using a custom default language:
```
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
```
## Build container image for a custom subfolder
According to https://github.com/sharevb/it-tools/pull/461#issuecomment-1602506049 and 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
```
Then if you go to `http://localhost:8080` you'll get a blank page, but opening the DevTools (& refreshing) you'll notice in the Network tab that the app is trying to fetch assets from `/my-folder/...`
So you would need to put another server in front of it, like [Nginx Proxy Manager](https://nginxproxymanager.com/), [Traefik](https://traefik.io/traefik/), [caddy](https://caddyserver.com/) etc. Then setup a reverse proxy pass using `/my-folder`
## Docker compose for hosting in a `/it-tools/` subfolder
For `/it-tools/` subfolder, you can use `baseurl-it-tools` tag.
See [sample of docker-compose.yml and nginx.conf](https://github.com/sharevb/it-tools/tree/chore/all-my-stuffs/docker-subfolder-sample), this docker image needs to have another reverse proxy in front of it, like [Nginx Proxy Manager](https://nginxproxymanager.com/), [Traefik](https://traefik.io/traefik/), [caddy](https://caddyserver.com/) etc.
Setup a reverse proxy pass using `/it-tools/`. And you should be able to access it-tools in `/it-tools/` of your server.
An example of nginx reverse proxy configuration is available at: https://github.com/sharevb/it-tools/tree/chore/all-my-stuffs/docker-subfolder-sample
To run the sample:
```bash
git clone https://github.com/sharevb/it-tools
cd it-tools/docker-subfolder-sample/
docker compose up
```
Then navigate to http://localhost:8080/it-tools/
## To build using a custom folder:
1. `BASE_URL="/it-tools/" pnpm build`
2. Rename the generated `dist` folder to `it-tools` and serve on `https://your-domain.com/it-tools`
## To build for GitHub Pages:
1. Enable GitHub Pages build and deployment option in your fork, under **Settings** > **Pages** and select **GitHub Actions** as the source
2. Add the following GitHub action to your repo: https://github.com/sharevb/it-tools/tree/chore/all-my-stuffs/.github/workflows/sharevb-github-pages-publish.yml
## To add authentication
Assuming you're already hosting it-tools behind a reverse proxy, you can configure forward-auth and enforce authentication from the reverse proxy
* [Official guides](https://docs.goauthentik.io/docs/add-secure-apps/providers/proxy/server_nginx) with nginx. Guides with other reverse proxy setups are available
* [Step-by-step setup guide with nginx-proxy-manager](https://geekscircuit.com/set-up-authentik-sso-with-nginx-proxy-manager/)
(thanks @jogerj)
## Deploy as LXC container
In Proxmox VE, you can use docker image directly:
```bash
sudo lxc-create -n sharevb-it-tools -t oci -- --url docker://ghcr.io/sharevb/it-tools:latest
```
## Contribute
### Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) with the following extensions:
- [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur)
- [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally)
with the following settings:
```json
{
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"i18n-ally.localesPaths": ["locales", "src/tools/*/locales"],
"i18n-ally.keystyle": "nested"
}
```
### Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
1. Disable the built-in TypeScript Extension
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
### Project Setup
```sh
pnpm install --ignore-scripts
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Run Unit Tests with [Vitest](https://vitest.dev/)
```sh
pnpm test
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```
### Create a new tool
To create a new tool, there is a script that generate the boilerplate of the new tool, simply run:
```sh
pnpm run script:create:tool my-tool-name
```
It will create a directory in `src/tools` with the correct files, and a the import in `src/tools/index.ts`. You will just need to add the imported tool in the proper category and develop the tool.
## Installation methods
Local installation required installing first: `python3 make g++`
| Container Image | Local Installation |
|-----------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
| GitHub Container Registry: `ghcr.io/sharevb/it-tools:latest` Docker 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 --ignore-scripts && pnpm dev` |
| replace your current image with this image | copy & paste oneliner (from github repo) |
| You may need to clear cache and hard reload to get new features loading | Installing packages for the first time may take some time; please wait until it finishes |
Useful tools for developer and people working in IT. [Have a look !](https://sharevb-it-tools.vercel.app).
## Functionalities and roadmap
Please check the [issues](https://github.com/sharevb/it-tools/issues) to see if some feature listed to be implemented.
You have an idea of a tool? Submit a [feature request](https://github.com/sharevb/it-tools/issues/new/choose)!
## Self host
Self host solutions for your homelab
**From docker hub:**
```sh
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 corentinth/it-tools:latest
```
**From github packages:**
```sh
docker run -d --name it-tools --restart unless-stopped -p 8080:8080 ghcr.io/corentinth/it-tools:latest
```
**Other solutions:**
- [Cloudron](https://www.cloudron.io/store/tech.ittools.cloudron.html)
- [Tipi](https://www.runtipi.io/docs/apps-available)
- [Unraid](https://unraid.net/community/apps?q=it-tools)
- [YunoHost](https://apps.yunohost.org/app/it-tools)
## Contributors
Big thanks to all the people who have already contributed!
[](https://github.com/sharevb/it-tools/graphs/contributors)
## Credits
Coded with ❤️ by [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=readme).
This project is continuously deployed using [vercel.com](https://vercel.com).
Contributor graph is generated using [contrib.rocks](https://contrib.rocks/preview?repo=corentinth/it-tools).
## License
This project is under the [GNU GPLv3](LICENSE).