Light Desktop

Le Light Desktop Reemo est un bureau Linux complet, exposé de manière sécurisée via une session Reemo directement dans le navigateur de l’utilisateur. Il embarque un navigateur, la suite bureautique ONLYOFFICE, un lecteur PDF, un gestionnaire d’archives et le gestionnaire de mots de passe KeePass.

À la différence des autres images du catalogue, qui publient une application, celle-ci publie le bureau lui-même : aucune application n’est lancée au démarrage, l’utilisateur ouvre celles dont il a besoin, dispose ses fenêtres et conserve ses fichiers.

Ce guide couvre d’abord le déploiement (côté administrateur), puis l’usage au quotidien (côté utilisateur final).

Template

Ce gabarit est importable depuis la page Images de l’interface d’administration. Reportez-vous à la section Import et export d’images pour la procédure d’importation et de mise à jour.

{
  "name": "Light Desktop",
  "type": "ALU",
  "comments": "Light Desktop: XFCE + ONLYOFFICE + Chromium + 7zip + KeePass + PDF viewer. Optional persistent home directory.",
  "reference": "registry.reemo.io/reemosblightdesktop",
  "icon": "<svg width=\"512\" height=\"512\" viewBox=\"0 0 512 512\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <rect x=\"50\" y=\"150\" width=\"412\" height=\"300\" rx=\"20\" fill=\"#2496ED\"/>\n    <path d=\"M50 150L256 50L462 150\" stroke=\"#1D84D1\" stroke-width=\"10\" stroke-linejoin=\"round\"/>\n    \n    <rect x=\"120\" y=\"200\" width=\"272\" height=\"180\" rx=\"10\" fill=\"white\"/>\n    <rect x=\"135\" y=\"215\" width=\"242\" height=\"130\" rx=\"5\" fill=\"#f0f0f0\"/>\n    \n    <rect x=\"135\" y=\"325\" width=\"242\" height=\"20\" rx=\"2\" fill=\"#3D4C5F\"/>\n    \n    <circle cx=\"160\" cy=\"245\" r=\"15\" fill=\"#DE3121\"/> <circle cx=\"210\" cy=\"245\" r=\"15\" fill=\"#4285F4\"/> <circle cx=\"260\" cy=\"245\" r=\"15\" fill=\"#6FB342\"/> <rect x=\"236\" y=\"380\" width=\"40\" height=\"30\" fill=\"white\"/>\n    <rect x=\"196\" y=\"410\" width=\"120\" height=\"10\" rx=\"5\" fill=\"white\"/>\n</svg>",
  "config": [
    {
      "conditionOp": "EQUAL",
      "conditionVal": "true",
      "conditionVar": "REEMO_PERSISTENT_SESSION",
      "defaultValue": null,
      "editable": true,
      "hint": "Disk mounted on the user home directory: desktop files, downloads, browser profile and KeePass database survive the session.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Persistent Disk",
      "optional": false,
      "placeholder": null,
      "type": "VOLUME",
      "uiPriority": 1100,
      "value": "",
      "variable": "REEMO_PERSISTENT_HOME",
      "volumeAccessMode": "READ_WRITE_ONCE",
      "volumeMode": "FILESYSTEM",
      "volumeName": "home",
      "volumeRequestSize": 10,
      "volumeRequestSizeOverhead": 8,
      "volumeStorageClass": "csi-rbd",
      "volumeTarget": "/home/reemo/"
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "reemo",
      "editable": true,
      "hint": "Look of the desktop: Reemo (dark) or Windows-like (light theme, blue wallpaper).",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Desktop Appearance",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 1090,
      "value": "",
      "variable": "REEMO_DESKTOP_THEME",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Reemo",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "reemo",
      "variable": "REEMO_DESKTOP_THEME",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Windows-like",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "windows",
      "variable": "REEMO_DESKTOP_THEME",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Folders created on the desktop. Letters, digits and spaces only, comma-separated.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Desktop Folders",
      "optional": true,
      "placeholder": "Documents,Projects",
      "type": "STRING",
      "uiPriority": 1070,
      "value": "",
      "variable": "REEMO_DESKTOP_FOLDERS",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Files downloaded onto the desktop at startup, comma-separated URLs.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Desktop Files (URLs)",
      "optional": true,
      "placeholder": "https://host/file1.pdf,https://host/file2.pdf",
      "type": "STRING",
      "uiPriority": 1060,
      "value": "",
      "variable": "REEMO_FILE_DESKTOP",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "KeePass database to open, base64-encoded. Left empty, KeePass starts without one.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "KeePass Database",
      "optional": true,
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 1050,
      "value": "",
      "variable": "REEMO_KEEPASS_DB",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "https://reemo.io",
      "editable": true,
      "hint": "Page loaded when the browser starts, and target of the Home button.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Start URL / Homepage",
      "optional": false,
      "placeholder": "https://reemo.io",
      "type": "STRING",
      "uiPriority": 1000,
      "value": "",
      "variable": "REEMO_HOME",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "BLANK",
      "editable": true,
      "hint": "What a new tab shows.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "New Tab Page",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 990,
      "value": "",
      "variable": "REEMO_NEW_TAB",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Blank page",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "BLANK",
      "variable": "REEMO_NEW_TAB",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Custom URL",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "CUSTOM",
      "variable": "REEMO_NEW_TAB",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "CUSTOM",
      "conditionVar": "REEMO_NEW_TAB",
      "defaultValue": null,
      "editable": true,
      "hint": "URL opened on each new tab.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "New Tab URL",
      "optional": true,
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 980,
      "value": "",
      "variable": "REEMO_NEW_TAB_URL",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "NONE",
      "editable": true,
      "hint": "How the browser reaches the web. Direct: no proxy. Upstream proxy: all traffic is routed through the proxy below.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Proxy Mode",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 900,
      "value": "",
      "variable": "REEMO_PROXY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Direct",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "NONE",
      "variable": "REEMO_PROXY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Upstream proxy",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "EXTERNAL",
      "variable": "REEMO_PROXY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "EXTERNAL",
      "conditionVar": "REEMO_PROXY",
      "defaultValue": null,
      "editable": true,
      "hint": "Proxy the browser routes all its traffic through.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Upstream Proxy (host:port)",
      "optional": false,
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 890,
      "value": "",
      "variable": "REEMO_EXTERNAL_PROXY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": "EQUAL",
      "conditionVal": "EXTERNAL",
      "conditionVar": "REEMO_PROXY",
      "defaultValue": null,
      "editable": true,
      "hint": "Hosts reached directly, bypassing the proxy. Comma-separated.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Proxy Bypass List",
      "optional": true,
      "placeholder": "intranet.local,.internal",
      "type": "STRING",
      "uiPriority": 880,
      "value": "",
      "variable": "REEMO_NO_PROXY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Only these are reachable; everything else is blocked. Comma-separated. Takes precedence over the blocked list.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Allowed Websites",
      "optional": true,
      "placeholder": "https://example.com/*",
      "type": "STRING",
      "uiPriority": 870,
      "value": "",
      "variable": "REEMO_ALLOWLIST",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "These are blocked; everything else is allowed. Comma-separated. Ignored when an allowed list is set.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Blocked Websites",
      "optional": true,
      "placeholder": "https://example.com/*",
      "type": "STRING",
      "uiPriority": 860,
      "value": "",
      "variable": "REEMO_BLOCKLIST",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "editable": true,
      "hint": "Lets the browser open local files through file:// URLs.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Local File Navigation (file://)",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 850,
      "value": "",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Enabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "true",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Disabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "false",
      "variable": "REEMO_ALLOW_FILE_PROTOCOL",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "editable": true,
      "hint": "Lets a website prompt the user to pick a file from the session.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "File Picker Dialogs",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 840,
      "value": "",
      "variable": "REEMO_ALLOW_FILE_DIALOGS",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Enabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "true",
      "variable": "REEMO_ALLOW_FILE_DIALOGS",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Disabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "false",
      "variable": "REEMO_ALLOW_FILE_DIALOGS",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "editable": true,
      "hint": "Lets the user proceed past certificate errors (expired or self-signed). When disabled, those pages cannot be dismissed.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Allow SSL Certificate Override",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 830,
      "value": "",
      "variable": "REEMO_SSL_ERROR_OVERRIDE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Enabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "true",
      "variable": "REEMO_SSL_ERROR_OVERRIDE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Disabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "false",
      "variable": "REEMO_SSL_ERROR_OVERRIDE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "editable": true,
      "hint": "Dark rendering inside the browser only. The desktop itself follows Desktop Appearance above.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Browser Dark Mode",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 820,
      "value": "",
      "variable": "REEMO_DARK_MODE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Enabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "true",
      "variable": "REEMO_DARK_MODE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Disabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "false",
      "variable": "REEMO_DARK_MODE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Overrides the browser user agent. Left empty, Chromium uses its own.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "User Agent",
      "optional": true,
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 810,
      "value": "",
      "variable": "REEMO_USER_AGENT",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Name of the bookmarks folder shown in the bar.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Bookmarks Folder Name",
      "optional": true,
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 800,
      "value": "",
      "variable": "REEMO_BOOKMARKS_NAME",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Bookmarks as Name|URL pairs, comma-separated.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Bookmarks",
      "optional": true,
      "placeholder": "Reemo|https://reemo.io,Docs|https://docs.reemo.io",
      "type": "STRING",
      "uiPriority": 790,
      "value": "",
      "variable": "REEMO_BOOKMARKS",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Desktop icons opening a website, as Name|URL pairs, comma-separated.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Desktop Web Shortcuts",
      "optional": true,
      "placeholder": "Intranet|https://intranet.local",
      "type": "STRING",
      "uiPriority": 780,
      "value": "",
      "variable": "REEMO_CHROME_SHORTCUT",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Certificate authority to trust, in PEM format (-----BEGIN CERTIFICATE-----).",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "CA Certificate",
      "optional": true,
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 700,
      "value": "",
      "variable": "REEMO_CERT",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Client certificate presented to sites requiring one (mTLS), in PEM format.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "User Certificate",
      "optional": true,
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 690,
      "value": "",
      "variable": "REEMO_USER_CERT",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": true,
      "hint": "Private key matching the client certificate above, in PEM format.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "User Key",
      "optional": true,
      "placeholder": null,
      "type": "TEXT",
      "uiPriority": 680,
      "value": "",
      "variable": "REEMO_USER_KEY",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "5",
      "editable": true,
      "hint": "Maximum number of screens the user may open. Hard cap: 5.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Monitor Limit",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 500,
      "value": "",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "5",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 50,
      "value": "5",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "4",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 40,
      "value": "4",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "3",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "3",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "2",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "2",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "1",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "1",
      "variable": "REEMO_LIMIT_MONITOR",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "fr",
      "editable": true,
      "hint": "Keyboard layout for the session.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Keyboard",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 480,
      "value": "",
      "variable": "REEMO_KEYMAP",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "French",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "fr",
      "variable": "REEMO_KEYMAP",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "English",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "us",
      "variable": "REEMO_KEYMAP",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Swedish",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "sv",
      "variable": "REEMO_KEYMAP",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "fr",
      "editable": true,
      "hint": "Language of the desktop and its applications.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Language",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 470,
      "value": "",
      "variable": "REEMO_LANGUAGE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "French",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "fr",
      "variable": "REEMO_LANGUAGE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "English",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "en",
      "variable": "REEMO_LANGUAGE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "Europe/Paris",
      "editable": true,
      "hint": "Time zone for the session.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Timezone",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 460,
      "value": "",
      "variable": "REEMO_TIMEZONE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Europe/Paris",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 30,
      "value": "Europe/Paris",
      "variable": "REEMO_TIMEZONE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Europe/London",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "Europe/London",
      "variable": "REEMO_TIMEZONE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Europe/Stockholm",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "Europe/Stockholm",
      "variable": "REEMO_TIMEZONE",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "2.0.0",
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "REEMO_TEMPLATE_VERSION",
      "optional": false,
      "placeholder": null,
      "type": "STRING",
      "uiPriority": 0,
      "value": "",
      "variable": "REEMO_TEMPLATE_VERSION",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": "false",
      "editable": true,
      "hint": "Keeps the user home directory across sessions. Disabled: everything is lost when the session ends.",
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Persistent Session",
      "optional": false,
      "placeholder": null,
      "type": "SELECT",
      "uiPriority": 1110,
      "value": "",
      "variable": "REEMO_PERSISTENT_SESSION",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Enabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 20,
      "value": "true",
      "variable": "REEMO_PERSISTENT_SESSION",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    },
    {
      "conditionOp": null,
      "conditionVal": "",
      "conditionVar": "",
      "defaultValue": null,
      "editable": false,
      "hint": null,
      "intMax": null,
      "intMin": null,
      "intStep": null,
      "name": "Disabled",
      "optional": false,
      "placeholder": null,
      "type": "SELECT_OPTION",
      "uiPriority": 10,
      "value": "false",
      "variable": "REEMO_PERSISTENT_SESSION",
      "volumeAccessMode": null,
      "volumeMode": null,
      "volumeName": null,
      "volumeRequestSize": null,
      "volumeRequestSizeOverhead": null,
      "volumeStorageClass": null,
      "volumeTarget": null
    }
  ],
  "links": [],
  "usePushNotifications": false,
  "assignableToProvider": true,
  "os": null,
  "vmStartMode": null,
  "vmCreationMode": null,
  "vmCreationDate": null,
  "vmPersistentDisk": true,
  "official": false
}

