EN
Currency:
EUR – €
Choose a currency
  • Euro EUR – €
  • United States dollar USD – $
VAT:
OT 0%
Choose your country (VAT)
  • OT All others 0%
Choose a language
  • Choose a currency
    Choose you country (VAT)
    Dedicated Servers
  • Instant
  • Custom
  • Single CPU servers
  • Dual CPU servers
  • Servers with 4th Gen CPUs
  • Servers with AMD Ryzen and Intel Core i9
  • Storage Servers
  • Servers with 10Gbps ports
  • Hosting virtualization nodes
  • GPU
  • Sale
  • VPS
  • General VPS
  • Performance VPS
  • Edge VPS
  • Storage VPS
  • VDS
  • GPU
  • Dedicated GPU server
  • VM with GPU
  • Tesla A100 80GB & H100 Servers
  • Sale
    Apps
    Cloud
  • VMware and RedHat's oVirt Сlusters
  • Proxmox VE
  • Colocation
  • Colocation in the Netherlands
  • Remote smart hands
  • Services
  • DDoS L7 Protection
  • L3-L4 DDoS Protection
  • Network equipment
  • IPv4 and IPv6 address
  • Managed servers
  • SLA packages for technical support
  • Monitoring
  • Software
  • VLAN
  • Announcing your IP or AS (BYOIP)
  • USB flash/key/flash drive
  • Traffic
  • Hardware delivery for EU data centers
  • AI Chatbot Lite
  • About
  • Careers at HOSTKEY
  • Server Control Panel & API
  • Data Centers
  • Network
  • Speed test
  • Hot deals
  • Sales contact
  • Reseller program
  • Affiliate Program
  • Grants for winners
  • Grants for scientific projects and startups
  • News
  • Our blog
  • Payment terms and methods
  • Legal
  • Abuse
  • Looking Glass
  • The KYC Verification
  • Hot Deals

    25.11.2024

    How We Replaced the IPMI Console with HTML5 for Managing Our Servers

    server one
    HOSTKEY

    Remote access to physical servers is essential for IT professionals. If you own a server or rent one, you've likely accessed it through SSH or RDP. However, traditional methods of managing such systems can be vulnerable due to the need for an operating system and specialized software on the server.

    In cases where no operating system is installed, or issues arise during setup such as boot errors or network/firewall misconfigurations, access to remote server resources could be lost, resulting in a surge of support tickets from hosting clients. In such situations, dedicated controllers for remote server management without an operating system in place become an effective solution.

    Dedicated servers with 4th generation AMD EPYC 9354 / 9124 / 9554 / 9754 and Intel Xeon Silver 4416+ processors

    Rent a high-performance dedicated server based on the latest generation AMD EPYC and Intel Xeon processors, with DDR5 RAM and NVME storage. Servers are available for order at our state-of-the-art data centers in Amsterdam.

    🔶 Installation fee: Free of charge 🔶 Discount of up to 12% depending on the rental period 🔶 Delivery time: next working day

    Order

    The Traditional Approach

    One solution is to use IPMI – an industry standard for monitoring and managing platforms. IPMI enables hardware management regardless of the presence or functionality of the OS. However, managing the console and equipment settings requires corresponding software. In our case, this involved running a Java KVM plugin.

    Let's illustrate this process using Supermicro servers as an example. Our clients had to activate their connection, wait for the gray IP address forwarding, create a temporary account, and receive a link with an IP address for authorization in the web interface to access the remote server console. Only after completing all these steps could they access the integrated IPMI module on the server to manage its settings and functions.

    Clients needed to install Java software on their devices, often leading to increased support workload as some users experienced difficulties launching the downloaded console.

    Additional challenges arose with version compatibility or launching the console on Apple devices. These shortcomings motivated us to develop a more convenient and user-friendly mechanism for managing equipment.

    We decided that everything should "run" on the hosting side within a secure virtual environment, eliminating the need for additional software installation and configuration on client devices.

    INVAPI and Its HTML5 Console

    Our console operates within INVAPI—our internal hardware management panel used at HOSTKEY throughout all stages, from server ordering to performing system reinstallation. Therefore, integrating the console into our management panel felt logical.

    To eliminate the need for users to locally install additional software, the initial technical specifications (TS) for the HTML5 console specified direct access from the user's personal account.

    Users can simply click Open HTML5 Console in the designated section of the management panel to access it.

    Docker was employed to practically implement this idea, with NoJava-IPMI-KVM-Server and ipmi-kvm-docker forming the core foundation. The console supports Supermicro motherboards up to the tenth generation (the eleventh generation already features the HTML5 Supermicro iKVM/IPMI viewer).

    INVAPI boasts a sufficiently convenient API, allowing for a corresponding eq/nonvc call within the console.

    curl -s "https://invapi.hostkey.com/eq.php" -X POST \
    --data "action=novnc" \
    --data "token={HOSTKEY TOKEN}" \
    --data "id={SERVER_ID}" \
    --data "pin={PIN_CODE}"
    Response example:
    {
    "result":"OK",
    "scope":"https://rcnl1.hostkey.com:32800/vnc.html?host=IP ХОСТА&port=32800&autoconnect=true&password=YVhMxxhiuTpe3mH6y3ry",
    "context":{"action":"novnc","id":"25250","location":"NL"},
    "debug":"debug",
    "key":"71ccb18b1fa499458526acc15fb6a40b"
    }

    INVAPI logic is built on API calls, and we previously implemented VNC access in a similar way through Apache Guacamole. So, let's describe the process again.

    When you click a button, you request this action through the API, initiating a more complex process that can be schematized as follows:

    An INVAPI request sends a command to the API to open a console for a specific server through the message broker cluster (RabbitMQ). To call the console, simply send the server's IP address and its location (our servers are located in the Netherlands, USA, Finland, Turkey, Iceland and Germany) to the message broker.

    RabbitMQ forwards the server data and the console opening task to a helper service-receiver created by our specialists. The receiver retrieves the data, transforms all necessary information, separates tasks (Cisco, IPMI, etc.), and directs them to agents.

    Agents (fence agents) correspond to the types of equipment used in our infrastructure. They access the server with Docker-novnc, which has access to the closed IPMI network. The agent sends a GET request to the Docker-novnc server containing the server's IP address and ID, session token, and a link for closing the session.

    The structure of the request is:

    https://rcnl1.hostkey.com:PORT/api/v1/server/{IP_SERVER}/skey/{REQUEST_KEY}/{SERVER_ID}/closeurl/{CLOSE_URL}

    The Docker-novnc container contains the following components:

    • Xvfb — X11 in a virtual frame buffer
    • x11vnc — VNC server that connects to the specified X11 server
    • noNVC — HTML5 VNC viewer
    • Fluxbox — window manager
    • Firefox — browser for viewing IPMI consoles
    • Java-plugin — Java is required for accessing most IPMI KVM consoles

    NoJava-IPMI-KVM-Server is a Python-based server that allows access to the IPMI-KVM console launch tool based on Java without local installation (nojava-ipmi-kvm) through a browser.

    It runs in a Docker container in the background, launches a suitable version of Java Webstart (with OpenJDK or Oracle), and connects to the container using noVNC.

    Using Docker automatically isolates Java Webstart, so you don't need to install outdated versions of Java on workstations. Thanks to our server, you also don't need to install the docker-container nojava-ipmi-kvm itself.

    The console launches within a minute after the request and opens in a separate browser window. The downside here is that if you close the console, you can open it again immediately, so we added a link for automatic session termination.

    This is done for user convenience and equipment security: if there is no activity for a certain period of time (two hours by default), the console will be closed automatically.

    An important point: if the server is restarted or a regular VNC console is called from the panel, you will need to restart access to the html5 console.

    What are the results?

    Implementing this new solution significantly simplified the process of managing Supermicro equipment for end users. It also reduced the workload on our support team, enabling us to streamline the management of hardware from other manufacturers as well.

    As our equipment park grew (currently over 5000 servers and 12,000 virtual machines across all locations), we also faced challenges in developing and supporting a single universal solution similar to NoJava-IPMI-KVM-Server. Therefore, the docker-novnc service actually has different container builds optimized for specific server types: html5_asmb9 — servers with ASUS motherboards (with their quirks), java_dell_r720 — Dell servers, java_viewer_supermicro — Supermicro servers, java_viewer_tplatform — T-Platforms servers — V5000 Blade Chassis.

    Why such complexity? For example, the blade chassis from T-Platform is quite old and requires Java 7 and Internet Explorer browser to open a console.

    Each motherboard has a tag with the Java version and platform type, so in the request, we only need to send the machine's IP address and Java type.

    As a result, we can run a large number of docker-novnc containers that horizontally scale and can be orchestrated in Kubernetes.

    All this allows us to get a unified interface for accessing servers through the browser, unify the interface and API, simplify access via IPMI, and also abandon Apache Guacamole.

    The problem of hotkeys is also solved — the interface remains standard and understandable everywhere, support is provided by our team, we can flexibly configure access.

    Dedicated servers with 4th generation AMD EPYC 9354 / 9124 / 9554 / 9754 and Intel Xeon Silver 4416+ processors

    Rent a high-performance dedicated server based on the latest generation AMD EPYC and Intel Xeon processors, with DDR5 RAM and NVME storage. Servers are available for order at our state-of-the-art data centers in Amsterdam.

    🔶 Installation fee: Free of charge 🔶 Discount of up to 12% depending on the rental period 🔶 Delivery time: next working day

    Order

    Other articles

    28.11.2024

    OpenWebUI Just Got an Upgrade: What's New in Version 0.4.5?

    OpenWebUI has been updated to version 0.4.5! New features for RAG, user groups, authentication, improved performance, and more. Learn how to upgrade and maximize its potential.

    25.10.2024

    TS3 Manager: What Happens When You Fill in the Documentation Gaps

    Having trouble connecting to TS3 Manager after installing it on your VPS? Managing your TeamSpeak server through TS3 Manager isn't as straightforward as it might seem. Let's troubleshoot these issues together!

    16.09.2024

    10 Tips for Open WebUI to Enhance Your Work with AI

    Unleash the true power of Open WebUI and transform your AI workflow with these 10 indispensable tips.

    27.08.2024

    Comparison of SaaS solutions for online store on Wix and WordPress.com versus an on-premise solution on a VPS with WordPress and WooCommerce

    This article compares the simplicity and cost of SaaS platforms like Wix and WordPress.com versus the flexibility and control of a VPS with WordPress and WooCommerce for e-commerce businesses.

    08.07.2024

    Let's build a customer support chatbot using RAG and your company's documentation in OpenWebUI

    We'll share our journey creating a technical support chatbot designed to assist our front-line team by answering user questions (and eventually becoming a part of our team itself).

    HOSTKEY Dedicated servers and cloud solutions Pre-configured and custom dedicated servers. AMD, Intel, GPU cards, Free DDoS protection amd 1Gbps unmetered port 30
    4.3 67 67
    Upload