Java 17 OpenJDK

The Java 17 OpenJDK image is Reemo’s reference solution for running and remotely distributing Java applications, including Java Web Start (JNLP) applications. It integrates Eclipse Temurin 17 (OpenJDK), a 100% open source distribution, and the OpenWebStart launcher for .jnlp files. No Oracle license is required.

Since version 2.0.0, the image is built on the same base as the HTTPS Bastion and uses its locked-down browser (ungoogled-Chromium), which replaces Firefox. It is therefore configured with the same deployment fields.

Template

This template can be imported from the Images page in the administration interface. Refer to the Image import and export section for the import and update procedure.

{
  "name": "Java17openjdk",
  "type": "IMAGE",
  "comments": "",
  "reference": "registry.reemo.io/reemosbjava17openjdk",
  "icon": "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 725 140\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;\">\n    <g transform=\"matrix(1,0,0,1,-0.00001,-0)\">\n        <g id=\"Image\" transform=\"matrix(0.202775,0,0,0.202775,81.655131,28.777587)\">\n            <g id=\"text170\">\n                <path id=\"path173\" d=\"M-39.489,123.681C-39.489,227.681 -57.622,301.814 -93.889,346.081C-129.622,390.348 -173.355,412.481 -225.089,412.481C-280.555,412.481 -324.022,390.614 -355.489,346.881C-386.955,302.614 -402.689,233.281 -402.689,138.881C-402.689,47.148 -385.622,-22.452 -351.489,-69.919C-316.822,-117.919 -272.022,-141.919 -217.089,-141.919C-162.689,-141.919 -119.489,-119.786 -87.489,-75.519C-55.489,-31.252 -39.489,35.148 -39.489,123.681ZM-334.689,123.681C-334.689,202.081 -324.555,260.748 -304.289,299.681C-284.022,338.081 -255.489,357.281 -218.689,357.281C-184.555,357.281 -157.622,339.148 -137.889,302.881C-117.622,266.081 -107.489,211.414 -107.489,138.881C-107.489,65.281 -118.155,9.281 -139.489,-29.119C-160.289,-68.052 -189.089,-87.519 -225.889,-87.519C-257.355,-87.519 -283.489,-69.119 -304.289,-32.319C-324.555,4.481 -334.689,56.481 -334.689,123.681Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/>\n                <path id=\"path175\" d=\"M41.262,542.881L41.262,7.681L90.862,7.681L96.462,50.081C113.528,36.214 130.595,24.748 147.662,15.681C165.262,6.614 181.528,2.081 196.462,2.081C229.528,2.081 256.462,18.881 277.262,52.481C298.595,85.548 309.262,129.281 309.262,183.681C309.262,251.948 294.595,306.881 265.262,348.481C236.462,390.081 195.128,410.881 141.262,410.881L123.662,410.881C113.528,409.281 106.062,408.214 101.262,407.681L101.262,542.881L41.262,542.881ZM150.062,365.281C180.995,365.281 204.728,350.614 221.262,321.281C238.328,291.948 246.862,253.014 246.862,204.481C246.862,158.614 240.195,121.814 226.862,94.081C213.528,65.814 195.928,51.681 174.062,51.681C163.928,51.681 152.462,55.948 139.662,64.481C126.862,73.014 114.062,83.681 101.262,96.481L101.262,354.081C109.262,357.814 117.262,360.748 125.262,362.881C133.795,364.481 142.062,365.281 150.062,365.281Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/>\n                <path id=\"path177\" d=\"M430.012,214.081L430.012,225.281C430.012,270.614 438.012,304.481 454.012,326.881C470.012,348.748 491.878,359.681 519.612,359.681C537.212,359.681 554.278,357.814 570.812,354.081C587.345,349.814 603.078,344.481 618.012,338.081L629.212,374.081C608.945,385.814 588.145,394.881 566.812,401.281C546.012,407.681 524.678,410.881 502.812,410.881C458.012,410.881 424.145,395.414 401.212,364.481C378.278,333.014 366.812,283.948 366.812,217.281C366.812,147.948 378.812,94.881 402.812,58.081C426.812,21.281 461.212,2.881 506.012,2.881C548.678,2.881 579.878,19.148 599.612,51.681C619.878,83.681 630.012,137.814 630.012,214.081L430.012,214.081ZM570.812,152.481C570.812,119.948 565.212,94.081 554.012,74.881C542.812,55.681 525.478,46.081 502.012,46.081C480.678,46.081 463.345,58.081 450.012,82.081C436.678,105.548 430.012,135.148 430.012,170.881L570.812,170.881L570.812,152.481Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/>\n                <path id=\"path179\" d=\"M768.362,7.681L773.962,50.881C789.962,37.548 807.562,26.081 826.762,16.481C845.962,6.881 863.296,2.081 878.762,2.081C911.296,2.081 936.096,15.414 953.162,42.081C970.229,68.214 978.762,113.014 978.762,176.481L976.362,404.481L916.362,404.481L917.962,192.481C917.962,140.748 913.162,104.214 903.562,82.881C893.962,61.548 878.762,50.881 857.962,50.881C845.696,50.881 832.629,55.414 818.762,64.481C804.896,73.548 791.562,84.214 778.762,96.481L778.762,404.481L718.762,404.481L718.762,7.681L768.362,7.681Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/>\n            </g>\n            <g id=\"text380\">\n                <path id=\"path286\" d=\"M1070.661,542.881L1020.261,498.081C1037.328,476.748 1048.794,452.748 1054.661,426.081C1060.528,399.414 1063.461,367.948 1063.461,331.681L1063.461,-135.519L1171.461,-135.519L1171.461,351.681C1171.461,394.348 1163.461,431.681 1147.461,463.681C1131.994,495.681 1106.394,522.081 1070.661,542.881Z\" style=\"fill:rgb(83,130,161);fill-rule:nonzero;stroke:black;stroke-opacity:0;stroke-width:1px;\"/>\n                <path id=\"path288\" d=\"M1396.071,407.681C1382.204,407.681 1359.004,407.148 1326.471,406.081C1294.471,405.014 1277.404,404.481 1275.271,404.481L1275.271,-135.519L1419.271,-137.119C1500.337,-137.119 1560.604,-114.452 1600.071,-69.119C1640.071,-23.786 1660.071,38.348 1660.071,117.281C1660.071,211.681 1638.471,283.681 1595.271,333.281C1552.071,382.881 1485.671,407.681 1396.071,407.681ZM1409.671,-45.919L1383.271,-45.919L1383.271,314.081L1415.271,315.681C1456.871,315.681 1488.604,301.014 1510.471,271.681C1532.871,242.348 1544.071,194.614 1544.071,128.481C1544.071,71.414 1533.671,28.214 1512.871,-1.119C1492.071,-30.986 1457.671,-45.919 1409.671,-45.919Z\" style=\"fill:rgb(83,130,161);fill-rule:nonzero;stroke:black;stroke-opacity:0;stroke-width:1px;\"/>\n                <path id=\"path290\" d=\"M1987.88,404.481L1848.68,158.081L1848.68,404.481L1740.68,404.481L1740.68,-135.519L1848.68,-135.519L1848.68,90.881L1989.48,-135.519L2112.68,-135.519L1936.68,105.281L2122.28,404.481L1987.88,404.481Z\" style=\"fill:rgb(83,130,161);fill-rule:nonzero;stroke:black;stroke-opacity:0;stroke-width:1px;\"/>\n            </g>\n        </g>\n    </g>\n<g transform=\"translate(521,-3) scale(0.82)\"><path d=\"M 29.921875,127.91992 H 58.144531 V 47.817383 L 29.174805,53.793945 V 32.045898 L 57.978516,26.069336 H 88.359375 V 127.91992 H 116.58203 V 150 H 29.921875 Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/><path d=\"m 139.6582,26.069336 h 93.38379 V 44.082031 L 184.73145,150 H 153.60352 L 199.34082,49.560547 H 139.6582 Z\" style=\"fill:rgb(231,111,0);fill-rule:nonzero;\"/></g>\n</svg>",
  "config": [
    {
      "conditionOp": "EQUAL",
      "conditionVal": "allowlist",
      "conditionVar": "REEMO_FILTER_LOGIC",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Only these are reachable; everything else is blocked. Comma-separated. Accepts bare domains (reemo.io = that host only), wildcard subdomains (*.github.com), full URLs with a path prefix (https://site.com/app), or URL globs (*://*.cdn.net/*).",
      "name": "Allowed Websites",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 830,
      "value": "",
      "variable": "REEMO_ALLOWLIST",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "allowlist",
      "conditionVar": "REEMO_FILTER_LOGIC",
      "defaultValue": "false",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Lets a site download a file it builds in the browser itself (client-side CSV, PDF or ZIP exports). Those carry no host name, so no Allowed Websites entry can match them: without this, the export button appears to do nothing.",
      "name": "Downloads generated by the page",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 825,
      "value": "",
      "variable": "REEMO_ALLOW_GENERATED_DOWNLOADS",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Enabled",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "true",
      "variable": "REEMO_ALLOW_GENERATED_DOWNLOADS",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Disabled",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 5,
      "value": "false",
      "variable": "REEMO_ALLOW_GENERATED_DOWNLOADS",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "blocklist",
      "conditionVar": "REEMO_FILTER_LOGIC",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "These are blocked; everything else is allowed. Same formats as allowlist: bare domains, *.subdomain wildcards, full URLs with a path prefix, or URL globs.",
      "name": "Blocked Websites",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 820,
      "value": "",
      "variable": "REEMO_BLOCKLIST",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Allowlist (deny by default)",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "allowlist",
      "variable": "REEMO_FILTER_LOGIC",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "BLANK",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "What a new tab shows.",
      "name": "New Tab Page",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 900,
      "value": "",
      "variable": "REEMO_NEW_TAB",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Reemo",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 50,
      "value": "#896FFB",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "5",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "5",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "external",
      "conditionVar": "REEMO_PROXY_MODE",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "All browser traffic is routed through this upstream proxy, as host:port (e.g. proxy.corp.local:3128).",
      "name": "Upstream Proxy (host:port)",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 810,
      "value": "",
      "variable": "REEMO_EXTERNAL_PROXY",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "custom",
      "conditionVar": "REEMO_NEW_TAB",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "URL opened on each new tab.",
      "name": "New Tab URL",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 890,
      "value": "",
      "variable": "REEMO_NEW_TAB_URL",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "2",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 40,
      "value": "2",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "1",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 50,
      "value": "1",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Direct connection (no proxy)",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 5,
      "value": "direct",
      "variable": "REEMO_PROXY_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Navy",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "#0a3d62",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "External proxy (upstream)",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 15,
      "value": "external",
      "variable": "REEMO_PROXY_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Dark",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 5,
      "value": "#1e1e1e",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "URL filtering (allow / block websites)",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "filter",
      "variable": "REEMO_PROXY_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "direct",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "How the browser reaches the web. Direct: no proxy. URL filtering: route through a local proxy that allows or blocks websites. External proxy: route all traffic through an upstream proxy.",
      "name": "Proxy Mode",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 850,
      "value": "",
      "variable": "REEMO_PROXY_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Custom URL",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "custom",
      "variable": "REEMO_NEW_TAB",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "4",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "4",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Blank page",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "BLANK",
      "variable": "REEMO_NEW_TAB",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "url",
      "conditionVar": "REEMO_HOME_MODE",
      "defaultValue": "https://reemo.io",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Page loaded when the session starts.",
      "name": "Start URL / Homepage",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 1000,
      "value": "",
      "variable": "REEMO_HOME",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Black",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "#000000",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Blocklist (allow by default)",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 5,
      "value": "blocklist",
      "variable": "REEMO_FILTER_LOGIC",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "filter",
      "conditionVar": "REEMO_PROXY_MODE",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Allowlist: block everything except the listed websites. Blocklist: allow everything except the listed websites.",
      "name": "Filtering Logic",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 840,
      "value": "",
      "variable": "REEMO_FILTER_LOGIC",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "Bookmarks",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Name of the bookmarks folder shown in the bar.",
      "name": "Bookmarks Folder Name",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 520,
      "value": "",
      "variable": "REEMO_BOOKMARKS_NAME",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "#896FFB",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": null,
      "name": "Background Color",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 490,
      "value": "",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "White",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "#ffffff",
      "variable": "REEMO_BACKGROUND_COLOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Bookmarks as Name|URL pairs, comma-separated (e.g. Reemo|https://reemo.io,Docs|https://docs.reemo.io).",
      "name": "Bookmarks",
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 510,
      "value": "",
      "variable": "REEMO_BOOKMARKS",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "5",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": null,
      "name": "Monitor Limit",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 480,
      "value": "",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "3",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "3",
      "variable": "REEMO_LIMIT_MONITOR",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Allows the browser to resolve and display URLs using the local file:// protocol.",
      "name": "Local file navigation (file://)",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 805,
      "value": "",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Enabled",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "true",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Disabled",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 5,
      "value": "false",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "fr",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Keyboard layout for the session.",
      "name": "Keyboard",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 470,
      "value": "",
      "variable": "REEMO_KEYMAP",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "English",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "us",
      "variable": "REEMO_KEYMAP",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "French",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "fr",
      "variable": "REEMO_KEYMAP",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Sweden",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "sv",
      "variable": "REEMO_KEYMAP",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "Europe/Paris",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Time zone for the session.",
      "name": "Timezone",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 460,
      "value": "",
      "variable": "REEMO_TIMEZONE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Europe/Paris",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "Europe/Paris",
      "variable": "REEMO_TIMEZONE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Europe/London",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "Europe/London",
      "variable": "REEMO_TIMEZONE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Europe/Stockholm",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "Europe/Stockholm",
      "variable": "REEMO_TIMEZONE",
      "optional": false
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "html",
      "conditionVar": "REEMO_HOME_MODE",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Paste raw HTML to use as the session start page. The page is served locally and hardened: scripts and remote resources are disabled, so images must be inlined as data: URIs. Keep it under ~128 KB.",
      "name": "Custom Homepage (HTML)",
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 995,
      "value": "",
      "variable": "REEMO_CUSTOM_HTML",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Same as start page",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 15,
      "value": "CUSTOM_HTML",
      "variable": "REEMO_NEW_TAB",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "url",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "What the session opens on. URL: a normal web address. Custom HTML page: paste your own HTML below.",
      "name": "Start Page",
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 1010,
      "value": "",
      "variable": "REEMO_HOME_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "URL",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "url",
      "variable": "REEMO_HOME_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": false,
      "hint": null,
      "name": "Custom HTML page",
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "html",
      "variable": "REEMO_HOME_MODE",
      "optional": false
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Certificate authority to trust, in PEM format (-----BEGIN CERTIFICATE-----). For internal sites signed by your own CA, or an upstream proxy that inspects TLS. Paste the whole chain if there are several. Convert DER/PFX first.",
      "name": "CA Certificate",
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 800,
      "value": "",
      "variable": "REEMO_CERT",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Client certificate presented to sites that require one (mTLS), in PEM format. RSA or EC. Needs the matching private key below.",
      "name": "User Certificate",
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 790,
      "value": "",
      "variable": "REEMO_USER_CERT",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "editable": true,
      "hint": "Private key matching the client certificate above, in PEM format and unencrypted (no passphrase).",
      "name": "User Key",
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 780,
      "value": "",
      "variable": "REEMO_USER_KEY",
      "optional": true
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "editable": true,
      "hint": "Sites whose JNLP applications run without the security prompt (OpenWebStart exception list). Comma-separated full URLs, e.g. https://app.example.com,https://intranet.example.com:8443",
      "name": "Java URL exception list",
      "placeholder": "(,) separated. Example : https://reemo.io,https://reemo.fr",
      "type": "STRING",
      "uiPriority": 770,
      "value": "",
      "variable": "REEMO_JAVA_ALLOWLIST",
      "optional": true,
      "volumeName": null,
      "volumeTarget": null,
      "volumeStorageClass": null,
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null
    }
  ],
  "links": [],
  "usePushNotifications": false,
  "assignableToProvider": true,
  "os": null,
  "vmStartMode": null,
  "vmCreationMode": null,
  "vmCreationDate": null,
  "vmPersistentDisk": null,
  "official": false
}

Configuration and deployment

Image information

  • Image:

registry.reemo.io/reemosbjava17openjdk:latest
  • Internal browser: ungoogled-Chromium

  • Java: Eclipse Temurin 17 (OpenJDK) and OpenWebStart

Fields shared with the HTTPS Bastion

The browser in this image is the HTTPS Bastion browser. The following fields therefore work exactly as they do on that image. See the HTTPS Bastion page for the details of each one.

Field

Purpose

Start Page, Start URL / Homepage, Custom Homepage (HTML)

Page shown when the session opens: a web address or a custom HTML page.

New Tab Page, New Tab URL

Content of a new tab.

Proxy Mode, Filtering Logic, Allowed Websites, Blocked Websites, Upstream Proxy (host:port)

Filtering of reachable websites, or routing of traffic through an enterprise proxy.

Downloads generated by the page

In allowlist mode, lets an allowed site hand over a file it builds itself (CSV, PDF or ZIP export).

Local file navigation (file://)

Access to file:// addresses. Disabled by default.

Bookmarks, Bookmarks Folder Name

Bookmarks enforced in the browser bar.

Monitor Limit, Background Color, Keyboard, Timezone

Session settings.

CA Certificate, User Certificate, User Key

Custom certificate authority and client certificate (mTLS), in PEM format.

Allowing Java Web Start applications

The Java URL exception list field is specific to this image. It lists the sites whose JNLP applications run without the OpenWebStart security prompt.

Field

Description

Java URL exception list

Full URLs separated by commas, for example https://app.example.com,https://intranet.example.com:8443.

Important

Enter the addresses of all the sources the JNLP application requests, not only the one serving the .jnlp file: application servers, CDNs and certificate servers.

Note

The addresses in this field do not replace navigation filtering. If the session filters websites, a site must also be allowed in Allowed Websites for the user to reach it.

Usage guide

Opening the session

When the Reemo session opens, the browser starts on the page set by Start Page. No installation or configuration is required from the user.

Launching a Java application

A Java file downloaded in the session starts with no download prompt and no extra click:

  • a .jar file runs immediately with Java 17;

  • a .jnlp file is handed to OpenWebStart, which runs it on the container’s Java virtual machine.

Only sites allowed by the deployment can provide these files.

The rest of the usage (windows, entering credentials from the Reemo portal, file transfer) is the same as on the HTTPS Bastion.

Security constraints

The browser is permanently locked down, as on the HTTPS Bastion: no access to settings, no developer tools, Reemo extensions locked.

Logging and traceability

To meet audit and compliance requirements, the image centralizes its events in the container’s standard streams. Two dimensions are continuously audited:

  • Web browsing: every request issued by the browser (method and URL) is recorded, including HTTPS sites. Filtering and logging are handled by the browser itself, without decrypting traffic. Each line carries the identity of the Reemo user who started the session.

  • Application activity (Java clicks): the agent integrated into the Java virtual machine records each graphical interaction within the application in real time (clicks on buttons, tabs and menus), for .jar files as well as JNLP applications. For security, text input and passwords are strictly excluded from this audit.

The logs can be used directly by your log centralization tools.

Changelog

v2.0.0 (2026-11-06)

Changed

  • Built on the Reemo base image, with the HTTPS Bastion browser. The Java 17 image now starts from the shared Reemo desktop base and uses the same locked- down browser as the HTTPS Bastion (ungoogled-Chromium) instead of Firefox. The desktop, the screens, the keyboard, the time zone, the certificates and the log format are the ones every Reemo image shares; URL filtering, the custom start page, bookmarks, credential injection, the navigation audit and file transfer behave exactly as on the HTTPS Bastion and use its deployment fields. Java itself is unchanged: Eclipse Temurin 17 (OpenJDK), OpenWebStart for JNLP applications, and the in-application click audit.

Added

  • Downloaded Java applications start by themselves. A .jar downloaded in the browser is run immediately with Java 17, and a .jnlp is handed to OpenWebStart, with no download prompt and no extra click — the same experience as .ica files on the Citrix image. Only sites the deployment allows can provide them, and the click audit covers both kinds of application.

Removed

  • Firefox and the intercepting proxy. Navigation is now filtered and logged by the browser itself, without decrypting the traffic.

v1.0.0 (2026-06-19)

First public release of the Java 17 OpenJDK Reemo image.

Added

  • Open-source Java Web Start runtime. Eclipse Temurin 17 (OpenJDK) and OpenWebStart as the JNLP launcher — no Oracle production license required.

  • In-session activity audit. Clicks and activations inside JNLP applications are traced (component type, name and label) and forwarded to container logs. No keystrokes, text fields or passwords are ever captured, and no data is written to disk.

  • Navigation logging enabled by default: full HTTPS URLs are recorded through a transparent proxy.

  • Unified log format across all subsystems with per-line Reemo user attribution, making it straightforward to correlate events with a specific session.

Versions

Images published on registry.reemo.io/reemosbjava17openjdk. Each build exposes these pullable tags:

  • Latest (:latest) – the latest published release

  • Release (:vX.Y.Z) – always tracks the latest build of this version

  • Build (:vX.Y.Z-N) – a specific, frozen weekly build

  • Image (:<id>) – immutable reference to this exact build

Example: docker pull registry.reemo.io/reemosbjava17openjdk:vX.Y.Z-N

v2.0.0-1 (2026-11-09)

Release

v2.0.0

Build

v2.0.0-1

Image

d64aaa78bb2f

Digest

sha256:d64aaa78bb2f2179a2ed6eb3f73253ff425a0010de858e92b2e186ed90da1d51

Applications

Chromium 156.0.8078.73, Java 17 (Temurin) 17.0.21

Reemo Agent

2.14.0

OS

Debian GNU/Linux 13 (trixie)

Size

767.54 MB

Patched CVEs

first release (no comparison)