Configuration et déploiement

Informations de l’image

  • Image :

registry.reemo.io/reemosblightdesktop:latest
  • Bureau interne : XFCE (gestionnaire de fenêtres, icônes du bureau) et tint2 (barre des tâches)

  • Navigateur interne : Chromium

  • Applications livrées : ONLYOFFICE, lecteur PDF, gestionnaire d’archives, KeePass

Choisir l’apparence du bureau

Le sélecteur Desktop Appearance détermine à quoi ressemble le bureau que l’utilisateur découvre en ouvrant sa session.

Option

Apparence obtenue

Reemo (défaut)

Le bureau sombre Reemo : fond d’écran Reemo, thème sombre et barres de titre sombres. C’est l’apparence par défaut de toutes les images de la flotte.

Windows-like

Thème clair, jeu d’icônes coloré, fond d’écran bleu et barres de titre claires. À choisir pour des utilisateurs qui arrivent d’un poste Windows et à qui l’on ne veut pas faire réapprendre où sont les choses.

Note

Ce réglage ne change que l”apparence. Les applications, les icônes du bureau et le menu de la barre des tâches sont les mêmes dans les deux cas. La barre des tâches, elle, reste sombre quel que soit le choix : elle est habillée par la plateforme, pas par ce réglage.

Astuce

