docs_in_draft:docker_in_omv

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs_in_draft:docker_in_omv [2025/12/08 15:36] – [2.3 CONFIGURATION] chentedocs_in_draft:docker_in_omv [2025/12/08 18:57] (current) – [Choose a container] chente
Line 261: Line 261:
   * ''backup_compose''   * ''backup_compose''
   * ''docker''   * ''docker''
 +(These names match the diagrams in this document. You can create the shared folder with any name you prefer; the plugin will work the same.)
  
 We will review them one by one below. We will review them one by one below.
Line 290: Line 291:
  
 \\ \\
-== 2.3.1 <code>appdata</code> folder ==+== 2.3.1 appdata folder == 
 +''appdata'' 
 + 
 +(This name matches the diagrams in this document. You can create the shared folder with any name you prefer; the plugin will work the same.)
 \\ \\
   * WHAT IS APPDATA FOLDER:   * WHAT IS APPDATA FOLDER:
Line 305: Line 309:
 \\ \\
   * HOW TO CONFIGURE THE APPDATA FOLDER:   * HOW TO CONFIGURE THE APPDATA FOLDER:
-    * Create the //appdata// shared folder in the OMV GUI+    * In the plugin’s SETTINGS → COMPOSE FILES section, click the **+** button next to the SHARED FOLDER field to create a new shared folder, or select an existing one if you already have it
-    *...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; Beginners Info +    * If creating new folder: 
-</span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> +      NAME: <i>appdata</i> 
-To create shared folder: go to <b>STORAGE &gt; SHARED FOLDERS</b> and click <b>+ CREATE</b>.<br> +      FILE SYSTEM: choose the SSD/NVMe or drive you want to use 
-NAME: <i>appdata</i><br+      Click <b>SAVE</b> 
-FILE SYSTEM: choose the SSD/NVMe or drive you want to use<br> +    * Once selected, click **SAVE** in the plugin settings to apply the choice. 
-Click <b>SAVE</b><br> +
-</tr></table></body></html+
-    * In the plugin’s SETTINGS → COMPOSE FILES section, select the //appdata// shared folder from the drop-down and click SAVE.+
     *...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; Beginners Info     *...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; Beginners Info
 </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;">
Line 348: Line 350:
 \\ \\
 == 2.3.2 data folder == == 2.3.2 data folder ==
 +''data''
 +
 +(This name matches the diagrams in this document. You can create the shared folder with any name you prefer; the plugin will work the same.)
 \\ \\
   * WHAT IS DATA FOLDER:   * WHAT IS DATA FOLDER:
Line 361: Line 366:
 \\ \\
 == 2.3.3 backup_compose folder == == 2.3.3 backup_compose folder ==
 +''backup_compose''
 +
 +(This name matches the diagrams in this document. You can create the shared folder with any name you prefer; the plugin will work the same.)
 \\ \\
   * WHAT IS BACKUP_COMPOSE FOLDER:   * WHAT IS BACKUP_COMPOSE FOLDER:
Line 377: Line 385:
 \\ \\
 == 2.3.4 docker folder == == 2.3.4 docker folder ==
 +''docker''
 +
 +(This name matches the diagrams in this document. You can create the shared folder with any name you prefer; the plugin will work the same.)
 \\ \\
   * WHAT IS DOCKER FOLDER:   * WHAT IS DOCKER FOLDER:
Line 411: Line 422:
 === 3. Create appuser === === 3. Create appuser ===
  
-If you have read the introduction of this document you already know if the //appuser// user is enough for you or you need something else. If you are happy with this user for some or all of the containers go ahead, otherwise customize it as above.+If you read the introductionyou already know whether the //appuser// user is sufficient for your needs or if you should create a custom user. 
 + 
 +If you are happy with this user for some or all containers, proceed; otherwisecustomize it as explained earlier.
  
 {{ :omv7:dockeromv7-8.jpg?direct&400|Expand image -> UID-GID}} {{ :omv7:dockeromv7-8.jpg?direct&400|Expand image -> UID-GID}}
   * In the OMV GUI create a user called //appuser//.   * In the OMV GUI create a user called //appuser//.
   * Add //appuser// to the groups you need.   * Add //appuser// to the groups you need.
