mirror of
https://github.com/11notes/docker-kms-gui.git
synced 2025-11-02 20:33:12 +00:00
Compare commits
20 Commits
6fd38bbd74
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0984b3e23 | ||
|
|
71492bfa85 | ||
|
|
19331b0853 | ||
|
|
207a855406 | ||
|
|
7d7106582f | ||
|
|
6e5980a6ec | ||
|
|
d5c15bb795 | ||
|
|
20d185b9cf | ||
|
|
4969a99521 | ||
|
|
dff61f79cc | ||
|
|
f2bd5a0ab5 | ||
|
|
4e4dd509dc | ||
|
|
db9df9ea0e | ||
|
|
599ba8c980 | ||
|
|
fa5238dab7 | ||
|
|
83708d3c58 | ||
|
|
b8f0cdb975 | ||
|
|
b07ff70477 | ||
|
|
7c274600f4 | ||
|
|
8ff275bb7a |
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, 11:48:27 (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