Skip to content

Commit 61aaace

Browse files
authored
sync snippet with baseimge to advertise all container settings (#355)
* sync snippet with baseimge to advertise all container settings * add no gamepad to docs as well
1 parent d2b9d7e commit 61aaace

File tree

1 file changed

+155
-16
lines changed
  • ansible/roles/documentation/templates/README_SNIPPETS

1 file changed

+155
-16
lines changed

ansible/roles/documentation/templates/README_SNIPPETS/SELKIES.j2

Lines changed: 155 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,36 @@ This container is based on [Docker Baseimage Selkies](https://github.com/linuxse
2020

2121
| Variable | Description |
2222
| :----: | --- |
23-
| `CUSTOM_PORT` | Internal HTTP port. Defaults to `{% if external_http_port is defined %}{{ external_http_port }}{% else %}3000{% endif %}`. |
24-
| `CUSTOM_HTTPS_PORT` | Internal HTTPS port. Defaults to `{% if external_https_port is defined %}{{ external_https_port }}{% else %}3001{% endif %}`. |
25-
| `CUSTOM_WS_PORT` | Internal port the container listens on for websockets if it needs to be swapped from the default 8082. |
26-
| `CUSTOM_USER` | Username for HTTP Basic Auth. Defaults to `abc`. |
27-
| `PASSWORD` | Password for HTTP Basic Auth. If unset, authentication is disabled. |
28-
| `SUBFOLDER` | Application subfolder for reverse proxy configurations. Must include leading and trailing slashes, e.g., `/subfolder/`. |
29-
| `TITLE` | Page title displayed in the web browser. Defaults to "Selkies". |
30-
| `START_DOCKER` | If set to `false`, the privileged Docker-in-Docker setup will not start automatically. |
31-
| `DISABLE_IPV6` | Set to `true` to disable IPv6 support in the container. |
32-
| `LC_ALL` | Sets the container's locale, e.g., `fr_FR.UTF-8`. |
33-
| `DRINODE` | If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE `/dev/dri/renderD128` |
34-
| `NO_DECOR` | If set, applications will run without window borders, suitable for PWA usage. |
35-
| `NO_FULL` | If set, applications will not be automatically fullscreened. |
36-
| `DISABLE_ZINK` | If set, Zink-related environment variables will not be configured when a video card is detected. |
37-
| `WATERMARK_PNG` | Full path to a watermark PNG file inside the container, e.g., `/usr/share/selkies/www/icon.png`. |
38-
| `WATERMARK_LOCATION` | Integer specifying the watermark location: `1` (Top Left), `2` (Top Right), `3` (Bottom Left), `4` (Bottom Right), `5` (Centered), `6` (Animated). |
23+
| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default `{% if external_http_port is defined %}{{ external_http_port }}{% else %}3000{% endif %}` |
24+
| CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default `{% if external_https_port is defined %}{{ external_https_port }}{% else %}3001{% endif %}` |
25+
| CUSTOM_WS_PORT | Internal port the container listens on for websockets if it needs to be swapped from the default 8082 |
26+
| CUSTOM_USER | HTTP Basic auth username, abc is default. |
27+
| DRI_NODE | Enable VAAPI stream encoding and use the specified device IE `/dev/dri/renderD128` |
28+
| DRINODE | Specify which GPU to use for DRI3 acceleration IE `/dev/dri/renderD129` |
29+
| PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth |
30+
| SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` |
31+
| TITLE | The page title displayed on the web browser, default "Selkies" |
32+
| DASHBOARD | Allows the user to set their dashboard. Options: `selkies-dashboard`, `selkies-dashboard-zinc`, `selkies-dashboard-wish` |
33+
| FILE_MANAGER_PATH | Modifies the default upload/download file path, path must have proper permissions for abc user |
34+
| START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup |
35+
| DISABLE_IPV6 | If set to true or any value this will disable IPv6 |
36+
| LC_ALL | Set the Language for the container to run as IE `fr_FR.UTF-8` `ar_AE.UTF-8` |
37+
| NO_DECOR | If set the application will run without window borders for use as a PWA. (Decor can be enabled and disabled with Ctrl+Shift+d) |
38+
| NO_FULL | Do not autmatically fullscreen applications when using openbox. |
39+
| NO_GAMEPAD | Disable userspace gamepad interposer injection. |
40+
| DISABLE_ZINK | Do not set the Zink environment variables if a video card is detected (userspace applications will use CPU rendering) |
41+
| DISABLE_DRI3 | Do not use DRI3 acceleration if a video card is detected (userspace applications will use CPU rendering) |
42+
| MAX_RES | Pass a larger maximum resolution for the container default is 16k `15360x8640` |
43+
| WATERMARK_PNG | Full path inside the container to a watermark png IE `/usr/share/selkies/www/icon.png` |
44+
| WATERMARK_LOCATION | Where to paint the image over the stream integer options below |
45+
46+
**`WATERMARK_LOCATION` Options:**
47+
- **1**: Top Left
48+
- **2**: Top Right
49+
- **3**: Bottom Left
50+
- **4**: Bottom Right
51+
- **5**: Centered
52+
- **6**: Animated
3953

4054
#### Optional Run Configurations
4155

@@ -138,3 +152,128 @@ You can install packages from the system's native repository using the [universa
138152
- DOCKER_MODS=linuxserver/mods:universal-package-install
139153
- INSTALL_PACKAGES=libfuse2|git|gdb
140154
```
155+
156+
#### Hardening
157+
158+
These variables can be used to lock down the desktop environment for single-application use cases or to restrict user capabilities.
159+
160+
##### Meta Variables
161+
162+
These variables act as presets, enabling multiple hardening options at once. Individual options can still be set to override the preset.
163+
164+
| Variable | Description |
165+
| :----: | --- |
166+
| **`HARDEN_DESKTOP`** | Enables `DISABLE_OPEN_TOOLS`, `DISABLE_SUDO`, and `DISABLE_TERMINALS`. Also sets related Selkies UI settings (`SELKIES_FILE_TRANSFERS`, `SELKIES_COMMAND_ENABLED`, `SELKIES_UI_SIDEBAR_SHOW_FILES`, `SELKIES_UI_SIDEBAR_SHOW_APPS`) if they are not explicitly set by the user. |
167+
| **`HARDEN_OPENBOX`** | Enables `DISABLE_CLOSE_BUTTON`, `DISABLE_MOUSE_BUTTONS`, and `HARDEN_KEYBINDS`. It also flags `RESTART_APP` if not set by the user, ensuring the primary application is automatically restarted if closed. |
168+
169+
##### Individual Hardening Variables
170+
171+
| Variable | Description |
172+
| :--- | --- |
173+
| **`DISABLE_OPEN_TOOLS`** | If true, disables `xdg-open` and `exo-open` binaries by removing their execute permissions. |
174+
| **`DISABLE_SUDO`** | If true, disables the `sudo` command by removing its execute permissions and invalidating the passwordless sudo configuration. |
175+
| **`DISABLE_TERMINALS`** | If true, disables common terminal emulators by removing their execute permissions and hiding them from the Openbox right-click menu. |
176+
| **`DISABLE_CLOSE_BUTTON`** | If true, removes the close button from window title bars in the Openbox window manager. |
177+
| **`DISABLE_MOUSE_BUTTONS`** | If true, disables the right-click and middle-click context menus and actions within the Openbox window manager. |
178+
| **`HARDEN_KEYBINDS`** | If true, disables default Openbox keybinds that can bypass other hardening options (e.g., `Alt+F4` to close windows, `Alt+Escape` to show the root menu). |
179+
| **`RESTART_APP`** | If true, enables a watchdog service that automatically restarts the main application if it is closed. The user's autostart script is made read-only and root owned to prevent tampering. |
180+
181+
#### Selkies application settings
182+
183+
Using environment variables every facet of the application can be configured.
184+
185+
##### Booleans and Locking
186+
Boolean settings accept `true` or `false`. You can also prevent the user from changing a boolean setting in the UI by appending `|locked`. The UI toggle for this setting will be hidden.
187+
188+
* **Example**: To force CPU encoding on and prevent the user from disabling it:
189+
```bash
190+
-e SELKIES_USE_CPU="true|locked"
191+
```
192+
193+
##### Enums and Lists
194+
These settings accept a comma-separated list of values. Their behavior depends on the number of items provided:
195+
196+
* **Multiple Values**: The first item in the list becomes the default selection, and all items in the list become the available options in the UI dropdown.
197+
* **Single Value**: The provided value becomes the default, and the UI dropdown is hidden because the choice is locked.
198+
199+
* **Example**: Force the encoder to be `jpeg` with no other options available to the user:
200+
```bash
201+
-e SELKIES_ENCODER="jpeg"
202+
```
203+
204+
##### Ranges
205+
Range settings define a minimum and maximum for a value (e.g., framerate).
206+
207+
* **To set a range**: Use a hyphen-separated `min-max` format. The UI will show a slider.
208+
* **To set a fixed value**: Provide a single number. This will lock the value and hide the UI slider.
209+
210+
* **Example**: Lock the framerate to exactly 60 FPS.
211+
```bash
212+
-e SELKIES_FRAMERATE="60"
213+
```
214+
215+
##### Manual Resolution Mode
216+
The server can be forced to use a single, fixed resolution for all connecting clients. This mode is automatically activated if `SELKIES_MANUAL_WIDTH`, `SELKIES_MANUAL_HEIGHT`, or `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set.
217+
218+
* If `SELKIES_MANUAL_WIDTH` and/or `SELKIES_MANUAL_HEIGHT` are set, the resolution is locked to those values.
219+
* If `SELKIES_IS_MANUAL_RESOLUTION_MODE` is set to `true` without specifying width or height, the resolution defaults to **1024x768**.
220+
* When this mode is active, the client UI for changing resolution is disabled.
221+
222+
| Environment Variable | Default Value | Description |
223+
| --- | --- | --- |
224+
| `SELKIES_UI_TITLE` | `'Selkies'` | Title in top left corner of sidebar. |
225+
| `SELKIES_UI_SHOW_LOGO` | `True` | Show the Selkies logo in the sidebar. |
226+
| `SELKIES_UI_SHOW_SIDEBAR` | `True` | Show the main sidebar UI. |
227+
| `SELKIES_UI_SHOW_CORE_BUTTONS` | `True` | Show the core components buttons display, audio, microphone, and gamepad. |
228+
| `SELKIES_UI_SIDEBAR_SHOW_VIDEO_SETTINGS` | `True` | Show the video settings section in the sidebar. |
229+
| `SELKIES_UI_SIDEBAR_SHOW_SCREEN_SETTINGS` | `True` | Show the screen settings section in the sidebar. |
230+
| `SELKIES_UI_SIDEBAR_SHOW_AUDIO_SETTINGS` | `True` | Show the audio settings section in the sidebar. |
231+
| `SELKIES_UI_SIDEBAR_SHOW_STATS` | `True` | Show the stats section in the sidebar. |
232+
| `SELKIES_UI_SIDEBAR_SHOW_CLIPBOARD` | `True` | Show the clipboard section in the sidebar. |
233+
| `SELKIES_UI_SIDEBAR_SHOW_FILES` | `True` | Show the file transfer section in the sidebar. |
234+
| `SELKIES_UI_SIDEBAR_SHOW_APPS` | `True` | Show the applications section in the sidebar. |
235+
| `SELKIES_UI_SIDEBAR_SHOW_SHARING` | `True` | Show the sharing section in the sidebar. |
236+
| `SELKIES_UI_SIDEBAR_SHOW_GAMEPADS` | `True` | Show the gamepads section in the sidebar. |
237+
| `SELKIES_UI_SIDEBAR_SHOW_FULLSCREEN` | `True` | Show the fullscreen button in the sidebar. |
238+
| `SELKIES_UI_SIDEBAR_SHOW_GAMING_MODE` | `True` | Show the gaming mode button in the sidebar. |
239+
| `SELKIES_UI_SIDEBAR_SHOW_TRACKPAD` | `True` | Show the virtual trackpad button in the sidebar. |
240+
| `SELKIES_UI_SIDEBAR_SHOW_KEYBOARD_BUTTON` | `True` | Show the on-screen keyboard button in the display area. |
241+
| `SELKIES_UI_SIDEBAR_SHOW_SOFT_BUTTONS` | `True` | Show the soft buttons section in the sidebar. |
242+
| `SELKIES_AUDIO_ENABLED` | `True` | Enable server-to-client audio streaming. |
243+
| `SELKIES_MICROPHONE_ENABLED` | `True` | Enable client-to-server microphone forwarding. |
244+
| `SELKIES_GAMEPAD_ENABLED` | `True` | Enable gamepad support. |
245+
| `SELKIES_CLIPBOARD_ENABLED` | `True` | Enable clipboard synchronization. |
246+
| `SELKIES_COMMAND_ENABLED` | `True` | Enable parsing of command websocket messages. |
247+
| `SELKIES_FILE_TRANSFERS` | `'upload,download'` | Allowed file transfer directions (comma-separated: "upload,download"). Set to "" or "none" to disable. |
248+
| `SELKIES_ENCODER` | `'x264enc,x264enc-striped,jpeg'` | The default video encoders. |
249+
| `SELKIES_FRAMERATE` | `'8-120'` | Allowed framerate range or a fixed value. |
250+
| `SELKIES_H264_CRF` | `'5-50'` | Allowed H.264 CRF range or a fixed value. |
251+
| `SELKIES_JPEG_QUALITY` | `'1-100'` | Allowed JPEG quality range or a fixed value. |
252+
| `SELKIES_H264_FULLCOLOR` | `False` | Enable H.264 full color range for pixelflux encoders. |
253+
| `SELKIES_H264_STREAMING_MODE` | `False` | Enable H.264 streaming mode for pixelflux encoders. |
254+
| `SELKIES_USE_CPU` | `False` | Force CPU-based encoding for pixelflux. |
255+
| `SELKIES_USE_PAINT_OVER_QUALITY` | `True` | Enable high-quality paint-over for static scenes. |
256+
| `SELKIES_PAINT_OVER_JPEG_QUALITY` | `'1-100'` | Allowed JPEG paint-over quality range or a fixed value. |
257+
| `SELKIES_H264_PAINTOVER_CRF` | `'5-50'` | Allowed H.264 paint-over CRF range or a fixed value. |
258+
| `SELKIES_H264_PAINTOVER_BURST_FRAMES` | `'1-30'` | Allowed H.264 paint-over burst frames range or a fixed value. |
259+
| `SELKIES_SECOND_SCREEN` | `True` | Enable support for a second monitor/display. |
260+
| `SELKIES_AUDIO_BITRATE` | `'320000'` | The default audio bitrate. |
261+
| `SELKIES_IS_MANUAL_RESOLUTION_MODE` | `False` | Lock the resolution to the manual width/height values. |
262+
| `SELKIES_MANUAL_WIDTH` | `0` | Lock width to a fixed value. Setting this forces manual resolution mode. |
263+
| `SELKIES_MANUAL_HEIGHT` | `0` | Lock height to a fixed value. Setting this forces manual resolution mode. |
264+
| `SELKIES_SCALING_DPI` | `'96'` | The default DPI for UI scaling. |
265+
| `SELKIES_ENABLE_BINARY_CLIPBOARD` | `False` | Allow binary data on the clipboard. |
266+
| `SELKIES_USE_BROWSER_CURSORS` | `False` | Use browser CSS cursors instead of rendering to canvas. |
267+
| `SELKIES_USE_CSS_SCALING` | `False` | HiDPI when false, if true a lower resolution is sent from the client and the canvas is stretched. |
268+
| `SELKIES_PORT` (or `CUSTOM_WS_PORT`) | `8082` | Port for the data websocket server. |
269+
| `SELKIES_DRI_NODE` (or `DRI_NODE`) | `''` | Path to the DRI render node for VA-API. |
270+
| `SELKIES_AUDIO_DEVICE_NAME` | `'output.monitor'` | Audio device name for pcmflux capture. |
271+
| `SELKIES_WATERMARK_PATH` (or `WATERMARK_PNG`) | `''` | Absolute path to the watermark PNG file. |
272+
| `SELKIES_WATERMARK_LOCATION` (or `WATERMARK_LOCATION`) | `-1` | Watermark location enum (0-6). |
273+
| `SELKIES_DEBUG` | `False` | Enable debug logging. |
274+
| `SELKIES_ENABLE_SHARING` | `True` | Master toggle for all sharing features. |
275+
| `SELKIES_ENABLE_COLLAB` | `True` | Enable collaborative (read-write) sharing link. |
276+
| `SELKIES_ENABLE_SHARED` | `True` | Enable view-only sharing links. |
277+
| `SELKIES_ENABLE_PLAYER2` | `True` | Enable sharing link for gamepad player 2. |
278+
| `SELKIES_ENABLE_PLAYER3` | `True` | Enable sharing link for gamepad player 3. |
279+
| `SELKIES_ENABLE_PLAYER4` | `True` | Enable sharing link for gamepad player 4. |

0 commit comments

Comments
 (0)