-    * For example, if you are going to use hardware transcoding with an Intel GPU you will want to add this user to the //render// and //video// groups.+    * For example, if you plan to use hardware transcoding with an Intel GPUadd this user to the ''render'' and ''video'' groups.
     * ...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#FFB663;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160;      * ...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#FFB663;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; 
 Warning  Warning 
 </span></strong></td></tr><tr><td style="background-color:#FFE4A6;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#FFE4A6;height:25px;width:380px;">
-Don'add <i>appuser</i> to the <i>docker</i> group. This is a security hole.+Do not add <i>appuser</i> to the <i>docker</i> group. This creates a security hole.
 </tr></table></body></html> </tr></table></body></html>
-  * Edit //appuser//'s permissions and grant the appropriate permissions to each shared folder that the containers should be able to access. Persistent configuration data will generally be stored in //appdata//, so we'll give appuser write permissions to the //appdata// folderIt must also have access to the shared folders defined as volumes in the containersFor example, for Jellyfin, this could be the /media folder where movies are stored. Make sure this user only has access to the necessary folders.+  * Edit //appuser//'s permissions and grant appropriate access to each shared folder that containers will need: 
 +    * Give write access to //appdata// (for persistent container configuration). 
 +    * Give access only to the folders required as container volumes (e.g., ''/media'' for Jellyfin movies).
   * ...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; Beginners Info   * ...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; Beginners Info
 </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;">
Line 429: Line 444:
 - Go to the USERS > USERS tab and press the +CREATE button.<br> - Go to the USERS > USERS tab and press the +CREATE button.<br>
 - In the NAME field type <i>appuser</i><br> - In the NAME field type <i>appuser</i><br>
-- In the PASSWORD field define a strong password and confirm it in the next field.<br> +- In the PASSWORD field define a strong password and confirm it.<br> 
-- If you need to add <i>appuser</i> to a group, click the GROUPS field and choose the ones you need.<br> +- If needed, add <i>appuser</i> to the required groups by clicking the GROUPS field.<br> 
-- Click on SAVE button.<br><br>+- Click SAVE.<br><br>
 To assign permissions to <i>appuser</i>, select <i>appuser</i> and press the SHARED FOLDER PERMISSIONS button.<br> To assign permissions to <i>appuser</i>, select <i>appuser</i> and press the SHARED FOLDER PERMISSIONS button.<br>
-On each line of each shared folder, choose the appropriate permissions and click the corresponding box so that it is yellow.<br> +For each folder, choose the appropriate permissions and ensure the box is highlighted in yellow.<br> 
-- Click on SAVE button.<br>+- Click SAVE.<br>
  <br>  <br>
 </tr></table></body></html> </tr></table></body></html>
-  * Open the UID and GID columns and take note of the values ​​that //appuser// has.+  * Open the UID and GID columns and note the values for //appuser//:
     * Example: UID=1002 GID=100     * Example: UID=1002 GID=100
-    * If you already had one user, //appuser// UID will be 1001. If you had 2 users, //appuser// UID will be 1002, etc. This may vary on your system.+    * If you already have one user, //appuser// UID will be 1001; with two users, UID=1002, etc. This may vary depending on your system.
  
 <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#FFB663;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160;  <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#FFB663;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; 
 Warning Warning
 </span></strong></td></tr><tr><td style="background-color:#FFE4A6;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#FFE4A6;height:25px;width:380px;">
-Except for very controlled special cases, <b>never</b> designate the admin user (UID=998) or the root user (UID=0) to manage a container. This is a <b>serious security flaw</b>.<br> +Except in very controlled special cases, <b>never</b> assign the admin user (UID=998) or root (UID=0) to manage a container. This is a <b>serious security flaw</b>.<br> 
-If we do this we are giving the container complete freedom to do whatever it wants in our system. Have you created this container? Do you know what he is capable of doing?+Doing so gives the container unrestricted access to your system. Consider carefully what the container is capable of doing before assigning elevated privileges.
 </tr></table></body></html> </tr></table></body></html>
  
Line 452: Line 467:
 === 4. Global environmental variables === === 4. Global environmental variables ===
  
