{"id":19952705,"url":"https://github.com/tob1as/docker-tools","last_synced_at":"2025-07-17T00:06:10.456Z","repository":{"id":82691475,"uuid":"355321591","full_name":"Tob1as/docker-tools","owner":"Tob1as","description":"Tools collection - Docker Images for amd64, arm64, arm (Raspberry Pi)","archived":false,"fork":false,"pushed_at":"2025-06-06T22:38:33.000Z","size":190,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T23:28:43.028Z","etag":null,"topics":["autossh","azcopy","certificate-authority","certificates","database-tools","dnsmasq","docker","easy-rsa","easyrsa","figlet","htpasswd","keepalived","kubernetes","mqtt","mqtt-client","prometheus-exporter","squid","static-build","static-library","toolbox"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/tobi312/tools","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tob1as.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-06T20:29:38.000Z","updated_at":"2025-06-06T22:38:37.000Z","dependencies_parsed_at":"2024-03-16T19:57:51.571Z","dependency_job_id":"6eeb3e30-9ef5-44a1-95f4-283082f838d4","html_url":"https://github.com/Tob1as/docker-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Tob1as/docker-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tob1as%2Fdocker-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tob1as%2Fdocker-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tob1as%2Fdocker-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tob1as%2Fdocker-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tob1as","download_url":"https://codeload.github.com/Tob1as/docker-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tob1as%2Fdocker-tools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265553225,"owners_count":23787036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autossh","azcopy","certificate-authority","certificates","database-tools","dnsmasq","docker","easy-rsa","easyrsa","figlet","htpasswd","keepalived","kubernetes","mqtt","mqtt-client","prometheus-exporter","squid","static-build","static-library","toolbox"],"created_at":"2024-11-13T01:14:08.950Z","updated_at":"2025-07-17T00:06:10.371Z","avatar_url":"https://github.com/Tob1as.png","language":"Dockerfile","readme":"[GITHUB](https://github.com/Tob1as/docker-tools)  \n  \n# Tools\n\nTools collection\n\nAll Images are Multiarch (AMD64, ARM64 and ARM) builds and in the following Container Registries:\n* [`ghcr.io/tob1as/docker-tools:\u003cTAG\u003e`](https://github.com/Tob1as/docker-tools/pkgs/container/tools)\n* [`tobi312/tools:\u003cTAG\u003e`](https://hub.docker.com/r/tobi312/tools)\n* [`quay.io/tobi312/tools:\u003cTAG\u003e`](https://quay.io/repository/tobi312/tools)\n\nTools/Tags:\n* [`autossh`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/autossh.yml)\n* [`azcopy`](#)\n* [`c-mqtt-forwarder`](#)\n* [`dnsmasq`](#dnsmasq)\n* [`easy-rsa`](#easy-rsa)\n* [`figlet`](#figlet)\n* [`htpasswd`](#htpasswd)\n* [`keepalived`](#)\n* [`kiwiirc`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/ircd.yml#L62)\n* [`mqtt-board`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/mqtt-board.yml)\n* [`mqtt-client`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/mqtt-client.yml)\n* [`mqtt-forwarder`](#)\n* [`postgres-exporter`](#)\n* [`prometheus-mosquitto-exporter`](#)\n* [`prometheus-mqtt-transport`](#)\n* [`proxyscotch`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/hoppscotch.yml)\n* [`squid`](#)\n* [`static-curl`](#)\n* [`static-jq`](#)\n* [`static-xq`](#)\n* [`static-yq`](#)\n* [`static-kubectl`](#)\n* [`static-helm`](#)\n* NGINX (static):\n  * [`static-nginx`](#)\n  * [`static-nginx-unprivileged`](#)\n* [`static-ssh-tools`](#)\n  * ssh, sftp, scp, ssh-keygen\n  * sshpass\n  * rsync\n  * autossh\n* ToolBox:\n  * [`toolbox`](#toolbox)\n  * [`toolbox-extended`](#toolbox)\n* Deprecated:\n  * [`adminer`](#)\n  * [`adminerevo`](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_docker-compose/adminerevo.yml)\n  * [`pgadmin4`](https://www.pgadmin.org/download/pgadmin-4-container/) - Use now offical Docker build!\n  * [`irc-exporter`](https://github.com/dgl/ircd_exporter) - Use now offical Docker build!\n  * [`vwmetrics`](https://github.com/Tricked-dev/vwmetrics) - Use now offical Docker build!\n\n## figlet \n\n[FIGlet](http://www.figlet.org/) is a computer program that generates text banners.\n\nThis Docker Image is based on latest AlpineLinux, see [Dockerfile](https://github.com/Tob1as/docker-tools/blob/main/figlet.multiarch.alpine.Dockerfile) for more details.\n\n### Example\n```sh\ndocker run --rm --name figlet -it tobi312/tools:figlet 'Hello :D'\n```\nOutput:\n```\n _   _      _ _           ____\n| | | | ___| | | ___    _|  _ \\\n| |_| |/ _ \\ | |/ _ \\  (_) | | |\n|  _  |  __/ | | (_) |  _| |_| |\n|_| |_|\\___|_|_|\\___/  (_)____/\n\n```\n\n## htpasswd\n\n[htpasswd](https://httpd.apache.org/docs/2.4/programs/htpasswd.html) create username password information of a web server.\n\nThis Docker Image is based on latest AlpineLinux, see [Dockerfile](https://github.com/Tob1as/docker-tools/blob/main/htpasswd.multiarch.alpine.Dockerfile) for more details.\n\n### Example\n```sh\ndocker run --rm -it tobi312/tools:htpasswd -bn username passw0rd\n```\nOutput:\n```\nusername:$apr1$Sk1pFYwB$ivgO9asJe4WkalyC7L5TV0\n```\n\n\n## ToolBox\n\nToolbox with git, wget, curl, nano, netcat and more.\n\nThis Docker Image is based on latest AlpineLinux, see [Dockerfile](https://github.com/Tob1as/docker-tools/blob/main/toolbox.multiarch.alpine.Dockerfile) and [Dockerfile (extended)](https://github.com/Tob1as/docker-tools/blob/main/toolbox_extended.multiarch.alpine.Dockerfile) for more details.\n\n### Example for Docker\n```sh\n# start\ndocker run --rm --name toolbox -d tobi312/tools:toolbox\n# exec\ndocker exec -it toolbox sh\n# use (example: check port is open)\nnc -zv -w 3 \u003cHOST\u003e \u003cPORT\u003e\n```\n\n### Example for Docker-Compose\n\n\u003cdetails\u003e\n\u003csummary\u003eCreate file `toolbox.yml` with this content: (click)\u003c/summary\u003e\n\u003cp\u003e\n\n```yml\nversion: '2.4'\nservices:\n\n  toolbox:\n    image: tobi312/tools:toolbox\n    #image: tobi312/tools:toolbox-extended\n    container_name: toolbox\n    restart: unless-stopped\n    #user: \"1000:1000\"  # format: \"${UID}:${GID}\"\n    #entrypoint: [ \"/bin/sh\", \"-c\", \"--\" ]\n    #command: [ \"while true; do sleep 60; done;\" ] \n```\nand then:\n```sh\n# start\ndocker-compose -f toolbox.yml up -d\n# exec (you can use sh or bash)\ndocker-compose -f toolbox.yml exec toolbox sh\n# or\ndocker exec -it toolbox sh\n# use (example: check port is open)\nnc -zv -w 3 \u003cHOST\u003e \u003cPORT\u003e\n```\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n### Example for Kubernetes\n\n\u003cdetails\u003e\n\u003csummary\u003eCreate file `toolbox.yaml` with this content: (click)\u003c/summary\u003e\n\u003cp\u003e\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: toolbox\n  namespace: default\nspec:\n  containers:\n  - name: toolbox\n    image: tobi312/tools:toolbox\n    resources:\n      requests:\n        memory: \"128Mi\"\n        cpu: \"0.1\"\n      limits:\n        memory: \"512Mi\"\n        cpu: \"0.5\"\n```\nand then:\n```sh\n# start\nkubectl apply -f toolbox.yaml\n# exec\nkubectl exec -it pod/toolbox -- sh\n# use (example: check port is open)\nnc -zv -w 3 \u003cHOST\u003e \u003cPORT\u003e\n```\n  \nOr [example](https://github.com/Tob1as/docker-kubernetes-collection/blob/master/examples_k8s/toolbox.yaml) for Deployment.\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n## dnsmasq\n\n[dnsmasq](https://thekelleys.org.uk/dnsmasq/doc.html) is a lightweight dns and dhcp server.\n\n### Example for Docker-Compose\n\n\u003cdetails\u003e\n\u003csummary\u003eCreate file `docker-compose.yml` with this content: (click)\u003c/summary\u003e\n\u003cp\u003e\n\n```yaml\nversion: \"2.4\"\nservices:\n\n  dnsmasq:\n    image: tobi312/tools:dnsmasq\n    container_name: dnsmasq\n    restart: unless-stopped\n    ports:\n      - 53:53/tcp # DNS\n      - 53:53/udp # DNS\n      - 67:67/udp # DHCP Server\n      #- 68:68/udp # DHCP Client\n      #- 69:69/udp # TFTP\n    volumes:\n      - ./dnsmasq/:/etc/dnsmasq.d/:rw  # add your config files in this folder\n    #network_mode: host\n    cap_add:\n      - 'NET_ADMIN'\n```\n\u003c/p\u003e\n\u003c/details\u003e\n\n## easy-rsa\n\n[easy-rsa](https://github.com/OpenVPN/easy-rsa) is a CLI utility to build and manage a PKI CA.\n\n* offical [Docs](https://easy-rsa.readthedocs.io)\n* [Dockerfile](https://github.com/Tob1as/docker-tools/blob/main/easy-rsa.multiarch.alpine.Dockerfile)\n\n### Example(s)\n\n```sh\n# help\ndocker run --rm --name easy-rsa -it tobi312/tools:easy-rsa-3.1.7 help\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eExample (1) - root-ca \u0026 certs:  (click)\u003c/summary\u003e\n\u003cp\u003e\n\n```sh\n# Preparation\nmkdir ~/data_easyrsa\n# IMPORANT: Execute all Command from this/next Folder !!\ncd ~/data_easyrsa\n\n# root-ca\n# init pki\ndocker run --rm --name easy-rsa -v ${PWD}:/easyrsa:rw -it tobi312/tools:easy-rsa-3.1.7 init-pki\n# download \"vars\"-File\ncurl -sL https://github.com/OpenVPN/easy-rsa/raw/master/easyrsa3/vars.example -o ./pki/vars\n# now EDIT \"vars\"-File in ./pki\n# and then build ca:\ndocker run --rm --name easy-rsa -v ${PWD}:/easyrsa:rw -it tobi312/tools:easy-rsa-3.1.7 build-ca\n\n# Server Cert (repeat this steps for other domains)\n# create server cert request\ndocker run --rm --name easy-rsa -v ${PWD}:/easyrsa:rw -it tobi312/tools:easy-rsa-3.1.7 --subject-alt-name=\"DNS:example.com,DNS:*.example.com,IP:192.168.1.100\" gen-req example-com nopass\n# sign server cert\ndocker run --rm --name easy-rsa -v ${PWD}:/easyrsa:rw -it tobi312/tools:easy-rsa-3.1.7 sign-req server example-com\n# check cert\nopenssl verify -verbose -CAfile ${PWD}/pki/ca.crt ${PWD}/pki/issued/example-com.crt\nopenssl x509 -noout -text -in ${PWD}/pki/issued/example-com.crt\n```\n\u003c/p\u003e\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003eExample (2) - root-ca, intermediate-ca \u0026 certs:  (click)\u003c/summary\u003e\n\u003cp\u003e\n\n**Preparation**:\n```sh\nmkdir ~/data_easyrsa\n# IMPORANT: Execute all Command from this/next Folder !!\ncd ~/data_easyrsa\n```\n\n**root-ca**:\n```sh\n# init pki (need \"soft\" to write in mounted volume subpath \"/easyrsa/root-ca\" instead \"/easyrsa/pki\")\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/root-ca\" -v ${PWD}/root-ca/:/easyrsa/root-ca:rw -it tobi312/tools:easy-rsa-3.1.7 init-pki soft\n# ASK: Confirm removal: yes\n\n# download \"vars\"-File\ncurl -sL https://github.com/OpenVPN/easy-rsa/raw/master/easyrsa3/vars.example -o ${PWD}/root-ca/vars\n# now EDIT \"vars\"-File in ./root-ca\n# and then build ca:\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/root-ca\" -v ${PWD}/root-ca/:/easyrsa/root-ca:rw -it tobi312/tools:easy-rsa-3.1.7 build-ca\n# ASK: Enter New CA Key Passphrase:\n# ASK: Common Name (eg: your user, host, or server name) [Easy-RSA CA]: My Organization CA\n\n# check/show content of root-ca \"ca.crt\" file\nopenssl x509 -noout -text -in ${PWD}/root-ca/ca.crt\n```\n\n\n**intermediate-ca** = subca:\n```sh\n# init pki (need \"soft\" to write in mounted volume subpath \"/easyrsa/intermediate-ca\" instead \"/easyrsa/pki\")\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/intermediate-ca\" -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 init-pki soft\n# ASK: Confirm removal: yes\n\n# download \"vars\"-File\ncurl -sL https://github.com/OpenVPN/easy-rsa/raw/master/easyrsa3/vars.example -o ${PWD}/intermediate-ca/vars\n# now EDIT \"vars\"-File in ./intermediate-ca\n# and then build subca:\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/intermediate-ca\" -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 build-ca subca\n# ASK: Enter New CA Key Passphrase:\n# ASK: Common Name (eg: your user, host, or server name) [Easy-RSA CA]: My Organization Sub-CA\n\n# import subca in ca (Note: switch to root-ca):\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/root-ca\" -v ${PWD}/root-ca/:/easyrsa/root-ca:rw -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 import-req /easyrsa/intermediate-ca/reqs/ca.req intermediate-ca\n\n# sign subca with ca (Note: switch to root-ca)\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/root-ca\" -v ${PWD}/root-ca/:/easyrsa/root-ca:rw -it tobi312/tools:easy-rsa-3.1.7 sign-req ca intermediate-ca\n# ASK: Confirm request details: yes\n# ASK: Enter pass phrase for /easyrsa/root-ca/private/ca.key:\n\n# copy sign subca from root-ca to intermediate-ca folder\ndocker run --rm --name easy-rsa --entrypoint=\"\" -v ${PWD}/root-ca/:/easyrsa/root-ca:rw -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 cp /easyrsa/root-ca/issued/intermediate-ca.crt /easyrsa/intermediate-ca/ca.crt\n# or\ncp ${PWD}/root-ca/issued/intermediate-ca.crt ${PWD}/intermediate-ca/ca.crt\n\n# verify subca from ca\nopenssl verify -verbose -CAfile ${PWD}/root-ca/ca.crt ${PWD}/intermediate-ca/ca.crt\n# check/show content of intermediate-ca \"ca.crt\" file\nopenssl x509 -noout -text -in ${PWD}/intermediate-ca/ca.crt\n\n\n# copy subca and ca in one file called fullca.crt\ncat ${PWD}/intermediate-ca/ca.crt ${PWD}/root-ca/ca.crt \u003e ${PWD}/fullca.crt\n```\n\n**Server Cert** ... for Domain example.com:\n```sh\n# create server cert request\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/intermediate-ca\" -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 --subject-alt-name=\"DNS:example.com,DNS:*.example.com,IP:192.168.1.100\" gen-req example-com nopass\n# ASK: Common Name (eg: your user, host, or server name) [example-com]:example.com\n\n# sign server cert\ndocker run --rm --name easy-rsa -e EASYRSA_PKI=\"/easyrsa/intermediate-ca\" -v ${PWD}/intermediate-ca/:/easyrsa/intermediate-ca:rw -it tobi312/tools:easy-rsa-3.1.7 sign-req server example-com\n# ASK: Confirm request details: yes\n# ASK: Enter pass phrase for /easyrsa/intermediate-ca/private/ca.key:\n\n# verify cert from subca and ca\nopenssl verify -verbose -CAfile ${PWD}/fullca.crt ${PWD}/intermediate-ca/issued/example-com.crt\n# check/show content of cert file\nopenssl x509 -noout -text -in ${PWD}/intermediate-ca/issued/example-com.crt\n\n# repeat this steps for other domains\n```\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n### Notes\n\n\u003cdetails\u003e\n\u003csummary\u003eNotes ...:  (click)\u003c/summary\u003e\n\u003cp\u003e\n\n* instead `-e EASYRSA_PKI=\"/easyrsa/root-ca\"` you can use in command `--pki-dir=/easyrsa/root-ca`\n* Backup: execute `tar cvpzf backup_easyrsa_$(date '+%Y%m%d-%H%M').tar.gz .` in `data_easyrsa`-Folder!\n* `docker run --rm --name easy-rsa --entrypoint=\"\" -it tobi312/tools:easy-rsa-3.1.7 bash`\n* linux: copy ca-certs into  `/usr/local/share/ca-certificates/` and execute `dpkg-reconfigure -f noninteractive ca-certificates`\n* crlDistributionPoints: https://github.com/OpenVPN/easy-rsa/issues/71 \u0026 https://github.com/OpenVPN/easy-rsa/issues/472 \u0026 https://github.com/OpenVPN/easy-rsa/pull/15 \u0026 \"/usr/share/easy-rsa/x509-types/COMMON\n* more help: https://github.com/OpenVPN/easy-rsa/issues/190#issuecomment-6786936427 \u0026 https://documentation.abas.cloud/en/abas-installer/Zertifikate_en/index.html\n\n\u003c/p\u003e\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftob1as%2Fdocker-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftob1as%2Fdocker-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftob1as%2Fdocker-tools/lists"}