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.
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 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/reemosblightdesktop:vX.Y.Z-N
v1.0.0-1 (2026-09-22)