-Global environment variables will be used in the procedure that follows this document.+Global environment variables are used in the procedures described in this document.
  
-The plugin allows you to define global environment variables in a file that will be available to all running containers. This means that the variables defined in this file can be used in the different compose files. When you start a container, docker will replace those variables with their real values.+The plugin allows you to define these variables in a **single global file**. This file is then available to **all running containers**, so you can reference the same variables across different compose files. When a container startsDocker automatically replaces the variable names in the compose files with the actual values from the global file.
  
-This is very useful for defining paths to folders or the user running the container. We define these values ​​once and have them updated automatically in all containers.+This makes it easy to **define paths and user IDs** once and have them applied everywhere, ensuring consistency and simplifying maintenance.
  
-Example:+Example global environment file:
 {{ :omv7:dockeromv7-9.jpg?direct&400|Expand image -> OMV System}} {{ :omv7:dockeromv7-9.jpg?direct&400|Expand image -> OMV System}}
   * Variables defined in the global variables file:   * Variables defined in the global variables file:
Line 492: Line 507:
 </code> </code>
  
-  * Now we could define the following compose file:+  * Using these variables, you could write a compose file like this:
  
 <code> <code>
Line 514: Line 529:
 </code> </code>
  
-  * And the file that would actually be executed would be this:+  * When Docker executes the compose file, it replaces the variables with the real values:
  
 <code> <code>
Line 536: Line 551:
 </code> </code>
  
-What this variable system does is convert the variables that we have defined in the compose file into the actual values ​​that we need to define in the compose file. If we are only creating one compose file it may not make much sense, but it is very useful when there are several compose files.+Why this is useful: 
 + 
 +  * You only define paths and IDs once. 
 +  * Compose files never need to be modified if you move folders or reinstall OMV. 
 +  * All containers automatically pick up the updated values.
  
-The advantage of using this system is that we define the compose file once and never need to modify it. Even if we reinstall the OMV system we just need to update those global variables and all our containers will be up to date and continue to work as before. 
 \\ \\
 <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160;
  Note  Note
 </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;">
-At this time, the plugin fully supports global environment variables, even while using the plugin's backup utility, so there is no reason to use symlinks. But if you want to use them for some reason, you can still do so.<br>+The plugin fully supports global environment variableseven when using its backup utility. There is no need to use symlinks. If you prefer, you can still use them, but it is optional. If you don’t want to use variables, you can write the full paths and values directly in your compose files. 
 +The plugin fully supports global environment variables, even while using the plugin's backup utility, so there is no reason to use symlinks.<br> 
 +But if you want to use them for some reason, you can still do so.<br>
 If you don't want to use environment variables, simply write the full values ​​to the compose files without using variables. If you don't want to use environment variables, simply write the full values ​​to the compose files without using variables.
 </tr></table></body></html> </tr></table></body></html>
 \\ \\
-  * In the OMV GUI go to SERVICES > COMPOSE > FILES and press the EDIT GLOBAL ENVIRONEMENT FILE button. +How to configure in the OMV GUI
-    *  In the GLOBAL ENVIRONMENT field copy and paste the example file at the beginning of this section.+ 
 +  * Go to SERVICES > COMPOSE > FILES and press the EDIT GLOBAL ENVIRONEMENT FILE button. 
 +    * In the GLOBAL ENVIRONMENT field copy and paste the example file at the beginning of this section.
   * Customize it with your own values.   * Customize it with your own values.
     * PUID and PGID -> You can see the values ​​of user //appuser// in USERS > USERS in the UID and GID columns. See point 3 of this document.     * PUID and PGID -> You can see the values ​​of user //appuser// in USERS > USERS in the UID and GID columns. See point 3 of this document.
Line 563: Line 585:
 \\ \\
 \\ \\
