Lots of stuff left over from 11notes, please give me time to update
Activate any version of Windows and Office, forever
What can I do with this? This image will run a KMS server you can use to activate any version of Windows and Office, forever. Why was this created? Because the upstream loser 11notes likes to leave breaking bugs in his code, this one here "Error 0x2a 0x80070216" has been fixed in this release and has a new UI with tons of new features!
Works with:
- Windows Vista
- Windows 7
- Windows 8
- Windows 8.1
- Windows 10
- Windows 11
- Windows Server 2008
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Windows Server 2025
- Windows Server 2025: Azure Edition
- Microsoft Office 2010 ( Volume License )
- Microsoft Office 2013 ( Volume License )
- Microsoft Office 2016 ( Volume License )
- Microsoft Office 2019 ( Volume License )
- Microsoft Office 2021 ( Volume License )
- Microsoft Office 2024 ( Volume License )
- /kms/var - Directory of the activation database
- /var:/stb - This is new and used by webUI to get the version of the kms server (this is no longer needed after version 2.0.1)
name: "kms"
services:
kms:
image: "mcrook250/ms-kms:latest"
environment:
TZ: "Europe/Zurich"
AUTO_PURGE: "True"
volumes:
- "var:/kms/var"
ports:
- "1688:1688/tcp"
restart: "always"
gui:
image: "mcrook250/kms-gui:latest"
depends_on:
app:
condition: "service_healthy"
restart: true
environment:
TZ: "Europe/Zurich"
ENABLE_DEL: "False"
volumes:
- "var:/kms/var"
ports:
- "3000:3000/tcp"
restart: "always"
volumes:
var:Windows Server 2025 Datacenter. List of GVLK
Add your key via cmd
slmgr /ipk D764K-2NDRG-47T6Q-P8T8W-YP6DFAdd your KMS server via cmd
slmgr /skms kms.yourdomain.com:1688Add your KMS server information to server via registry
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" -Name "KeyManagementServiceName" -Value "KMS_IP"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform" -Name "KeyManagementServicePort" -Value "KMS_PORT"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" -Name "KeyManagementServiceName" -Value "KMS_IP"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" -Name "KeyManagementServicePort" -Value "KMS_PORT"Activate server
slmgr /ato| Parameter | Value | Description |
|---|---|---|
user |
docker | user name |
uid |
1000 | user identifier |
gid |
1000 | group identifier |
home |
/kms | home directory of user docker |
database |
/kms/var/kms.db | SQlite database holding all client data |
*Alot of these don't do anything yet, however they will at some point. All default values have been preserved and hardcoded.
| Parameter | Value | Default |
|---|---|---|
TZ |
Time Zone | |
DEBUG |
Will activate debug option for container image and app (if available) | |
LOCALE |
see Microsoft LICD specification | 1033 (en-US) |
ACTIVATIONINTERVAL |
Retry unsuccessful after N minutes | 120 (2 hours) |
RENEWALINTERVAL |
re-activation after N minutes | 259200 (180 days) |
LOGLEVEL |
CRITICAL, ERROR, WARNING, INFO, DEBUG, MININFO | INFO |
CLIENT_COUNT |
A number >=25 is required to enable activation of client OSes; for server OSes and Office >=5 | 26 |
IP |
The IP address to listen on. | 0.0.0.0 |
AUTO_PURGE |
Automatically remove stale records after 210 days. RENEWALINTERVAL + 30 days | False |
LOGFILE |
Use this flag to set an output Logfile. | /var/log/pykms_logserver.log |
*These should all work as they are ported right from py-kms 'next' branch
These are the main tags for the image. There is also a tag for each commit and its shorthand sha256 value.
There is a reminder in the web UI to let you know when its time to update.... like any normal docker app, eg. the arr family. Why should you keep up with the latest release? Because I believe in fixing bugs, adding improvements and providing a overall pleasant user experience, no fuss, no hassle.
If you still insist on having the last stable release of this app, simply use the :2.0.1 tag. You will stay on the stable version of the app, regardless of breaking changes or security issues or what so ever. You do this at your own risk!
docker pull mcrook250/ms-kms:latest
docker pull mcrook250/kms-gui:latest
docker pull ghcr.io/11notes/kms:1.0.1 <- old not used anymore
docker pull quay.io/11notes/kms:1.0.1 <- old and not used anymore
11notes - "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." This should just work out of the box. No messing around, no special version. Report if you have bugs!
Tip
- Use a reverse proxy like Traefik, Nginx, HAproxy to terminate TLS and to protect your endpoints
- Use Let’s Encrypt DNS-01 challenge to obtain valid SSL certificates for your services
- Do not expose this image to WAN! You will get notified from Microsoft via your ISP to terminate the service if you do so
- Microsoft LICD
- Use mcrook250/kms-gui if you want to see the clients you activated in a nice NEW web UI and features!
- Look for easter eggs, I have and always will include these little goodies!
This image is provided to you at your own risk. Always make backups before updating an image to a different version. Check the releases for breaking changes. If you have any problems with using this image simply raise an issue, thanks. If you have a question or inputs please create a new discussion instead of an issue. You can find all my other repositories on github.
created 21.05.2025, 08:48:52 (CET)