---
# System prepended metadata

title: 建置 NVIDIA License server (v1.0)
tags: [Clara, Flexera License server, Parabricks-v3.8, Flexera LS, genomics, License, NVIDIA, Parabricks]

---

建置 NVIDIA License server (v1.0)
===
###### tags: `Parabricks-v3.8`
###### tags: `genomics`, `NVIDIA`, `Clara`, `Parabricks`, `License`, `Flexera License server`, `Flexera LS`

:::success
:golf: **四個步驟**
1. [建置 Apache Tomcat Server (Port: 8080)](#1-建置-Apache-Tomcat-Server)
2. [建置 NVIDIA License Server (Port: 7070)](#2-建置-NVIDIA-License-Server)
3. [前往 NVIDIA 官網，根據 GPU 數量需求，製作 `license_xxx.bin`](#3-前往-NVIDIA-官網，製作-license_xxxbin)
4. [上傳 `license_xxx.bin` 到 NVIDIA License Server](#4-上傳-license_xxxbin-到-NVIDIA-License-Server)
:::

<br>

[TOC]

<br>

## 完整指令
底下是建置 NVIDIA License server 的完整安裝指令，隨後的章節會循序漸進地解說用法。
```bash=
# Step 1: Update Installation Packages.
$ sudo apt-get update

# Step 2: Install Java Runtime Environment.
$ sudo apt install -y default-jre

# Step 3: Install and Run Apache Tomcat Server.
$ sudo apt install -y tomcat9
$ sudo systemctl enable tomcat9.service
$ sudo systemctl start tomcat9.service

# Step 4: Unzip the NVIDIA License Server.
$ sudo apt install -y unzip
$ unzip NVIDIA-ls-linux-*.zip

# Step 5: Run the NVIDIA License Server Setup.
$ cd NVIDIA-ls-linux-*/
$ chmod +x setup.bin
$ sudo ./setup.bin

# Choose Local Tomcat Server Path:
# 
# Specify the path to the folder on the local Apache Tomcat Server 
# that contains the "webapps" folder.
# 
# The default path to this folder is: /usr/share/tomcat
# --------------------------------------------------------
# Enter local Tomcat server path: /var/lib/tomcat9/   <---

# Step 6: check network interfaces and find out the MAC address of the host
$ sudo apt install net-tools
$ ifconfig
$ ifconfig | egrep "[[:alnum:]]{2}(:[[:alnum:]]{2}){5}" -B2
```

<br>

<hr>

<br>

## 1. 建置 Apache Tomcat Server
> - Apache Tomcat Server 是一個 Web 服務 (Web server)，預設使用 8080 埠，首頁位置為 `http://server_ip:8080/`。
> - Apache Tomcat Server 能執行由 Java 語言撰寫的網頁(.jsp 檔)，因此需要安裝 JRE (Java Runtime Environment) 環境才能執行 。
> - NVIDIA License Server 的管理界面是由 Java 語言撰寫(.jsp 檔)，應用程式所在位置為 `http://server_ip:8080/licserver`

### 安裝步驟
```bash=1
# Step 1: Update Installation Packages.
$ sudo apt-get update

# Step 2: Install Java Runtime Environment.
$ sudo apt install -y default-jre

# Step 3: Install and Run Apache Tomcat Server.
$ sudo apt install -y tomcat9
$ sudo systemctl enable tomcat9.service
$ sudo systemctl start tomcat9.service
```

### 查看首頁
- 使用 Web browser 瀏覽 Tomcat Server 首頁
    http://localhost:8080/
    [![](https://i.imgur.com/Ec7VcDG.png)](https://i.imgur.com/Ec7VcDG.png)
    - 遠端桌面模式
        若使用遠端連線查看，則需使用 SSH Tunneling 建立連線，再透過本地端 Web browser 瀏覽。
        ```bash
        $ ssh [user@]10.64.29.7 -L 8080:localhost:8080
        ```
- 或是使用 `curl` 指令查看
    ```bash
    $ curl 10.64.29.7:8080
    $ curl --noproxy '*' 127.0.0.1:8080
    ```
    - 主機 10.64.29.7 的 `no_proxy` 設定不包含 `127.0.0.1` 和 `localhost`，因此需要 `--noproxy` 參數來忽略 proxy 設定。

<br>

<hr>

<br>

## 2. 建置 NVIDIA License Server
> - NVIDIA License Server 是一套軟體授權管理與分發的服務，預設使用 7070 埠。
> - NVIDIA License Server 是架構在 FlexNet 軟體之上，其管理界面為 `http://server_ip:8080/licserver`。
> - 若有更進階的 UI 操作需求，可查看 [[Flexera] License Server Administration
Guide](https://help.hcltechsw.com/commerce/9.1.0/install/pdf/FlexNet%20Embedded%20License%20Server%20Administration%20Guide.pdf)

### 準備 NVIDIA License Server 軟體
1. **前往 [NVIDIA License Portal](https://ui.licensing.nvidia.com/login) 並登錄**
    [![](https://i.imgur.com/uWsE5qy.png)](https://i.imgur.com/uWsE5qy.png)
    
    ---
    
    [![](https://i.imgur.com/cuAA3ZQ.png)](https://i.imgur.com/cuAA3ZQ.png)
    <!-- https://nvid.nvidia.com/siteminderagent/forms/login.fcc -->
2. **下載 NVIDIA License Server 軟體**
    依序點擊：
    - SOFTWARE DOWNLOADS
    - ADDITIONAL SOFTWARE
    - 2022.02 64-bit License Manager for ++**Linux**++
    - AGREE AND DOWNLOAD
    
    [![](https://i.imgur.com/HYOh3Y8.png)](https://i.imgur.com/HYOh3Y8.png)
    
    [![](https://i.imgur.com/JGPgKxv.png)](https://i.imgur.com/JGPgKxv.png)
    
    下載 `NVIDIA-ls-linux-2022.02-2022.02.0.30886060.zip` 檔案到本地端

3. **上傳 NVIDIA License Server 軟體到安裝主機**
    將 `NVIDIA-ls-linux-2022.02-2022.02.0.30886060.zip` 檔案上傳到要安裝的主機
    ```bash
    # 操作範例
    $ scp NVIDIA-ls-linux-2022.02-2022.02.0.30886060.zip asuscloudinfra@10.64.29.7:/tmp
    ```

<br>

### 解壓縮 NVIDIA License Server 軟體
> 在要安裝的主機上操作
> `$ cd /tmp`
```bash=12
# Step 4: Unzip the NVIDIA License Server.
$ sudo apt install -y unzip
$ unzip NVIDIA-ls-linux-*.zip
```

<br>

### 安裝 NVIDIA License Server 軟體
:::warning
:warning: **安裝前的注意事項**

- 安裝 **setup.bin** 過程中，將進行互動式詢問。
- Tomcat server path 請填寫 `/var/lib/tomcat9/`，如下圖所示：
    ![](https://i.imgur.com/EUQ8qh4.png)
- 其餘選項為預設，輸入 `Y` 或 `<ENTER>`
:::
```bash=16
# Step 5: Run the NVIDIA License Server Setup.
$ cd NVIDIA-ls-linux-*/
$ chmod +x setup.bin
$ sudo ./setup.bin

# Choose Local Tomcat Server Path:
# 
# Specify the path to the folder on the local Apache Tomcat Server 
# that contains the "webapps" folder.
# 
# The default path to this folder is: /usr/share/tomcat
# --------------------------------------------------------
# Enter local Tomcat server path: /var/lib/tomcat9/   <---
```

### 查看管理頁面
- 使用 Web browser 瀏覽 NVIDIA License Server 頁面
    http://localhost:8080/licserver
    [![](https://i.imgur.com/n8hH1Io.png)](https://i.imgur.com/n8hH1Io.png)
    <br>
- 或是在主機端測試 API 是否能正常存取
    ```
    $ curl --noproxy '*' localhost:7070/api/1.0/instances/~
    {
      "id" : 1,
      "serverInstanceId" : "BSR4QCPSW1KS",
      "requestId" : "1",
      "tenantId" : "",
      "pendingDeletion" : false,
      "maintenanceEndTime" : "1970-01-01T00:00:00.000Z",
      "suspended" : false,
      "ready" : true,
      "publisherName" : "nvidia",
      "lastUpdateTime" : "2022-08-05T07:40:44.700Z",
      "lastUpdateHostid" : {
        "hostidValue" : "000D3AEC8D99",
        "hostidType" : "ETHERNET"
      },
      "failOverRole" : "MAIN",
      "lastSyncTime" : "1970-01-01T00:00:00.000Z",
      "identityName" : "nvidia-grid",
      "lastClientDropTime" : "1970-01-01T00:00:00.000Z",
      "lastServerToServerSyncTime" : "1970-01-01T00:00:00.000Z"
    }
    ```

:::info
:bulb: **使用遠端桌面模式**
使用遠端連線查看 Tomcat Server 和 NVIDIA License Server，則需使用 SSH Tunneling 建立連線。
```bash
$ ssh [user@]10.64.29.7 -L 8080:localhost:8080 -L 7070:localhost:7070
```

接著再透過本地端 Web browser 瀏覽
- http://localhost:8080/licserver
    [![](https://i.imgur.com/n8hH1Io.png)](https://i.imgur.com/n8hH1Io.png)
    <br>
- http://localhost:7070/api/1.0/instances/~
    [![](https://i.imgur.com/ABaZNOe.png)](https://i.imgur.com/ABaZNOe.png)
:::

<br>

<hr>

<br>

## 3. 前往 NVIDIA 官網，製作 `license_xxx.bin`
1. **再次前往 [NVIDIA License Portal](https://ui.licensing.nvidia.com/)**
2. **製作 `license_xxx.bin`**
    - 點擊 **LICENSE SERVERS** > **CREATE SERVER**
        [![](https://i.imgur.com/2kqx8Jb.png)](https://i.imgur.com/2kqx8Jb.png)
        <br>
    - 查詢主機的 MAC address
        ```bash=30
        # Step 6: check network interfaces and find out the MAC address of the host
        $ sudo apt install net-tools
        $ ifconfig
        $ ifconfig | egrep "[[:alnum:]]{2}(:[[:alnum:]]{2}){5}" -B2
        ```
        - 會列出很多張網卡資訊
            [![](https://i.imgur.com/YgVOfdD.png)](https://i.imgur.com/YgVOfdD.png)
            <br>
        - 再選擇 IP 位址為 `10.64.29.7` 的 MAC Address `e2:d2:c7:2a:94:8f`
            [![](https://i.imgur.com/sQkRJFV.png)](https://i.imgur.com/sQkRJFV.png)
            <br>
    - 填寫 **Basic details**
        [![](https://i.imgur.com/W36VN3v.png)](https://i.imgur.com/W36VN3v.png)
        - 勾選 **Create legacy server**
        - 輸入 **Name**、**Description**、**MAC Address**
        - 點擊 **Next: Failover server configuration(optional)**
            <br>
    - **Failover server configuration(optional)** 設定
        - 略過設定，直接點擊 **Next: Select features**
            <br>
    - **Select features** 設定
        [![](https://i.imgur.com/S1hrgAl.png)](https://i.imgur.com/S1hrgAl.png)
        - 勾選 Entitlements (已購買的授權產品)
        - 數量：在 License Server 上想要配置的 license 數量
             <br>
    - 確認後，即可按建立
        [![](https://i.imgur.com/Cnl5WbX.png)](https://i.imgur.com/Cnl5WbX.png)
        <br>
    - 建立結果
        [![](https://i.imgur.com/eNIWWxO.png)](https://i.imgur.com/eNIWWxO.png)
        - License Server 所需的 `license_xxx.bin` 已經製作完成
            <br>
3. **下載 `license_xxx.bin`**
    <br>
    - 點擊 **LICENSE SERVERS** > **LIST SERVERS** > 剛建立的 License Server
        [![](https://i.imgur.com/P7ME1DX.png)](https://i.imgur.com/P7ME1DX.png)
        <br>
    - 點擊 **Action** > **Download**
        [![](https://i.imgur.com/iQgd6Vg.png)](https://i.imgur.com/iQgd6Vg.png)
        <br>
    - 確認下載，接著會自動下載 **`license_0242AC110002_08-05-2022-14-10-15.bin`**(範例)
        (每次下載，時間戳記都會不同)
        [![](https://i.imgur.com/Ysnlwbu.png)](https://i.imgur.com/Ysnlwbu.png)



<br>

<hr>

<br>

## 4. 上傳 `license_xxx.bin` 到 NVIDIA License Server
1. **使用 Web browser 瀏覽 NVIDIA License Server 頁面**
    http://localhost:8080/licserver
    <br>
2. **選擇 MAC address 為 `e2:d2:c7:2a:94:8f` 的 Server host ID，再按「Save」**
    [![](https://i.imgur.com/xFEw8Fq.png)](https://i.imgur.com/xFEw8Fq.png)
    <br>
3. **上傳 `license_xxx.bin`**
    - 點擊：**License Management** > **Choose File: `license_xxx.bin`** > **Upload**
        [![](https://i.imgur.com/nv0ACyy.png)](https://i.imgur.com/nv0ACyy.png)
        <br>
4. **查看 license 可用額度**
    - 點擊：**Licensed Feature Usage**
        [![](https://i.imgur.com/5oh8Htw.png)](https://i.imgur.com/5oh8Htw.png)
        <br>

<br>

<hr>

<br>

## 5. 前往 Cloud Infra 設置 Flexera Licensing 資訊

### 對 Parabricks 映像檔設置 Flexera Licensing 資訊
1. **前往 Cloud Infra 並登錄**
    https://bioaimaker.nhri.edu.tw/
    <br>
2. **切換到 Administrator 專案**
    [![](https://i.imgur.com/vxTQTwY.png)](https://i.imgur.com/vxTQTwY.png)
    <br>
3. **進入 AI Maker**
    [![](https://i.imgur.com/7CmC2r5.png)](https://i.imgur.com/7CmC2r5.png)
    <br>
4. **點擊左側欄的「容器映像檔」**
    [![](https://i.imgur.com/HdjCzeo.png)](https://i.imgur.com/HdjCzeo.png)
    <br>
5. **將游標移到 notebook 的選單上，並點選「編輯範本」**
    [![](https://i.imgur.com/cDqxO7o.png)](https://i.imgur.com/cDqxO7o.png)
    <br>
6. **新增一筆環境變數，並填入 Flexera Licensing 資訊**
    [![](https://i.imgur.com/BcpUbdX.png)](https://i.imgur.com/BcpUbdX.png)
    (1) 點擊**新增**
    (2) 填入名稱：`PARABRICKS_FLEXERA_SERVER`
    (3) 填入值：`10.64.29.7:7070`
    (4) 點擊**儲存範本**
    <br>
7. **建立新的「容器服務」或「任務容器」，即可看到 Flexera Licensing 資訊**
    - **容器服務** (服務列表 > [運算] 容器服務 > 建立 > 映像檔來源：notebook, 映像檔版本：Parabricks-3.8.0)
        [![](https://i.imgur.com/TCzrkE2.png)](https://i.imgur.com/TCzrkE2.png)
        <br>
    - **任務容器** (服務列表 > [運算] 任務容器 > 建立 > 映像檔來源：notebook, 映像檔版本：Parabricks-3.8.0)
        [![](https://i.imgur.com/2S8fNdt.png)](https://i.imgur.com/2S8fNdt.png)
        <br>

<br>

### 測試 pbrun 連線
1. **切換到非 Administrator 專案**
2. **建立一個容器服務**
    服務列表 > [運算] 容器服務 > 建立 > 映像檔來源：notebook, 映像檔版本：Parabricks-3.8.0
    [![](https://i.imgur.com/jB9NP6P.png)](https://i.imgur.com/jB9NP6P.png)
    <br>
    啟用後，可以在**容器服務日誌**看到底下訊息
    [![](https://i.imgur.com/Zwr29zz.png)](https://i.imgur.com/Zwr29zz.png)
3. **執行 pbrun 指令**
    可執行 pbrun 相關的 single tool 指令或是 pipeline 指令，即可在一開始就能查看 pbrun 是否能正常執行。
    
    若一次使用 4 張 GPU 卡，在 NVIDIA License Server 管理頁面即可看到相關資訊。
    - 連線客戶端資訊
        [![](https://i.imgur.com/bZX3C6J.png)](https://i.imgur.com/bZX3C6J.png)
        <br>
    - License 剩餘數量
        [![](https://i.imgur.com/D3Z5Vcq.png)](https://i.imgur.com/D3Z5Vcq.png)

    

<br>

<hr>

<br>

## FAQ

### 如何查詢 JRE (Java Runtime Environment) 版本？
```bash
$ java -version
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
```

<br>

### 如何變更 Tomcat Server 的 port？
例如將 8080 變更為 8081，需修改 server 的組態檔，其檔案位置為 `/var/lib/tomcat9/conf/server.xml`。修改完後再重啟 Tomcat Server。

**操作過程：**
1. 修改 server 的組態檔
    ```bash
    $ sudo nano /var/lib/tomcat9/conf/server.xml
    ```
    ```xml=62
        <!-- A "Connector" represents an endpoint by which requests are received
             and responses are returned. Documentation at :
             Java HTTP Connector: /docs/config/http.html
             Java AJP  Connector: /docs/config/ajp.html
             APR (HTTP/AJP) Connector: /docs/apr.html
             Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
        -->
        <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    ```
2. 重啟 Tomcat Server
    ```bash
    $ sudo systemctl restart tomcat9.service
    ```

<br>

### 如何變更 NVIDIA License Server 的 port？
例如將 7070 變更為 7071，需修改 server 的組態檔，其檔案位置為 `/opt/flexnetls/nvidia/local-configuration.yaml`。修改完後需再重啟 server，且 licserver 管理界面的 port 也要跟著修改。

**操作過程：**
1. 將 Flexnet License Server 的 port 變更為 7071 (範例)
    ```
    $ sudo nano /opt/flexnetls/nvidia/local-configuration.yaml
    ```
    ```yaml=
    # local-configuration.

    # HTTP listening port. Default is 7070. You can bind to an interface with this syntax: '[127.0.0.1].7070'.
    port: 7071
    ```
2. 重啟 Flexnet License Server，需等候約 30 秒才能完成重啟
    ```
    $ sudo systemctl restart flexnetls-nvidia.service
    ```
3. 修改 Tomcat Server 上 licserver 的管理界面
    - 變更之前，licserver 無法存取原本的 7070 port，存取會有錯誤訊息：
    
        <span style='color: red;'>Connection refused (Connection refused)</span>
        ![](https://i.imgur.com/9fgGcbI.png)
        <br>
        <span style='color: red;'>Connection error: Please make sure the FNE server is up and running</span>
        [![](https://i.imgur.com/ZlelTMZ.png)](https://i.imgur.com/ZlelTMZ.png)
    - 修改 port 為 7071
        點擊 **License Server Manager** > **Settings**
        [![](https://i.imgur.com/Yi8XGZu.png)](https://i.imgur.com/Yi8XGZu.png)
        最後按儲存即生效，就不會出現紅色錯誤訊息。

<br>

### 如何使用遠端桌面模式，查看 NVIDIA License Server 的 Web UI？
若要使用遠端連線查看 Web UI，則需使用 SSH Tunneling 建立連線，再透過本地端 Web browser 來瀏覽 Web UI。

**操作過程：**
1. 開啟 terminal (console mode)，並輸入底下 ssh 指令
    > (適用於 Linux 或是 Windows)
    ```bash
    $ ssh asuscloudinfra@10.64.29.7 -L 8080:localhost:8080
    ```
    ![](https://i.imgur.com/NbhFLUF.png)
 ([圖片來源](https://www.baeldung.com/linux/ssh-tunneling-and-proxying))
    - `-L` 意思為 local, 表示 TCP 通道的方向是從 Client 到 Server (正向)
    - 左邊的 `8080` 表示要存取 Client 端 8080 port
    - 右邊的 `localhost:8080` 表示 SSH Server 要連線的對象
        - `localhost` 表示跟 SSH Server 位於同一台主機上
    - 存取流程：
        - 在 local 端的 Web browser 上輸入 localhost:8080
        - 將連線到 10.64.29.7 (SSH Server)
        - 再連線到 localhost:8080 (Tomcat Server)
            <br>
2. 開啟 Web Browser 瀏覽
    - **http://localhost:8080/**
        [![](https://i.imgur.com/Ec7VcDG.png)](https://i.imgur.com/Ec7VcDG.png)
        <br>
    - **http://localhost:8080/licserver**
        [![](https://i.imgur.com/AaDMpQA.png)](https://i.imgur.com/AaDMpQA.png)

<br>

### pbrun 所使用的授權，如何以手動方式，從 non-Flexera-based 模式切到 Flexera-based 模式？
:::info
- **non-Flexera-based 模式**
    pbrun 直接存取安裝目錄下的 `license.bin` 檔案 (具有一定期限的授權檔案)
- **Flexera-based 模式**
    pbrun 以連線方式，向 license server 要授權，使用完會歸還授權
:::
:::warning
:warning: **這兩種授權模式無法並存，只能擇一，否則會有錯誤**
> Cannot use separate license.bin in conjunction with flexera licensing. Either remove the separate license.bin or remove the flexera server line from the installation config.txt
> Exiting...
> 
> Could not run fq2bam
> Exiting pbrun ...
:::

**操作過程：**
1. 將 `license.bin` 移除、或命名成其他檔名
    ```bash
    $ rm /usr/local/parabricks/license.bin
    # or
    $ mv /usr/local/parabricks/license.bin \
         /usr/local/parabricks/license.bin.bak
    ```
2. 在 `config.txt` 中添加 flexera licensing 資訊
    ```bash
    $ echo "flexera-server:10.64.29.7:7070" >> /usr/local/parabricks/config.txt
    ```
    - `config.txt` 檔案中可允許空白行

<br>

### pbrun 所使用的授權，如何以手動方式，從 Flexera-based 模式切到 non-Flexera-based 模式？
:::info
- **non-Flexera-based 模式**
    pbrun 直接存取安裝目錄下的 `license.bin` 檔案 (具有一定期限的授權檔案)
- **Flexera-based 模式**
    pbrun 以連線方式，向 license server 要授權，使用完會歸還授權
:::
:::warning
:warning: **這兩種授權模式無法並存，只能擇一，否則會有錯誤**
> Cannot use separate license.bin in conjunction with flexera licensing. Either remove the separate license.bin or remove the flexera server line from the installation config.txt
> Exiting...
> 
> Could not run fq2bam
> Exiting pbrun ...
:::

**操作過程：**
1. 將 flexera licensing 資訊從 `config.txt` 中移除
    ```bash
    # find the keyword 'flexera-server' and remove the line
    $ sed --in-place /flexera-server/d /usr/local/parabricks/config.txt
    ```
    - 或是直接編輯 `config.txt` 檔案，刪除 `flexera-server:10.64.29.7:7070` (可允許空白行)
        ```
        $ nano /usr/local/parabricks/config.txt
        ```
        
    
2. 將 `license.bin` 複製到 pbrun 安裝目錄下
    ```bash
    $ cp license.bin /usr/local/parabricks/
    ```

<br>

### 如何反安裝 Flexera License Server 軟體？
> 資料來源：7.2. Uninstalling the NVIDIA vGPU Software License Server on Linux

```bash=
$ cd /opt/flexnetls/nvidia/
$ sudo ./Change\ License\ Server\ Installation
```
- :::spoiler 反安裝過程
    ```
    $ sudo ./Change\ License\ Server\ Installation
    ===============================================================================
    License Server                                   (created with InstallAnywhere)
    -------------------------------------------------------------------------------

    Preparing CONSOLE Mode Uninstallation...


    ===============================================================================
    Uninstall License Server
    ------------------------

    About to uninstall...

    License Server

    This will remove features installed by InstallAnywhere.  It will not remove 
    files and folders created after the installation.

    PRESS <ENTER> TO CONTINUE: 


    Stopping NVIDIA License Server

    Executing NVIDIA License Server's uninstall script



    ===============================================================================
    Uninstalling...
    ---------------

    ...

    ...*
    *
    *************************
    *************************
    *************************
    *************************



    ===============================================================================
    Uninstall Complete
    ------------------

    All items were successfully uninstalled.
    ```
    :::

:::warning
:warning: 注意事項：
1. 資料夾 `/opt/flexnetls/nvidia` 會只剩 Logs
    ![](https://i.imgur.com/P3Nr3e1.png)

:::

<br>

### 如何在管理介面，設定帳號和密碼？
[![](https://i.imgur.com/zEknDPp.png)](https://i.imgur.com/zEknDPp.png)

1. **啟用帳號和密碼**
    ```bash=
    # 連線到主機 10.64.29.7 上進行操作

    # 設定 flexera server 的 IP & port 
    $ export FLEXNETLS_BASEURL=http://localhost:7070/api/1.0/instances/~

    # 切換到 flexera enterprise 目錄下
    $ cd /opt/flexnetls/nvidia/enterprise

    # 啟用 security 設定
    $ ./nvidialsadmin.sh -config -set security.enabled=true
    ```
    - 使用管理者**帳號**與**預設密碼**，即可登入成功
        - 帳號：`admin`
        - 密碼：`Admin@123`
        - 登入結果
            [![](https://i.imgur.com/92Wbyj9.png)](https://i.imgur.com/92Wbyj9.png)
        <br>
2. **變更管理者密碼**
    ```bash
    $ ./nvidialsadmin.sh -authorize admin your_current_password -users -edit admin your_new_password
    ```
    - `your_current_password`: 為當前的密碼 `Admin@123`
    - `your_new_password`: 新的密碼
    - 範例：將 `Admin@123` 密碼，變更為 `nhri@123`
        ```
        $ ./nvidialsadmin.sh -authorize admin Admin@123 -users -edit admin nhri@123
        ```
3. **關閉帳號和密碼**
    ```bash
    # 關閉 security 設定
    $ ./nvidialsadmin.sh -authorize admin your_admin_password -config -set security.enabled=false
    
    # 重啟 Flexera License Server 
    $ sudo systemctl restart tomcat9.service
    $ sudo systemctl restart flexnetls-nvidia.service
    ```
    - `your_admin_password`: 為管理者密碼
        <br>
    :::warning
    :warning: **管理者帳號和密碼再度啟用時**
    
    1. 當管理者的帳號和密碼再度啟用時，密碼為最後一次變更的密碼，並非是預設的`Admin@123`。因此，請務必妥善保管 ==**管理者密碼**==。
    2. 建議在關閉帳號和密碼前，將管理者密碼還原為 `Admin@123` (預設密碼)。
    :::

:::warning
:warning: **登入空窗期**

文件 **3.1.1. Enabling Administrative Security for the License Server** 有提到：
> **(PDF 第45/130頁)**
> After a user has logged into the license server management interface through a web browser, other users can access the license server through a browser at the same URL without the need to log in for up to 30 minutes after the first successful login. After 30 minutes, any user must log in again to access the license server management interface through a web browser.

任一用戶在登錄後 30 分鐘內，其他用戶可以不用登錄即可使用。
:::

<br>

<hr>

<br>

## 錯誤排解
### Capability response host ID does not match.
> 情境：網卡太多張，不知道要選那張；選錯張導致 MAC address 不和 host ID 匹配。
> 

[![](https://i.imgur.com/2w7uWtl.png)](https://i.imgur.com/2w7uWtl.png)

錯誤訊息:
>  "key" : "Capability response host ID does not match. Expected 000D3AEC8D99/Ethernet, got 0242AC110002/Ethernet", "message" : "Capability response host ID does not match. Expected 000D3AEC8D99/Ethernet, got 0242AC110002/Ethernet"]

點擊 **Configuration**，查閱 Server host ID: `000D3AEC8D99`
[![](https://i.imgur.com/Eeu2d5T.png)](https://i.imgur.com/Eeu2d5T.png)

其對應的 MAC address 為 `00:0D:3A:EC:8D:99`，再拿此 MAC 重新製作 `license_xxx.bin` 即可。

<br>

### License file license.bin not found in installation folder
```bash
$ pbrun licenseinfo
Please visit https://docs.nvidia.com/clara/#parabricks for detailed documentation

License file license.bin not found in installation folder or passed in as argument
For technical support visit https://docs.nvidia.com/clara/parabricks/3.8.0/index.html#how-to-get-help
Exiting...

Could not run licenseinfo
Exiting pbrun ...
```
解法：將 `license.bin` 複製到 pbrun 安裝目錄下
```bash
$ cp license.bin /usr/local/parabricks/
```

<br>

### HTTP response code said error (503) 
> [PB Warning 2022-Aug-12 15:37:41][FlexeraClient.cpp:606] Error: failed server communication: err 0x74000008 sys 0x1f7: [1,7df,3,0[74000008,1f7,110001d0]] Generic communications error.
[1,7df,3,0[75000005,503,300101ab]] An HTTP error was returned from the server. HTTP response code said error (503) 

:::warning
需檢查 NVIDIA License Server 是否能正常存取，可從應用層服務檢查到底層服務。
:::
- http://localhost:7070/api/1.0/instances/~
    [![](https://i.imgur.com/ABaZNOe.png)](https://i.imgur.com/ABaZNOe.png)
    若能看到此畫面，表示特定 API 處於服務中。
    <br>
- http://localhost:7070/
    [![](https://i.imgur.com/lP9EskL.png)](https://i.imgur.com/lP9EskL.png)
    若能看到此畫面，表示一般 API 處於服務中。
    <br>
- 在主機端執行 `$ sudo systemctl status flexnetls-nvidia.service`
    [![](https://i.imgur.com/iQlcw5O.png)](https://i.imgur.com/iQlcw5O.png)
    若能看到 <span style="color:green">**active (running)**</span> 訊息，表示 server 正在服務中。

<br>

<hr>

<br>

## 參考資料
- ### [Flexera License, Docker Container / Step 4: Setup the Flexera license server](https://docs.nvidia.com/clara/parabricks/3.8.0/GettingStarted/FlexeraDocker.html#step-4-setup-the-flexera-license-server)

- ### [FlexNet Embedded 2018 R2 SP3 License Server Administration Guide](https://help.hcltechsw.com/commerce/9.1.0/install/pdf/FlexNet%20Embedded%20License%20Server%20Administration%20Guide.pdf)
    [![](https://i.imgur.com/eHguKCy.png)](https://i.imgur.com/eHguKCy.png)

<br>
