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
Directorio de datos
mkdir -pv $CONTAINERDIR/py-kms
Portainer- Nuevo «stack»
Add a new stack – Portainer Documentation
docker pull ghcr.io/py-kms-organization/py-kms:python3
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»
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:
- $CONTAINERDIR/py-kms:/home/py-kms/db
- /etc/localtime:/etc/localtime:ro
ports:
- 1688:1688
- 8080:8080
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
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 "host.domain.com"
NGINX proxy
Para publicar el contenedor detrás de NGINX proxy, deberás añadir al final del fichero "docker-compose.yml" lo siguiente:
networks:
default:
external: true
name: proxy
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:

Si el configuramos el proxy para la redirección del puerto TCP1688, deberemos eliminarlo del fichero docker-compose de "py-kms" y agregarlo en el fichero de "NGINX Proxy manager"
....
ports:
- 80:80 # Public HTTP Port
- 443:443 # Public HTTPS Port
- 81:81 # Admin Web Port
# Add any other Stream port you want to expose
- 1688:1688 # KMS
Activación de Windows
Desde una ventada de comandos con privilegios de Administrador:
Slmgr /skms kms.dominio.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