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
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
|
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
.jarfile runs immediately with Java 17;a
.jnlpfile 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
.jarfiles 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
.jardownloaded in the browser is run immediately with Java 17, and a.jnlpis handed to OpenWebStart, with no download prompt and no extra click — the same experience as.icafiles 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 releaseRelease (
:vX.Y.Z) – always tracks the latest build of this versionBuild (
:vX.Y.Z-N) – a specific, frozen weekly buildImage (
:<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)