Sur une session persistante (voir ci-dessous), l’apparence n’est appliquée qu”au premier démarrage. L’utilisateur qui change ensuite son fond d’écran le retrouve aux sessions suivantes. Changer Desktop Appearance dans le formulaire reprend la main : la nouvelle apparence est réappliquée et écrase le choix de l’utilisateur. C’est une consigne d’exploitant, pas une suggestion.

Conserver les fichiers d’une session à l’autre

Par défaut, une session est jetable : tout ce que l’utilisateur crée disparaît à sa fermeture. Deux champs, liés entre eux, changent cela.

Champ

Description

Persistent Session

Disabled (défaut) : rien n’est conservé. Enabled : fait apparaître le champ suivant et conserve le répertoire personnel de l’utilisateur.

Persistent Disk

Le disque monté sur le répertoire personnel. 10 Gio par défaut. Visible uniquement quand Persistent Session est activé.

Ce qui survit alors à la fin de session : les fichiers du bureau, les téléchargements, le profil du navigateur (onglets, zoom, autorisations), la base KeePass, ainsi que le fond d’écran et les réglages d’apparence que l’utilisateur a choisis lui-même.

Important

Cette image sert les deux usages, et c’est pour cela que le disque est derrière un interrupteur : un poste de travail nominatif que l’utilisateur retrouve chaque matin, ou un poste éphémère ouvert pour une tâche puis refermé. Choisissez en connaissance de cause — un poste éphémère avec un disque persistant accumule indéfiniment, un poste nominatif sans disque perd tout chaque soir.

