mirror of
				https://github.com/11notes/docker-kms-gui.git
				synced 2025-10-31 03:33:29 +00:00 
			
		
		
		
	Compare commits
	
		
			22 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | e0984b3e23 | ||
|  | 71492bfa85 | ||
|  | 19331b0853 | ||
|  | 207a855406 | ||
|  | 7d7106582f | ||
|  | 6e5980a6ec | ||
|  | d5c15bb795 | ||
|  | 20d185b9cf | ||
|  | 4969a99521 | ||
|  | dff61f79cc | ||
|  | f2bd5a0ab5 | ||
|  | 4e4dd509dc | ||
|  | db9df9ea0e | ||
|  | 599ba8c980 | ||
|  | fa5238dab7 | ||
|  | 83708d3c58 | ||
|  | b8f0cdb975 | ||
|  | b07ff70477 | ||
|  | 7c274600f4 | ||
|  | 8ff275bb7a | ||
|  | 6fd38bbd74 | ||
|  | d4cf5e9f24 | 
							
								
								
									
										15
									
								
								.github/workflows/docker.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/docker.yml
									
									
									
									
										vendored
									
									
								
							| @@ -109,7 +109,7 @@ jobs: | ||||
|               app:{ | ||||
|                 image:opt.dot.image, | ||||
|                 name:opt.dot.name, | ||||
|                 version:(opt.input?.etc?.version || opt.dot.semver.version), | ||||
|                 version:(opt.input?.etc?.version || opt.dot?.semver?.version), | ||||
|                 root:opt.dot.root, | ||||
|                 UID:(opt.input?.etc?.uid || 1000), | ||||
|                 GID:(opt.input?.etc?.gid || 1000), | ||||
| @@ -127,23 +127,24 @@ jobs: | ||||
|             docker.app.suffix = docker.image.suffix; | ||||
|  | ||||
|             // setup tags | ||||
|               if(!opt.dot?.semver?.disable?.rolling){ | ||||
|                 docker.image.tags.push('rolling'); | ||||
|               } | ||||
|               if(opt.input?.etc?.dockerfile !== 'arch.dockerfile' && opt.input?.etc?.tag){ | ||||
|                 docker.image.tags.push(`${context.sha.substring(0,7)}`); | ||||
|                 docker.image.tags.push(opt.input.etc.tag); | ||||
|                 docker.image.tags.push(`${opt.input.etc.tag}-${docker.app.version}`); | ||||
|                 docker.cache.name = `${docker.image.name}:buildcache-${opt.input.etc.tag}`; | ||||
|               }else if(opt.dot?.semver?.version){ | ||||
|                 const semver = opt.dot.semver.version.split('.'); | ||||
|               }else{ | ||||
|                 const semver = docker.app.version.split('.'); | ||||
|                 docker.image.tags.push(`${context.sha.substring(0,7)}`); | ||||
|                 if(Array.isArray(semver)){ | ||||
|                   if(semver.length >= 1) docker.image.tags.push(`${semver[0]}`); | ||||
|                   if(semver.length >= 2) docker.image.tags.push(`${semver[0]}.${semver[1]}`); | ||||
|                   if(semver.length >= 3) docker.image.tags.push(`${semver[0]}.${semver[1]}.${semver[2]}`); | ||||
|                 } | ||||
|                 if(opt.dot.semver?.stable && new RegExp(opt.dot.semver.stable, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('stable'); | ||||
|                 if(opt.dot.semver?.latest && new RegExp(opt.dot.semver.latest, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('latest'); | ||||
|               }else if(opt.input?.etc?.version && opt.input.etc.version === 'latest'){ | ||||
|                 docker.image.tags.push('latest'); | ||||
|                 if(opt.dot?.semver?.stable && new RegExp(opt.dot?.semver.stable, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('stable'); | ||||
|                 if(opt.dot?.semver?.latest && new RegExp(opt.dot?.semver.latest, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('latest'); | ||||
|               } | ||||
|  | ||||
|               for(const tag of docker.image.tags){ | ||||
|   | ||||
							
								
								
									
										43
									
								
								.github/workflows/tags.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								.github/workflows/tags.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,13 +6,31 @@ on: | ||||
| jobs: | ||||
|   docker: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps:    | ||||
|     steps: | ||||
|       - name: init / base64 nested json | ||||
|         uses: actions/github-script@62c3794a3eb6788d9a2a72b219504732c0c9a298 | ||||
|         with: | ||||
|           script: | | ||||
|             const { Buffer } = require('node:buffer'); | ||||
|             (async()=>{ | ||||
|               try{ | ||||
|                 const master = await fetch('https://raw.githubusercontent.com/11notes/docker-kms/refs/heads/master/.json'); | ||||
|                 const dot = await master.json(); | ||||
|                 const etc = { | ||||
|                   version:dot.semver.version, | ||||
|                 }; | ||||
|                 core.exportVariable('WORKFLOW_BASE64JSON', Buffer.from(JSON.stringify(etc)).toString('base64')); | ||||
|               }catch(e){ | ||||
|                 core.setFailed(`workflow failed: ${e}`); | ||||
|               } | ||||
|             })(); | ||||
|  | ||||
|       - name: build docker image | ||||
|         uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7 | ||||
|         with: | ||||
|           workflow: docker.yml | ||||
|           token: "${{ secrets.REPOSITORY_TOKEN }}" | ||||
|           inputs: '{ "release":"true", "readme":"true" }' | ||||
|           inputs: '{ "release":"true", "readme":"true", "etc":"${{ env.WORKFLOW_BASE64JSON }}" }' | ||||
|  | ||||
|   docker-unraid: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -22,12 +40,21 @@ jobs: | ||||
|         with: | ||||
|           script: | | ||||
|             const { Buffer } = require('node:buffer'); | ||||
|             const etc = { | ||||
|               semversuffix:"unraid", | ||||
|               uid:99, | ||||
|               gid:100, | ||||
|             }; | ||||
|             core.exportVariable('WORKFLOW_BASE64JSON', Buffer.from(JSON.stringify(etc)).toString('base64')); | ||||
|             (async()=>{ | ||||
|               try{ | ||||
|                 const master = await fetch('https://raw.githubusercontent.com/11notes/docker-kms/refs/heads/master/.json'); | ||||
|                 const dot = await master.json(); | ||||
|                 const etc = { | ||||
|                   version:dot.semver.version, | ||||
|                   semversuffix:"unraid", | ||||
|                   uid:99, | ||||
|                   gid:100, | ||||
|                 }; | ||||
|                 core.exportVariable('WORKFLOW_BASE64JSON', Buffer.from(JSON.stringify(etc)).toString('base64')); | ||||
|               }catch(e){ | ||||
|                 core.setFailed(`workflow failed: ${e}`); | ||||
|               } | ||||
|             })(); | ||||
|              | ||||
|       - name: build docker image for unraid community | ||||
|         uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7 | ||||
|   | ||||
							
								
								
									
										10
									
								
								.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								.json
									
									
									
									
									
								
							| @@ -2,19 +2,15 @@ | ||||
|   "image":"11notes/kms-gui", | ||||
|   "name":"kms-gui", | ||||
|   "root":"/kms", | ||||
|   "arch":"linux/amd64,linux/arm64,linux/arm/v7", | ||||
|    | ||||
|   "semver":{ | ||||
|     "version":"465f4d1" | ||||
|   }, | ||||
|  | ||||
|   "readme":{ | ||||
|     "description":"Activate any version of Windows and Office, forever", | ||||
|     "parent":{ | ||||
|       "image":"11notes/kms:465f4d1" | ||||
|       "image":"11notes/kms" | ||||
|     }, | ||||
|     "built":{ | ||||
|       "py-kms":"https://github.com/Py-KMS-Organization/py-kms", | ||||
|       "CustomIcon/pykms-frontend":"https://github.com/CustomIcon/pykms-frontend" | ||||
|       "11notes/fork-pykms-frontend":"https://github.com/11notes/fork-pykms-frontend" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										25
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
|  | ||||
|  | ||||
| # KMS-GUI | ||||
| [<img src="https://img.shields.io/badge/github-source-blue?logo=github&color=040308">](https://github.com/11notes/docker-KMS-GUI)[<img src="https://img.shields.io/github/issues/11notes/docker-KMS-GUI?color=7842f5">](https://github.com/11notes/docker-KMS-GUI/issues) | ||||
| [<img src="https://img.shields.io/github/issues/11notes/docker-KMS-GUI?color=7842f5">](https://github.com/11notes/docker-KMS-GUI/issues) | ||||
|  | ||||
| Activate any version of Windows and Office, forever | ||||
|  | ||||
| @@ -15,7 +15,7 @@ Activate any version of Windows and Office, forever | ||||
| name: "kms" | ||||
| services: | ||||
|   app: | ||||
|     image: "11notes/kms:465f4d1" | ||||
|     image: "11notes/kms:1.0.0" | ||||
|     environment: | ||||
|       TZ: "Europe/Zurich" | ||||
|     volumes: | ||||
| @@ -25,7 +25,7 @@ services: | ||||
|     restart: "always" | ||||
|  | ||||
|   gui: | ||||
|     image: "11notes/kms-gui:465f4d1" | ||||
|     image: "11notes/kms-gui:latest" | ||||
|     depends_on: | ||||
|       app: | ||||
|         condition: "service_healthy" | ||||
| @@ -60,28 +60,27 @@ volumes: | ||||
| # MAIN TAGS 🏷️ | ||||
| These are the main tags for the image. There is also a tag for each commit and its shorthand sha256 value. | ||||
|  | ||||
| * [465f4d1](https://hub.docker.com/r/11notes/kms-gui/tags?name=465f4d1) | ||||
| * [465f4d1-unraid](https://hub.docker.com/r/11notes/kms-gui/tags?name=465f4d1-unraid) | ||||
| * [latest](https://hub.docker.com/r/11notes/kms-gui/tags?name=latest) | ||||
| * [latest-unraid](https://hub.docker.com/r/11notes/kms-gui/tags?name=latest-unraid) | ||||
|  | ||||
| # REGISTRIES ☁️ | ||||
| ``` | ||||
| docker pull 11notes/kms-gui:465f4d1 | ||||
| docker pull ghcr.io/11notes/kms-gui:465f4d1 | ||||
| docker pull quay.io/11notes/kms-gui:465f4d1 | ||||
| docker pull 11notes/kms-gui:latest | ||||
| docker pull ghcr.io/11notes/kms-gui:latest | ||||
| docker pull quay.io/11notes/kms-gui:latest | ||||
| ``` | ||||
|  | ||||
| ${{ title_unraid }} | ||||
| # UNRAID VERSION 🟠 | ||||
| This image supports unraid by default. Simply add **-unraid** to any tag and the image will run as 99:100 instead of 1000:1000 causing no issues on unraid. Enjoy. | ||||
|  | ||||
| # SOURCE 💾 | ||||
| * [11notes/kms-gui](https://github.com/11notes/docker-KMS-GUI) | ||||
|  | ||||
| # PARENT IMAGE 🏛️ | ||||
| * [11notes/kms:465f4d1](https://hub.docker.com/r/11notes/kms) | ||||
| * [11notes/kms](${{ json_readme_parent_url }}) | ||||
|  | ||||
| # BUILT WITH 🧰 | ||||
| * [py-kms](https://github.com/Py-KMS-Organization/py-kms) | ||||
| * [CustomIcon/pykms-frontend](https://github.com/CustomIcon/pykms-frontend) | ||||
| * [11notes/fork-pykms-frontend](https://github.com/11notes/fork-pykms-frontend) | ||||
| * [11notes/util](https://github.com/11notes/docker-util) | ||||
|  | ||||
| # GENERAL TIPS 📌 | ||||
| @@ -92,4 +91,4 @@ This image supports unraid by default. Simply add **-unraid** to any tag and the | ||||
| # ElevenNotes™️ | ||||
| This image is provided to you at your own risk. Always make backups before updating an image to a different version. Check the [releases](https://github.com/11notes/docker-kms-gui/releases) for breaking changes. If you have any problems with using this image simply raise an [issue](https://github.com/11notes/docker-kms-gui/issues), thanks. If you have a question or inputs please create a new [discussion](https://github.com/11notes/docker-kms-gui/discussions) instead of an issue. You can find all my other repositories on [github](https://github.com/11notes?tab=repositories). | ||||
|  | ||||
| *created 02.05.2025, 10:23:31 (CET)* | ||||
| *created 20.07.2025, 13:19:01 (CET)* | ||||
| @@ -3,13 +3,15 @@ ARG APP_PREFIX="" | ||||
| ARG APP_SUFFIX="" | ||||
| ARG APP_UID=1000 | ||||
| ARG APP_GID=1000 | ||||
| ARG BUILD_ROOT=/git/fork-pykms-frontend | ||||
|  | ||||
| # :: Build / styles | ||||
|   FROM alpine/git AS styles | ||||
|   ARG APP_NO_CACHE | ||||
|   ARG BUILD_ROOT | ||||
|   RUN set -ex; \ | ||||
|     git clone https://github.com/11notes/pykms-frontend.git; \ | ||||
|     cd /git/pykms-frontend; | ||||
|     git clone https://github.com/11notes/fork-pykms-frontend.git; \ | ||||
|     cd ${BUILD_ROOT}; | ||||
|  | ||||
| # :: Header | ||||
|   FROM 11notes/kms:${APP_PREFIX}${APP_VERSION}${APP_SUFFIX} | ||||
| @@ -23,6 +25,13 @@ ARG APP_GID=1000 | ||||
|     ARG APP_UID | ||||
|     ARG APP_GID | ||||
|     ARG APP_NO_CACHE | ||||
|     ARG BUILD_ROOT | ||||
|  | ||||
|     # :: python image | ||||
|       ARG PIP_ROOT_USER_ACTION=ignore | ||||
|       ARG PIP_BREAK_SYSTEM_PACKAGES=1 | ||||
|       ARG PIP_DISABLE_PIP_VERSION_CHECK=1 | ||||
|       ARG PIP_NO_CACHE_DIR=1 | ||||
|  | ||||
|   # :: environment | ||||
|     ENV APP_IMAGE=${APP_IMAGE} | ||||
| @@ -38,8 +47,6 @@ ARG APP_GID=1000 | ||||
|     ENV PORT=3000 | ||||
|     ENV LOG_LEVEL=INFO | ||||
|  | ||||
|     ENV PIP_ROOT_USER_ACTION=ignore | ||||
|  | ||||
|   # :: multi-stage | ||||
|     COPY ./LICENSE /opt/py-kms | ||||
|  | ||||
| @@ -57,8 +64,8 @@ ARG APP_GID=1000 | ||||
|       cd /opt/py-kms; \ | ||||
|       echo "${APP_VERSION}" > VERSION; \ | ||||
|       echo "master" >> VERSION; \ | ||||
|       pip3 install --no-cache-dir --break-system-packages -r /opt/py-kms/requirements.gui.txt; \ | ||||
|       pip3 list -o | sed 's/pip.*//' | grep . | cut -f1 -d' ' | tr " " "\n" | awk '{if(NR>=3)print}' | cut -d' ' -f1 | xargs -n1 pip3 install --no-cache-dir --break-system-packages -U; \ | ||||
|       pip3 install -r /opt/py-kms/requirements.gui.txt; \ | ||||
|       pip3 list -o | sed 's/pip.*//' | grep . | cut -f1 -d' ' | tr " " "\n" | awk '{if(NR>=3)print}' | cut -d' ' -f1 | xargs -n1 pip3 install -U; \ | ||||
|       apk del --no-network .build; \ | ||||
|       rm -rf /usr/lib/python3.12/site-packages/pip; | ||||
|  | ||||
| @@ -74,8 +81,8 @@ ARG APP_GID=1000 | ||||
|       rm -rf /opt/py-kms/templates; \ | ||||
|       rm -rf /opt/py-kms/static; | ||||
|      | ||||
|     COPY --from=styles /git/pykms-frontend/templates ${APP_ROOT}/styles/custom-icon/templates | ||||
|     COPY --from=styles /git/pykms-frontend/static ${APP_ROOT}/styles/custom-icon/static | ||||
|     COPY --from=styles ${BUILD_ROOT}/templates ${APP_ROOT}/styles/custom-icon/templates | ||||
|     COPY --from=styles ${BUILD_ROOT}/static ${APP_ROOT}/styles/custom-icon/static | ||||
|  | ||||
|   # :: set correct permissions | ||||
|     RUN set -ex; \ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| name: "kms" | ||||
| services: | ||||
|   app: | ||||
|     image: "11notes/kms:465f4d1" | ||||
|     image: "11notes/kms:1.0.0" | ||||
|     environment: | ||||
|       TZ: "Europe/Zurich" | ||||
|     volumes: | ||||
| @@ -11,7 +11,7 @@ services: | ||||
|     restart: "always" | ||||
|  | ||||
|   gui: | ||||
|     image: "11notes/kms-gui:465f4d1" | ||||
|     image: "11notes/kms-gui:latest" | ||||
|     depends_on: | ||||
|       app: | ||||
|         condition: "service_healthy" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user