====== Installing an Open Source KMS Server (Vlmcsd) on Linux ====== ---- **Prerequisite:** Study up on the KMS technology; nearly all the necessary information can be found in the [[https://woshub.com/ms-kms-activation-faq|Microsoft KMS Volume Activation FAQ]]. See also a complete list of GVLK (Generic Volume License Keys) at the [[https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys|Microsoft Documentation Site]]. Finally, the legacy version of this document can be referenced [[https://www.godwin.org/wp/install-an-open-source-kms-server/|here]]. To run the KMS server in a docker container, see the next section. === Running the KMS server as a native process on Linux === Install the ''git'' and ''gcc'' packages using the package manager appropriate for the flavor of Linux being used (Ubuntu - apt, Redhat - yum).\\ Clone and install the **vlmcsd** package: git clone https://github.com/Wind4/vlmcsd cd vlmcsd make Change to the bin directory: cd bin Run the KMS server: ./vlmcsd You will see the following message: Connecting to 127.0.0.1:1688 ... successful Sending activation request (KMS V6) 1 of 1 -> 55041-00206-559-475403-03-1076-6002.0000-1482020 (3A1C049600B60076) This indicates the KMS server has been successfully compiled and run. If running a firewall on the server, ensure TCP/1688 is opened. To run vlmcsd automatically, create a daemon and manage it with systemd: cp vlmcs /usr/bin touch /etc/systemd/system/kms-script.service chmod 664 /etc/systemd/system/kms-script.service nano /etc/systemd/system/kms-script.service Add the following service description to the new file: [Unit] Description=MSFT KMS Server Emulator After=network.target After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/vlmcsd RemainAfterExit=yes LimitNOFILE=65536 [Install] WantedBy=multi-user.target Then run the KMS service and add it to startup: systemctl daemon-reload systemctl start kms-script.service systemctl status kms-script.service systemctl enable kms-script.service === Running the KMS server in a docker container on Linux === Ensure docker is installed and running on the server Execute the following commands: sudo docker pull teddysun/kms:latest sudo docker run -d -p 1688:1688 --restart=always --name kms_server teddysun/kms /vlmcsd -D -d -t 3 -e -v -R172800 -A10080 Executing via a docker compose file: services: kms: image: teddysun/kms:latest container_name: kms ports: - 1688:1688 restart: always === Activating Windows via the KMS Server === To activate Windows manually, set the GVLK for your Windows version, the IP address of your KMS activation host, and run the activation command. The following commands are used (for example, for Windows Server 2022 Standard): ''slmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H'' ''slmgr.vbs -skms 192.168.14.147'' ''slmgr.vbs -ato'' After you run the last command, you will see the message: Product activated successfully. This means that your Windows copy has been successfully activated. You can check the Windows activation status using the command: ''slmgr.vbs -dlv''