Avertissement

Si Persistent Session est activé mais que la plateforme n’attache effectivement aucun disque, la session démarre normalement et l’utilisateur perd tout à la fin. Ce cas produit une ligne ERROR explicite dans les journaux du conteneur au démarrage : c’est là qu’on le voit, pas à l’écran.

Préparer le bureau de l’utilisateur

Trois champs facultatifs remplissent le bureau avant que l’utilisateur n’ouvre sa session. Ils évitent de lui demander d’aller chercher lui-même ce dont il aura besoin.

Champ

Description

Desktop Folders

Dossiers créés sur le bureau, séparés par des virgules (ex. Documents,Projets). Lettres, chiffres et espaces uniquement : un nom contenant autre chose est ignoré, et le journal dit lequel.

Desktop Files (URLs)

Fichiers téléchargés sur le bureau au démarrage, désignés par leurs adresses web séparées par des virgules. Utile pour une notice, un modèle de document, une procédure.

Desktop Web Shortcuts

Icônes de bureau qui ouvrent un site en un clic, sous la forme Nom|URL séparée par des virgules (ex. Intranet|https://intranet.local).

Note

Une adresse de Desktop Files (URLs) injoignable au démarrage n’empêche pas la session de s’ouvrir : le fichier manque, et le démarrage est signalé comme dégradé dans les journaux du conteneur, en nommant l’adresse en cause. Sur un disque persistant, un fichier déjà présent n’est pas retéléchargé.

Astuce

Les raccourcis web sont des icônes de bureau, pas des entrées du menu de la barre des tâches : ce menu ne contient que les cinq applications, et son contenu est figé dans l’image.

Fournir une base KeePass

Champ

Description

KeePass Database

Base KeePass ouverte par l’icône du bureau, encodée en base64. Laissé vide, KeePass démarre sans base et l’utilisateur en crée une.

Avertissement

Sur une session persistante, la base déjà présente sur le disque l’emporte sur ce champ : elle n’est jamais écrasée par celle du formulaire. C’est ce qui empêche de perdre les mots de passe ajoutés par l’utilisateur à chaque redémarrage — mais cela veut aussi dire que mettre à jour ce champ ne met pas à jour une base déjà en place.

Note

Un contenu qui n’est pas du base64 valide est refusé : aucune base n’est écrite, une ligne ERROR le dit dans les journaux, et KeePass s’ouvre sans base plutôt que sur un fichier tronqué et un message « invalid database ».

Choisir la page de démarrage et les nouveaux onglets

Champ

Description

Start URL / Homepage

Page chargée à l’ouverture du navigateur, et cible du bouton Accueil. Défaut : https://reemo.io.

New Tab Page

Blank page (défaut) : onglet vide. Custom URL : fait apparaître le champ suivant.

New Tab URL

Adresse ouverte à chaque nouvel onglet. Visible uniquement en Custom URL.

Astuce

Pour un portail interne, mettez la même adresse dans Start URL / Homepage et dans New Tab URL : l’utilisateur y revient aussi bien en ouvrant sa session qu’en ouvrant un onglet ou en cliquant Accueil.

Filtrer la navigation

Deux mécanismes indépendants, qui se combinent : par où le navigateur sort, et ce qu’il a le droit d’atteindre.

Le sélecteur Proxy Mode détermine par où le navigateur sort.

Option

Comportement

Direct (défaut)

Connexion directe, aucun proxy.

Upstream proxy

Fait apparaître Upstream Proxy (host:port) : tout le trafic du navigateur est routé vers ce proxy existant (ex. proxy.corp.local:3128), et Proxy Bypass List : les hôtes joints en direct, séparés par des virgules.

Les deux champs de listes déterminent ce que le navigateur a le droit d’atteindre. Ils acceptent une liste séparée par des virgules.

Champ

Sémantique

Allowed Websites

Tout est bloqué sauf ce qui est listé.

Blocked Websites

Tout est autorisé sauf ce qui est listé.

Important

Allowed Websites l’emporte. Si les deux champs sont remplis, la liste d’autorisation s’applique et Blocked Websites est purement ignoré — pas fusionné, pas appliqué en second. Remplir les deux est le meilleur moyen de croire qu’un site est bloqué alors qu’il ne l’est pas, ou l’inverse : n’en remplissez qu’un.

Chaque entrée peut prendre l’une des formes suivantes :

Forme

Portée

reemo.io

Ce seul hôte.

*.github.com

Tous les sous-domaines de github.com.

https://site.com/app

URL complète avec préfixe de chemin.

*://*.cdn.net/*

Motif d’URL générique.

Note

Le filtrage s’applique à toute navigation, y compris un lien suivi depuis l’intérieur d’une page. Une adresse refusée affiche une page de blocage au lieu de se charger.

Important

En mode Allowed Websites, pensez à lister tous les hôtes dont dépend l’application, pas seulement celui de la page d’accueil. Un export, un téléchargement ou un appel d’API servi par un sous-domaine (api., export., files.) ou par un stockage externe (S3, CDN) est refusé si cet hôte n’est pas listé, et la page reste le plus souvent muette : le bouton semble sans effet.

Avertissement

Ce filtrage ne concerne que le navigateur. Cette image est un bureau : les autres applications (ONLYOFFICE, KeePass) ne passent pas par lui. Si la session doit être confinée au réseau, c’est au niveau du réseau du conteneur que cela se décide, pas ici.

Ouvrir des fichiers locaux depuis le navigateur

Deux sélecteurs, souvent confondus, qui ne règlent pas la même chose.

Champ

Comportement

Local File Navigation (file://)

Disabled (défaut) : les adresses file:// sont bloquées, le navigateur ne peut pas servir d’explorateur du conteneur. Enabled : il peut les résoudre et les afficher.

File Picker Dialogs

Disabled (défaut) : un site ne peut pas ouvrir la boîte « choisir un fichier ». Enabled : il le peut.

Astuce

File Picker Dialogs est celui qu’il faut activer pour qu’un utilisateur puisse téléverser un document de sa session vers une application web. C’est le cas d’usage le plus fréquent sur cette image, puisque l’utilisateur y produit des fichiers avec ONLYOFFICE.

Avertissement

N’activez Local File Navigation que si un usage précis l’exige. Désactivée, elle empêche l’utilisateur final de parcourir le système de fichiers interne du conteneur depuis la barre d’adresse.

Régler le rendu du navigateur

Champ

Description

Browser Dark Mode

Disabled (défaut). Activé, force un rendu sombre à l’intérieur du navigateur uniquement. Le bureau, lui, suit Desktop Appearance plus haut : les deux réglages sont indépendants.

Allow SSL Certificate Override

Disabled (défaut) : une page dont le certificat est expiré ou auto-signé ne peut pas être forcée par l’utilisateur. Activé, il peut passer outre. Préférez charger l’autorité dans CA Certificate ci-dessous plutôt que d’ouvrir cette porte.

User Agent

Remplace l’agent utilisateur du navigateur. Laissé vide, Chromium utilise le sien. Utile pour une application web qui refuse un navigateur qu’elle ne reconnaît pas.

Note

Une valeur de User Agent contenant des caractères inattendus (guillemets notamment) est refusée en bloc : l’agent par défaut est conservé et un avertissement le dit dans les journaux. On ne nettoie pas la valeur au mieux, on la rejette.

Publier des marque-pages

Champ

Description

Bookmarks

Liste de paires Nom|URL séparées par des virgules, ex. Reemo|https://reemo.io,Docs|https://docs.reemo.io.

Bookmarks Folder Name

Nom du dossier affiché dans la barre de marque-pages. Défaut : Bookmarks.

Le dossier est poussé par politique : l’utilisateur final ne peut ni le modifier ni le supprimer. Remplir Bookmarks rend du même coup la barre de marque-pages visible ; sans marque-pages, elle reste masquée.

Charger des certificats

Trois champs facultatifs alimentent les magasins de certificats de la session. Ils sont pris en compte au démarrage : modifier l’un d’eux suppose de relancer la session.

Champ

Description

CA Certificate

Autorité de certification à faire reconnaître par le navigateur, au format PEM. Un seul champ accepte une chaîne entière : chaque certificat qu’il contient est installé séparément.

User Certificate

Certificat client présenté par le navigateur aux sites qui en exigent un (mTLS), au format PEM. Clé RSA ou EC.

User Key

Clé privée correspondant au certificat client, au format PEM et non chiffrée (sans phrase de passe).

CA Certificate couvre deux besoins distincts :

  • les sites internes signés par votre propre autorité — sans elle, le navigateur affiche un avertissement de sécurité que l’utilisateur final doit contourner lui-même, à chaque session ;

  • un proxy d’entreprise qui inspecte le trafic TLS — il resigne les connexions avec sa propre autorité, à déclarer ici en plus du champ Upstream Proxy (host:port).

User Certificate et User Key vont toujours ensemble : si l’un des deux champs reste vide, rien n’est importé.

Note

Les trois champs attendent du texte PEM, c’est-à-dire des blocs délimités par —–BEGIN CERTIFICATE—–. Un fichier binaire DER ou PFX doit être converti au préalable

openssl x509 -inform der -in autorite.der -out autorite.pem
openssl pkcs12 -in identite.pfx -clcerts -nokeys -out client.pem
openssl pkcs12 -in identite.pfx -nocerts -noenc  -out client.key

Avertissement

Un certificat ou une clé illisible est ignoré, et la session démarre malgré tout. Le chargement effectif se vérifie dans les journaux du conteneur, où chaque certificat importé et chaque rejet sont tracés.

Régler la session

Champ

Description

Monitor Limit

Nombre maximal d’écrans utilisables dans la session, de 1 à 5. Défaut : 5. Abaissez-le pour brider la consommation d’une session nombreuse ; c’est un plafond, pas un nombre d’écrans imposé.

Keyboard

Disposition clavier de la session : French (défaut), English, Swedish.

Language

Langue du bureau et de ses applications : French (défaut), English. Elle change les libellés du bureau, des menus et des applications.

Timezone

Fuseau horaire de la session : Europe/Paris (défaut), Europe/London, Europe/Stockholm. Il détermine l’heure affichée et la date des fichiers créés dans la session.

Note

Ces quatre champs sont des listes fermées : le formulaire ne propose que les valeurs ci-dessus. Une valeur hors liste est refusée et journalisée, jamais appliquée à moitié — mais le repli n’est pas toujours le défaut du formulaire : Language retombe sur une interface en anglais, et Timezone sur UTC.

Guide d’utilisation

Ouvrir la session

À l’ouverture de la session Reemo, l’utilisateur arrive sur un bureau complet. Aucune application n’est lancée : c’est lui qui ouvre celles dont il a besoin. Aucune installation ni configuration ne lui est demandée.

Le bureau et ses icônes

Le bureau porte une icône par application, plus une icône Répertoire personnel qui ouvre le gestionnaire de fichiers, ainsi que les dossiers, les fichiers et les raccourcis web ajoutés au déploiement.

Icône

Ce qu’elle ouvre

Chromium

Le navigateur, sur la page de démarrage de la session.

ONLYOFFICE

La suite bureautique : documents, classeurs, présentations. Elle ouvre aussi les PDF.

PDF Viewer

Le lecteur de documents PDF.

7zip

Le gestionnaire d’archives : ZIP, 7z, XZ, BZ2, GZIP et TAR, en lecture comme en création.

KeePass

Le gestionnaire de mots de passe, sur la base fournie au déploiement le cas échéant. Le mot de passe sélectionné se copie dans le presse-papiers de la session.

La barre des tâches

Une barre des tâches est présente en bas de chaque écran de la session. Elle liste les fenêtres ouvertes de son écran : une fenêtre déplacée sur le second écran apparaît dans la barre de ce second écran, pas dans l’autre.

Le bouton au logo Reemo, à gauche de la barre, ouvre un menu qui reprend les cinq applications : c’est la deuxième façon de les lancer, sans avoir à retrouver l’icône sous les fenêtres ouvertes.

Note

Ce menu contient les cinq applications et rien d’autre. Les raccourcis web ajoutés au déploiement restent des icônes de bureau.

Geste sur un bouton de fenêtre

Effet

Clic

Affiche la fenêtre, ou la réduit si elle est déjà au premier plan.

Clic molette

Ferme la fenêtre.

Survol

Affiche le titre complet, utile quand il est tronqué.

Glisser sur un autre bouton

Réordonne les fenêtres dans la barre.

La fenêtre au premier plan est signalée par un soulignement violet sous son bouton.

Astuce

Pour réduire, agrandir ou fermer une fenêtre depuis un menu, faites un clic droit sur sa barre de titre.

Travailler sur plusieurs écrans

L’utilisateur peut ouvrir des écrans supplémentaires depuis son navigateur, dans la limite fixée par Monitor Limit, et les refermer en cours de session. Chaque écran reçoit sa propre barre des tâches et le fond d’écran de la session dès son apparition.

Transférer des fichiers

Lorsque le transfert de fichiers est activé pour la session, l’image expose un répertoire de transfert accessible depuis le menu Fichiers du navigateur Reemo. Ce répertoire est aussi le dossier de téléchargement du navigateur : un fichier téléchargé dans la session y est déposé directement, prêt à être récupéré sur le poste de travail.

Avertissement

Sur une session non persistante, ce répertoire est éphémère comme le reste. Pensez à rapatrier vos fichiers sur votre poste local avant de fermer la session.

Ce qui reste d’une session à l’autre

Élément

Session persistante

Session jetable

Fichiers et dossiers du bureau

Conservés

Perdus

Téléchargements

Conservés

Perdus

Profil du navigateur (onglets, zoom, autorisations)

Conservé

Perdu

Base KeePass

Conservée

Perdue

Fond d’écran et apparence choisis par l’utilisateur

Conservés

Perdus

Dossiers, fichiers et raccourcis du déploiement

Recréés à chaque démarrage

Recréés à chaque démarrage

Contraintes de sécurité

Le navigateur est verrouillé en permanence. Ce n’est pas une option de déploiement : les restrictions suivantes s’appliquent à toutes les sessions.

  • Pas d’accès à la configuration du navigateur : les pages de paramètres, le gestionnaire d’extensions et les pages internes chrome:// et about:// sont inaccessibles.

  • Pas d’outils de développement : la console et l’inspecteur sont désactivés.

  • Extensions verrouillées : aucune extension ne peut être installée par l’utilisateur final.

  • Fonctions désactivées : synchronisation de compte, gestionnaire de mots de passe intégré, historique de navigation, impression, navigation privée, suggestions de recherche et télémétrie.

  • Navigation dans les fichiers locaux refusée par défaut : les adresses file:// sont bloquées tant qu’un déploiement ne les autorise pas explicitement.

Important

Le verrouillage porte sur le navigateur. Cette image livre un bureau : l’utilisateur y dispose d’applications qui lisent et écrivent des fichiers, et d’un gestionnaire de fichiers. Elle est faite pour donner un poste de travail, pas pour confiner un utilisateur à une seule application — si c’est le besoin, c’est le HTTPS Bastion qu’il faut déployer.

Changelog

v1.0.0 (2026-09-22)

First public release of the Light Desktop Reemo image: a complete Linux desktop delivered in the browser through Reemo, with a web browser, an office suite, a PDF viewer, an archive manager and a password manager already installed. Unlike the other images in the catalogue, which publish a single application, what this one delivers is the desktop itself: the user opens the applications they need, arranges their windows and keeps their files.

Added

  • A ready-to-use desktop in the browser. The session opens on a desktop with a taskbar and five applications the user launches from an icon or from the taskbar menu: a web browser, the ONLYOFFICE suite (documents, spreadsheets, presentations), a PDF viewer, an archive manager that opens ZIP, 7z, XZ, BZ2, GZIP and TAR, and the KeePass password manager. Nothing is installed on the user’s workstation, and no application is imposed at startup: the desktop is what the session serves.

  • A home directory that survives the session. A deployment can attach a persistent disk to the user’s home directory. Desktop files, downloads, the browser profile and the KeePass database are then found again at the next session, along with the wallpaper and the desktop settings the user chose themselves. Left off, the session is disposable and everything is released when it ends. When a disk is promised but the platform does not attach one, the container logs say so at startup rather than letting the session run and lose its contents at the end.

  • A choice of desktop appearance. Two looks are available: the Reemo appearance, dark, which is the default, and a Windows-like appearance with a light theme, a matching icon set and a blue wallpaper — for users moving over from a Windows workstation who should not have to relearn where things are.

  • A desktop prepared for the user before they arrive. A deployment can create folders on the desktop, place files there by giving their web addresses, add icons that open a website in one click, and supply the KeePass database the session opens. An existing database on a persistent disk is never overwritten by the one declared at deployment.

  • A locked-down browser. The browser cannot be reconfigured or repurposed by the end user: the settings pages, the extension manager, the internal browser pages and the developer tools are unreachable, and browsing local files through file:// addresses is refused unless a deployment enables it explicitly. Sync, the built-in password manager, browsing history, printing, private browsing, search suggestions and telemetry are disabled.

  • Website filtering, allowlist or blocklist. The session can be turned into a filtered gateway: either everything is blocked except the websites you list, or everything is allowed except those you list. Filtering applies to any navigation, including a link followed from inside a page, and a refused address shows a block page instead of loading. Alternatively, all browser traffic can be routed through an existing corporate proxy, with a list of hosts reached directly.

  • Managed bookmarks and a start page. A read-only bookmarks folder can be pushed into the browser bar, under a name of your choosing, and the page the browser opens on — as well as what a new tab shows — is chosen at deployment.

  • Certificates supplied at deployment. A deployment can hand the session a certificate authority to trust, so internal sites signed by your own authority — or reached through a proxy that inspects TLS — open without a security warning for the end user. A client certificate and its key can be supplied the same way, which the browser presents to sites that require one. Material that cannot be read is reported in the container logs rather than silently dropped.

  • A multi-screen desktop. The session can use up to five screens, added or removed on the fly during the session, each with its own taskbar and the correct wallpaper as soon as it appears. The maximum number of screens is set at deployment.

  • Downloads within reach. What the browser downloads lands in the folder the session exposes for file transfer, ready to be retrieved on the user’s workstation, instead of somewhere the transfer cannot see.

  • Keyboard layout, language and time zone chosen at deployment. The desktop and its applications follow the language selected, the keyboard matches the user’s own, and timestamps are in the right time zone.

Versions

Images published on registry.reemo.io/reemosblightdesktop. 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/reemosblightdesktop:vX.Y.Z-N

v1.0.0-1 (2026-09-22)

Release

v1.0.0

Build

v1.0.0-1

Image

d62df71712ae

Digest

sha256:d62df71712ae439af35f39f939f7eeb01cca986accd31555bcdac2f92cf1d8f5

Applications

chromium 153.0.8010.52

Reemo Agent

2.7.5

OS

Debian GNU/Linux 13 (trixie)

Size

1.45 GB

Patched CVEs

CVE-2018-7738, CVE-2019-16224, CVE-2019-16225, CVE-2019-16226, CVE-2019-16227, CVE-2019-16228, CVE-2022-0987, CVE-2024-36600 (+2974)