-=== Choose a container ===+==== 1. Choose a container ====
 \\ \\
 [[https://hub.docker.com/|{{ :omv7:dockeromv7-10.png?direct&200|Go to -> https://hub.docker.com/}}]] [[https://hub.docker.com/|{{ :omv7:dockeromv7-10.png?direct&200|Go to -> https://hub.docker.com/}}]]
-  * On the [[https://hub.docker.com/|dockerhub]] there are thousands of containers ready to configure+  * On [[https://hub.docker.com/|dockerhub]] there are thousands of containers ready to use
-    * Try to choose containers from reputable publishers ([[https://www.linuxserver.io/|linuxserver]] is very popular) or with many downloads and current ones+    * Try to choose containers from reputable publishers ([[https://www.linuxserver.io/|linuxserver]] is very popular) or containers with many downloads and regular updates
-    * Check that the container is compatible with your server's architecture amd64, arm64..+    * Check that the container is compatible with your server's architecture: **amd64****arm64**, etc
-    * When choosing one read the publisher's recommendations before installing it.+    * When choosing oneread the publisher's recommendations before installing it.
 [[https://www.linuxserver.io/|{{ :omv7:dockeromv7-11.png?direct&200|Go to -> https://www.linuxserver.io/}}]] [[https://www.linuxserver.io/|{{ :omv7:dockeromv7-11.png?direct&200|Go to -> https://www.linuxserver.io/}}]]
-  * The plugin has examples that you can install directly. As an example we are going to install [[https://jellyfin.org/|Jellyfin]].+  * The plugin includes examples that you can install directly. 
 +  * As an example we are going to install [[https://jellyfin.org/|Jellyfin]].
     *...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160;      *...<html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; 
 Note Note
 </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;">
-If you have configured folders in the plugin's SETTINGS tab, the example files will usually work as is, but you may want to modify them to optimize your settingsIf you finish reading this document and look at any of the example files, you will understand why.+If you have configured folders in the plugin's SETTINGS tab, the example files will usually work as-is, but you may still want to modify them to optimize your setupAfter finishing this document and looking at any example file, you will understand why.
 </tr></table></body></html> </tr></table></body></html>
     * Go to SERVICES > COMPOSE > FILES and click ADD button, then click ADD FROM EXAMPLE button.     * Go to SERVICES > COMPOSE > FILES and click ADD button, then click ADD FROM EXAMPLE button.
-      * Click on the EXAMPLE field and in the list look for the jellyfin file and select it.+      * Click on the EXAMPLE field and and select the **jellyfin** file from the list.
       * In the NAMEame field you can simply write //jellyfin//       * In the NAMEame field you can simply write //jellyfin//
-      * In the DESCRIPTION field you can write something to identify it as Media server. +      * In the DESCRIPTION field you can write something to identify it as //Media server//
-      * Press SAVE button+      * Press SAVE. 
-    * In the form you will see a line with the compose file you just added called //jellyfin//. Select that file and press the EDIT button. At the time of writing this document, the example compose file looks like this:+    * You will now see a line with the compose file you just addedcalled //jellyfin//. Select that file and click EDIT. At the time of writing this document, the example compose file looks like this:
 <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160;  <html><body><table width="100%" border="0"><tr><td colspan="2" style="background-color:#69A5FF;height:30px;"><strong><span style="color:#FFFFFF;font-size:110%;">&#160; 
 Beginners Info Beginners Info
 </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;"> </span></strong></td></tr><tr><td style="background-color:#E6FEFF;height:25px;width:380px;">
-You will find containers where the creator has not published a compose file. Containers can be run from the CLI with a command line. The plugin uses docker-compose for easy setup but you need that compose file. If you can't find it, you can build it yourself using Composerize and starting from that container's docker command. There is a prepared Composerize container in the plugin's examples list.+Some containers do not provide a compose file. They can be run from the CLI using docker command. The plugin uses docker-compose for easy setupbut you still need the compose file. If you can't find it, you can generate one using <b>Composerize</b> starting from the container's docker command. There is a prepared Composerize container in the plugin's examples list.
 </tr></table></body></html> </tr></table></body></html>
 [[https://jellyfin.org/|{{ :omv7:dockeromv7-12.png?200|Go to -> https://jellyfin.org/}}]] [[https://jellyfin.org/|{{ :omv7:dockeromv7-12.png?200|Go to -> https://jellyfin.org/}}]]
  • docs_in_draft/docker_in_omv.1765208189.txt.gz
  • Last modified: 2025/12/08 15:36
  • by chente
  • Currently locked by: chente