22 Commits

Author SHA1 Message Date
github-actions[bot]
e0984b3e23 github-actions[bot]: update README.md 2025-07-20 11:19:02 +00:00
github-actions[bot]
71492bfa85 github-actions[bot]: update README.md 2025-07-09 19:45:41 +00:00
github-actions[bot]
19331b0853 github-actions[bot]: update README.md 2025-06-11 07:35:37 +00:00
github-actions[bot]
207a855406 github-actions[bot]: update README.md 2025-05-21 06:54:36 +00:00
ElevenNotes
7d7106582f [fix] no semver property 2025-05-21 08:19:48 +02:00
ElevenNotes
6e5980a6ec [fix] no semver property 2025-05-21 07:26:08 +02:00
ElevenNotes
d5c15bb795 [fix] missing semver version 2025-05-20 16:00:26 +02:00
ElevenNotes
20d185b9cf Merge branch 'master' of https://github.com/11notes/docker-kms-gui 2025-05-20 15:38:44 +02:00
ElevenNotes
4969a99521 [feature] use .json from 11notes/kms 2025-05-20 15:38:35 +02:00
github-actions[bot]
dff61f79cc github-actions[bot]: update README.md 2025-05-20 13:26:01 +00:00
ElevenNotes
f2bd5a0ab5 Merge branch 'master' of https://github.com/11notes/docker-kms-gui 2025-05-20 15:07:08 +02:00
ElevenNotes
4e4dd509dc [upgrade] 1.0.1 2025-05-20 15:06:58 +02:00
github-actions[bot]
db9df9ea0e github-actions[bot]: update README.md 2025-05-19 13:45:39 +00:00
ElevenNotes
599ba8c980 Merge branch 'master' of https://github.com/11notes/docker-kms-gui 2025-05-19 09:00:00 +02:00
ElevenNotes
fa5238dab7 [feature] add ARM v7 2025-05-19 08:59:53 +02:00
ElevenNotes
83708d3c58 [upgrade] latest workflow 2025-05-19 08:59:39 +02:00
github-actions[bot]
b8f0cdb975 github-actions[bot]: update README.md 2025-05-05 09:08:25 +00:00
ElevenNotes
b07ff70477 [breaking] switch to semver 2025-05-05 10:57:38 +02:00
ElevenNotes
7c274600f4 Merge branch 'master' of https://github.com/11notes/docker-kms-gui 2025-05-05 10:56:34 +02:00
ElevenNotes
8ff275bb7a [upgrade] to fork for default skin and semver for base image 2025-05-05 10:56:26 +02:00
github-actions[bot]
6fd38bbd74 github-actions[bot]: update README.md 2025-05-02 09:48:27 +00:00
github-actions[bot]
d4cf5e9f24 github-actions[bot]: update README.md 2025-05-02 08:37:48 +00:00
6 changed files with 75 additions and 45 deletions

View File

@@ -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){

View File

@@ -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
View File

@@ -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"
}
}
}

View File

@@ -1,7 +1,7 @@
![banner](https://github.com/11notes/defaults/blob/main/static/img/banner.png?raw=true)
# KMS-GUI
[<img src="https://img.shields.io/badge/github-source-blue?logo=github&color=040308">](https://github.com/11notes/docker-KMS-GUI)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![size](https://img.shields.io/docker/image-size/11notes/kms-gui/465f4d1?color=0eb305)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![version](https://img.shields.io/docker/v/11notes/kms-gui/465f4d1?color=eb7a09)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![pulls](https://img.shields.io/docker/pulls/11notes/kms-gui?color=2b75d6)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)[<img src="https://img.shields.io/github/issues/11notes/docker-KMS-GUI?color=7842f5">](https://github.com/11notes/docker-KMS-GUI/issues)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![swiss_made](https://img.shields.io/badge/Swiss_Made-FFFFFF?labelColor=FF0000&logo=data:image/svg%2bxml;base64,PHN2ZyB2ZXJzaW9uPSIxIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iI2YwMCIvPjxwYXRoIGQ9Im0xMyA2aDZ2N2g3djZoLTd2N2gtNnYtN2gtN3YtNmg3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==)
![size](https://img.shields.io/docker/image-size/11notes/kms-gui/latest?color=0eb305)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![version](https://img.shields.io/docker/v/11notes/kms-gui/latest?color=eb7a09)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![pulls](https://img.shields.io/docker/pulls/11notes/kms-gui?color=2b75d6)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)[<img src="https://img.shields.io/github/issues/11notes/docker-KMS-GUI?color=7842f5">](https://github.com/11notes/docker-KMS-GUI/issues)![5px](https://github.com/11notes/defaults/blob/main/static/img/transparent5x2px.png?raw=true)![swiss_made](https://img.shields.io/badge/Swiss_Made-FFFFFF?labelColor=FF0000&logo=data:image/svg%2bxml;base64,PHN2ZyB2ZXJzaW9uPSIxIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0idHJhbnNwYXJlbnQiLz4KICA8cGF0aCBkPSJtMTMgNmg2djdoN3Y2aC03djdoLTZ2LTdoLTd2LTZoN3oiIGZpbGw9IiNmZmYiLz4KPC9zdmc+)
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)*

View File

@@ -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; \

View File

@@ -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"