PY-KMS
py-kms es un emulador de servidor KMS gratuito de código abierto escrito en Python.
Enlaces
Documentation — py-kms documentation
Requisitos
- Docker o Podman instalado siguiendo los pasos de instalar
- Portainer configurado siguiendo los pasos de instalar portainer.
- NGINX Proxy manager siguiendo los pasos de instalar NGINX Proxy Manager. (opcional)
Imagen
Repositorio de Docker Hub: pykmsorg/py-kms - Docker Image | Docker Hub
Portainer- Nuevo «stack»
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables
Fichero de variables «.env»
TZ=Europe/Madrid
IP=0.0.0.0
SQLITE=true
HWID=RANDOM
LOGLEVEL=INFO
Fichero docker-compose.yml
services:
py-kms:
image: ghcr.io/py-kms-organization/py-kms:python3
container_name: py-kms
restart: unless-stopped
env_file: stack.env
volumes:
- db:/home/py-kms/db
- /etc/localtime:/etc/localtime:ro
ports:
- 1688:1688
- 8080:8080
networks:
- proxy
volumes:
db:
networks:
proxy:
external: true
En este punto ya puedes ir a http://my.docker.ip.address:8080 y comprobar las activaciones que se van realizando
Publicando detrás de un proxy
Podemos publicar la web anterior detrás de un proxy
Crear registro DNS
En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "kms.domain.com"
NGINX proxy
Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host
Crear un nuevo "proxy host"
Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto:

Redirección de puerto TCP 1688
En el caso de querer que sea el proxy quien acepte las peticiones del puerto TCP 1688 y las redirija al contenedor "pykms" configuraremos un stream como el siguiente:

Activación de Windows
Desde una ventada de comandos con privilegios de Administrador:
Slmgr /ipk <product key>
Slmgr /skms kms.domain.com
Slmgr /ato
Activación de Office (64bits)
Desde una ventada de comandos con privilegios de Administrador:
cd "\Program Files\Microsoft Office\Office16"
cscript ospp.vbs /sethst:kms.domain.com
cscript ospp.vbs /act
Conversión Windows Server
Opciones de actualización y conversión para Windows Server | Microsoft Learn
Ejecute los comandos siguiente en un símbolo del sistema con privilegios elevados o una sesión de PowerShell:
# Para obtener versión actual
DISM /online /Get-CurrentEdition
# Para comprobar a qué ediciones se puede convertir la instalación actual
DISM /online /Get-TargetEditions
# Para convertir
DISM /online /Set-Edition:<target edition> /ProductKey:<product key> /AcceptEula
Por ejemplo, convertir a ServerDatacenter
DISM /online /Set-Edition:ServerDatacenter /ProductKey:ABCDE-12345-ABCDE-12345-ABCDE /AcceptEula