docker-documentation/search/search_index.json

1 wiersz
2.6 MiB

{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"<p>Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information, in order to help our users get started. In addition to individual set up guides for each image, there is also general information, and best practices, pertaining to running Docker containers.</p>"},{"location":"#want-to-get-hold-of-the-team","title":"Want to get hold of the team?","text":"<p>The team resides primarily in our Discord server. We also have a forum if chat isn't your thing.</p> Where Link Discord https://discord.gg/YWrKVTn Forum https://discourse.linuxserver.io <p>For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/</p>"},{"location":"FAQ/","title":"FAQ","text":"<p>Here resides some Frequently Asked Questions.</p>"},{"location":"FAQ/#jammy","title":"My host is incompatible with images based on Ubuntu Jammy","text":"<p>Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.</p>"},{"location":"FAQ/#symptoms","title":"Symptoms","text":"<p>If your host is affected you may see errors in your containers such as:</p> <pre><code>ERROR - Unable to determine java version; make sure Java is installed and callable\n</code></pre> <p>Or</p> <pre><code>Failed to create CoreCLR, HRESULT: 0x80070008\n</code></pre> <p>Or</p> <pre><code>WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread\n</code></pre>"},{"location":"FAQ/#resolution","title":"Resolution","text":""},{"location":"FAQ/#long-term-fix","title":"Long-Term Fix","text":"<p>Upgrade your Docker engine to at least version <code>20.10.10</code>. Refer to the official Docker docs for installation/update details.</p>"},{"location":"FAQ/#short-term-fix","title":"Short-Term Fix","text":"<p>For Docker CLI, run your container with:</p> <p><code>--security-opt seccomp=unconfined</code></p> <p>For Docker Compose, run your container with:</p> <pre><code>security_opt:\n - seccomp=unconfined\n</code></pre>"},{"location":"FAQ/#rdesktop","title":"My host is incompatible with images based on rdesktop","text":"<p>Some x86_64 hosts have issues running rdesktop based images even with the latest Docker version due to syscalls that are unknown to Docker.</p>"},{"location":"FAQ/#symptoms_1","title":"Symptoms","text":"<p>If your host is affected you may see errors in your containers such as:</p> <pre><code>Failed to close file descriptor for child process (Operation not permitted)\n</code></pre>"},{"location":"FAQ/#resolution_1","title":"Resolution","text":"<p>For Docker CLI, run your container with:</p> <p><code>--security-opt seccomp=unconfined</code></p> <p>For Docker Compose, run your container with:</p> <pre><code> security_opt:\n - seccomp=unconfined\n</code></pre>"},{"location":"FAQ/#libseccomp","title":"My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later","text":"<p>This only affects 32 bit installs of distros based on Debian Buster.</p> <p>This is due to a bug in the libseccomp2 library (dependency of Docker itself), which is fixed. However, it's not pushed to all the repositories.</p> <p>A GitHub issue tracking this</p> <p>You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3).</p>"},{"location":"FAQ/#resolution_2","title":"Resolution","text":"<p>If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed.</p> <p>If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, refer to the official Docker docs for installation.</p>"},{"location":"FAQ/#manual-patch","title":"Manual patch","text":"<p>Manually install an updated version of the library with dpkg.</p> <pre><code>wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb\nsudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb\n</code></pre> <p>Info</p> <p>This url may have been updated. Find the latest by browsing here.</p>"},{"location":"FAQ/#automatic-patch","title":"Automatic Patch","text":"<p>Add the backports repo for DebianBuster. As seen here.</p> <pre><code>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138\necho \"deb http://deb.debian.org/debian buster-backports main\" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list\nsudo apt update\nsudo apt install -t buster-backports libseccomp2\n</code></pre>"},{"location":"FAQ/#move-to-a-compatible-os","title":"Move to a compatible OS","text":"<p>Reinstall/update your OS to a version that still gets updates.</p> <ul> <li>Any distro based on DebianStretch does not seem to have this package available</li> <li>DebianBuster based distros can get the package trough backports, as outlined in point 2.</li> </ul> <p>Info</p> <p>RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel</p>"},{"location":"FAQ/#symptoms_2","title":"Symptoms","text":"<ul> <li>502 errors in Jellyfin as seen in linuxserver/docker-jellyfin#71</li> <li><code>Error starting framework core</code> messages in the docker log for Plex. linuxserver/docker-plex#247</li> <li>No WebUI for Radarr, even though the container is running. linuxserver/docker-radarr#118</li> <li>Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to <code>error getting time:crypto/asn1/a_time.c:330</code></li> <li><code>docker exec &lt;container-name&gt; date</code> returns 1970</li> </ul>"},{"location":"FAQ/#storage","title":"My host filesystem is incompatible with my docker storage driver","text":"<p>Some host file systems types are not compatible with the default storage driver of docker (overlay2)</p>"},{"location":"FAQ/#symptoms_3","title":"Symptoms","text":"<p>If your host is affected you may see errors in your containers such as:</p> <pre><code>ERROR Found no accessible config files\n</code></pre> <p>or</p> <pre><code>Directory not empty. This directory contains an empty ignorecommands sub-directory\n</code></pre>"},{"location":"FAQ/#resolution_3","title":"Resolution","text":"<p>As shown in Docker docs</p> <p>A host filesystem of zfs requires a docker storage driver of zfs and a host file system of btrfs requires a docker storage driver of btrfs. Correcting this oversight will resolve the issue. This is not something that a container change will resolve.</p>"},{"location":"FAQ/#lscr","title":"What is lscr.io","text":"<p>LSCR is a vanity url for our images, this is provided to us in collaboration with scarf.sh. It is not a dedicated docker registry, rather a redirection service. As of writing it redirects to GitHub Container Registry (ghcr.io).</p> <p>Aside from giving us the ability to redirect to another backend, if necessary, it also exposes telemetry about pulls, historically only available to the backend provider. We base some decisions on this data, as it gives us a somewhat realistic usage overview (relative to just looking at pulls on DockerHub).</p> <p>We have some blog posts related to how we utilize Scarf:</p> <ul> <li>End of an Arch</li> <li>Unravelling Some Stats</li> <li>Wrap Up Warm For Winter</li> </ul>"},{"location":"FAQ/#lscr-no-connect","title":"I cannot connect to lscr.io","text":"<p>Due to the nature of Scarf as a Docker gateway which gathers usage metrics, some overzealous privacy-focused blocklists will include its domains.</p> <p>If you want to help us in getting a better overview of how people use our containers, you should add <code>gateway.scarf.sh</code> to the allowlist in your blocklist solution.</p> <p>Alternatively, you can use Docker Hub or GHCR directly to pull your images, although be aware that all public registries gather user metrics, so this doesn't provide you with any real benefit in that area.</p> <p>If Scarf is on the blocklist, you will get an error message like this when trying to pull an image:</p> <pre><code>Error response from daemon: Get \"https://lscr.io/v2/\": dial tcp: lookup lscr.io: no such host\n</code></pre> <p>This is, however, a generic message. To rule out a service-interruption, you should also see if you can resolve the backend provider.</p> <p>Using dig:</p> <pre><code>dig ghcr.io +short\ndig lscr.io +short\n</code></pre> <p>Using nslookup:</p> <pre><code>nslookup ghcr.io\nnslookup lscr.io\n</code></pre> <p>If you only got a response from ghcr, chances are that Scarf is on the blocklist.</p>"},{"location":"FAQ/#strict-proxy","title":"I want to reverse proxy an application which defaults to https with a self-signed certificate","text":""},{"location":"FAQ/#strict-proxy-traefik","title":"Traefik","text":"<p>In this example, we will configure a serverTransport rule we can apply to a service, as well as telling Traefik to use https on the backend for the service.</p> <p>Create a ServerTransport in your dynamic Traefik configuration; we are calling ours <code>ignorecert</code>.</p> <pre><code> http:\n serversTransports:\n ignorecert:\n insecureSkipVerify: true\n</code></pre> <p>Then on our <code>foo</code> service we tell it to use this rule, as well as telling Traefik the backend is running on https.</p> <pre><code> - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert\n - traefik.http.services.foo.loadbalancer.server.scheme=https\n</code></pre>"},{"location":"deprecated_images/docker-airsonic/","title":"airsonic","text":""},{"location":"deprecated_images/docker-airsonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced</p>"},{"location":"deprecated_images/docker-airsonic/#linuxserverairsonic","title":"linuxserver/airsonic","text":"<p>Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.</p>"},{"location":"deprecated_images/docker-airsonic/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/airsonic</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-airsonic/#application-setup","title":"Application Setup","text":"<p>Access WebUI at <code>&lt;your-ip&gt;:4040</code>.</p> <p>Default user/pass is admin/admin</p> <p>Extra java options can be passed with the JAVA_OPTS environment variable, eg <code>-e JAVA_OPTS=\"-Xmx256m -Xms256m\"</code>. For some reverse proxies, you may need to pass <code>JAVA_OPTS=-Dserver.use-forward-headers=true</code> for airsonic to generate the proper URL schemes.</p> <p>Note that if you want to use Airsonic's Java jukebox player, then <code>PGID</code> will need to match the group of your sound device (e.g. <code>/dev/snd</code>).</p>"},{"location":"deprecated_images/docker-airsonic/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-airsonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n airsonic:\n image: lscr.io/linuxserver/airsonic\n container_name: airsonic\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - CONTEXT_PATH=&lt;URL_BASE&gt; #optional\n - JAVA_OPTS=&lt;options&gt; #optional\n volumes:\n - &lt;/path/to/config&gt;:/config\n - &lt;/path/to/music&gt;:/music\n - &lt;/path/to/playlists&gt;:/playlists\n - &lt;/path/to/podcasts&gt;:/podcasts\n - &lt;/path/to/other media&gt;:/media #optional\n ports:\n - 4040:4040\n devices:\n - /dev/snd:/dev/snd #optional\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-airsonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=airsonic \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e CONTEXT_PATH=&lt;URL_BASE&gt; `#optional` \\\n -e JAVA_OPTS=&lt;options&gt; `#optional` \\\n -p 4040:4040 \\\n -v &lt;/path/to/config&gt;:/config \\\n -v &lt;/path/to/music&gt;:/music \\\n -v &lt;/path/to/playlists&gt;:/playlists \\\n -v &lt;/path/to/podcasts&gt;:/podcasts \\\n -v &lt;/path/to/other media&gt;:/media `#optional` \\\n --device /dev/snd:/dev/snd `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/airsonic\n</code></pre>"},{"location":"deprecated_images/docker-airsonic/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-airsonic/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4040</code> WebUI"},{"location":"deprecated_images/docker-airsonic/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>CONTEXT_PATH=&lt;URL_BASE&gt;</code> For setting url-base in reverse proxy setups. <code>JAVA_OPTS=&lt;options&gt;</code> For passing additional java options."},{"location":"deprecated_images/docker-airsonic/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration file location. <code>/music</code> Location of music. <code>/playlists</code> Location for playlists to be saved to. <code>/podcasts</code> Location of podcasts. <code>/media</code> Location of other media."},{"location":"deprecated_images/docker-airsonic/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/snd</code> Only needed to pass your host sound device to Airsonic's Java jukebox player."},{"location":"deprecated_images/docker-airsonic/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-airsonic/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-airsonic/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-airsonic/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-airsonic/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-airsonic/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it airsonic /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f airsonic</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic</code></li> </ul>"},{"location":"deprecated_images/docker-airsonic/#versions","title":"Versions","text":"<ul> <li>13.01.22: - Deprecate in favor of airsonic-advanced.</li> <li>24.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>05.01.19: - Linting fixes.</li> <li>27.08.18: - Use new inhouse java baseimage for quicker builds.</li> <li>23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's.</li> <li>22.04.18: - Add the forgotten JAVA_OPTS to the run command.</li> <li>29.12.17: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-baseimage-alpine-python/","title":"baseimage-alpine-python","text":""},{"location":"deprecated_images/docker-baseimage-alpine-python/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-alpine-python/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Alpine linux, python2 and S6 overlay..</p> <p>Featuring :-</p> <ul> <li>weekly updates</li> <li>security updates</li> </ul> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"deprecated_images/docker-baseimage-cloud9/","title":"baseimage-cloud9","text":""},{"location":"deprecated_images/docker-baseimage-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-cloud9/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu linux and Cloud9..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"deprecated_images/docker-baseimage-guacgui/","title":"baseimage-guacgui","text":""},{"location":"deprecated_images/docker-baseimage-guacgui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-guacgui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum"},{"location":"deprecated_images/docker-baseimage-guacgui/#linuxserverdocker-baseimage-guacgui","title":"linuxserver/docker-baseimage-guacgui","text":"<p>A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole</p>"},{"location":"deprecated_images/docker-baseimage-guacgui/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/docker-baseimage-guacgui</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-baseimage-guacgui/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container.</p>"},{"location":"deprecated_images/docker-baseimage-guacgui/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=docker-baseimage-guacgui \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e APPNAME=xclock \\\n -e GUAC_USER=abc `#optional` \\\n -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 `#optional` \\\n -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz `#optional` \\\n -p 8080:8080 \\\n -p 3389:3389 \\\n -v &lt;/path/to/appdata&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/docker-baseimage-guacgui\n</code></pre>"},{"location":"deprecated_images/docker-baseimage-guacgui/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n docker-baseimage-guacgui:\n image: linuxserver/docker-baseimage-guacgui\n container_name: docker-baseimage-guacgui\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - APPNAME=xclock\n - GUAC_USER=abc #optional\n - GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 #optional\n - GUAC_KEYBOARD_LAYOUT=de-de-qwertz #optional\n volumes:\n - &lt;/path/to/appdata&gt;:/config\n ports:\n - 8080:8080\n - 3389:3389\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-baseimage-guacgui/#parameters","title":"Parameters","text":"<p>Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p> Parameter Function <code>-p 8080</code> Allows HTTP access to the internal X server. <code>-p 3389</code> Allows RDP access to the internal X server. <code>-e PUID=1000</code> for UserID - see below for explanation <code>-e PGID=1000</code> for GroupID - see below for explanation <code>-e TZ=Europe/London</code> Specify a timezone to use EG Europe/London <code>-e APPNAME=xclock</code> Specify the graphical application name shown on RDP access. <code>-e GUAC_USER=abc</code> Specify the username for guacamole's web interface. <code>-e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72</code> Specify the password's md5 hash for guacamole's web interface. <code>-e GUAC_KEYBOARD_LAYOUT=de-de-qwertz</code> Specify the used keyboard layout for the RDP session used by the gucamole client. Possible values are \"en-us-qwerty\" (default), de-de-qwertz (German keyboard (qwertz)), fr-fr-azerty (French keyboard (azerty)), fr-ch-qwertz (Swiss French keyboard (qwertz)), it-it-qwerty (Italian keyboard), ja-jp-qwerty (Japanese keyboard) and sv-se-qwerty (Swedish keyboard). <code>-v /config</code> Contains X user's home directory contents. <p> </p>"},{"location":"deprecated_images/docker-baseimage-guacgui/#application-setup","title":"Application Setup","text":"<p>This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage. \u00a0 If <code>GUAC_USER</code> and <code>GUAC_PASS</code> are not set, there is no authentication. Passwords can be generated via the following: <pre><code>echo -n password | openssl md5\n</code></pre> <pre><code>printf '%s' password | md5sum\n</code></pre> Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security.</p> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"deprecated_images/docker-baseimage-gui/","title":"baseimage-gui","text":""},{"location":"deprecated_images/docker-baseimage-gui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-gui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum"},{"location":"deprecated_images/docker-baseimage-gui/#linuxserverdocker-baseimage-gui","title":"linuxserver/docker-baseimage-gui","text":"<p>A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox</p>"},{"location":"deprecated_images/docker-baseimage-gui/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lsiobase/nginx</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-baseimage-gui/#usage","title":"Usage","text":"<p>Here is an example to help you get started creating a graphical container.</p>"},{"location":"deprecated_images/docker-baseimage-gui/#dockerfile","title":"Dockerfile","text":"<pre><code>#Firefox via RDP\nFROM lsiobase/ubuntu-gui:amd64-latest\n\n#########################################\n## ENVIRONMENTAL CONFIG ##\n#########################################\n# Set correct environment variables\nENV TERM=\"xterm\" APPNAME=\"firefox\"\nARG DEBIAN_FRONTEND=noninteractive\n\n#########################################\n## INSTALL DEPENDENCIES ##\n#########################################\nRUN apt-get update \\\n&amp;&amp; apt-get -y upgrade \\\n&amp;&amp; apt-get install -qy --no-install-recommends \\\n firefox \\\n&amp;&amp; apt-get clean -y \\\n&amp;&amp; apt-get autoremove -y \\\n&amp;&amp; rm -rf /tmp/* /var/tmp/* \\\n&amp;&amp; rm -rf /var/lib/apt/lists/*\n\nCOPY root /\n</code></pre>"},{"location":"deprecated_images/docker-baseimage-gui/#servicefile","title":"servicefile","text":"<pre><code>#!/bin/execlineb -P\n# ./root/etc/service.d/firefox/run\n\n# Redirect stderr to stdout.\nfdmove -c 2 1\n\n# Wait until openbox is running\nif { s6-svwait -t 10000 -U /var/run/s6/services/openbox/ }\n\n# Drop privileges and set env\ns6-setuidgid abc\ns6-env DISPLAY=:1 HOME=/config\n\n# Execute Firefox\n/usr/bin/firefox\n</code></pre>"},{"location":"deprecated_images/docker-baseimage-gui/#access-the-graphical-interface","title":"Access the Graphical Interface","text":"<p>Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client</p> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"deprecated_images/docker-baseimage-mono/","title":"baseimage-mono","text":""},{"location":"deprecated_images/docker-baseimage-mono/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our Jammy baseimage instead: https://github.com/linuxserver/docker-baseimage-ubuntu</p> <p>See our Duplicati image for an example using mono: https://github.com/linuxserver/docker-duplicati</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-mono/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu cloud image, mono and S6 overlay..</p> <p>Featuring :-</p> <ul> <li>weekly updates</li> <li>security updates</li> </ul> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"deprecated_images/docker-baseimage-rdesktop-web/","title":"baseimage-rdesktop-web","text":""},{"location":"deprecated_images/docker-baseimage-rdesktop-web/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. This base image has been replaced by: https://github.com/linuxserver/docker-baseimage-kasmvnc</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-rdesktop-web/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu linux and xrdp</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"deprecated_images/docker-baseimage-rdesktop/","title":"baseimage-rdesktop","text":""},{"location":"deprecated_images/docker-baseimage-rdesktop/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to a newer tag</p> <p></p>"},{"location":"deprecated_images/docker-baseimage-rdesktop/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu linux and xrdp</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"deprecated_images/docker-booksonic/","title":"booksonic","text":""},{"location":"deprecated_images/docker-booksonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air</p>"},{"location":"deprecated_images/docker-booksonic/#linuxserverbooksonic","title":"linuxserver/booksonic","text":"<p>Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.</p>"},{"location":"deprecated_images/docker-booksonic/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/booksonic</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-booksonic/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. <code>latest</code> tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.</p> Tag Description latest Stable Booksonic releases prerelease Booksonic Pre-releases"},{"location":"deprecated_images/docker-booksonic/#application-setup","title":"Application Setup","text":"<p>Default user/pass is admin/admin</p>"},{"location":"deprecated_images/docker-booksonic/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-booksonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n booksonic:\n image: lscr.io/linuxserver/booksonic\n container_name: booksonic\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - CONTEXT_PATH=url-base\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;/path/to/audiobooks&gt;:/audiobooks\n - &lt;/path/to/podcasts&gt;:/podcasts\n - &lt;/path/to/othermedia&gt;:/othermedia\n ports:\n - 4040:4040\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-booksonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=booksonic \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e CONTEXT_PATH=url-base \\\n -p 4040:4040 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;/path/to/audiobooks&gt;:/audiobooks \\\n -v &lt;/path/to/podcasts&gt;:/podcasts \\\n -v &lt;/path/to/othermedia&gt;:/othermedia \\\n --restart unless-stopped \\\n lscr.io/linuxserver/booksonic\n</code></pre>"},{"location":"deprecated_images/docker-booksonic/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-booksonic/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4040</code> Application WebUI"},{"location":"deprecated_images/docker-booksonic/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>CONTEXT_PATH=url-base</code> Base url for use with reverse proxies etc."},{"location":"deprecated_images/docker-booksonic/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files. <code>/audiobooks</code> Audiobooks. <code>/podcasts</code> Podcasts. <code>/othermedia</code> Other media."},{"location":"deprecated_images/docker-booksonic/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-booksonic/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-booksonic/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-booksonic/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-booksonic/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-booksonic/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it booksonic /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f booksonic</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic</code></li> </ul>"},{"location":"deprecated_images/docker-booksonic/#versions","title":"Versions","text":"<ul> <li>06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air</li> <li>11.08.20: - Changed upstream github repo location</li> <li>22.12.19: - Revert to pulling in external war, upgrade jetty.</li> <li>30.04.19: - Switching to build war from source, use stable booksonic releases.</li> <li>24.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>16.01.19: - Adding pipeline logic and multi arch.</li> <li>05.01.19: - Linting fixes.</li> <li>27.08.18: - Rebase to ubuntu bionic.</li> <li>06.12.17: - Rebase to alpine 3.7.</li> <li>11.07.17: - Rebase to alpine 3.6.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>13.12.16: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-cardigann/","title":"cardigann","text":""},{"location":"deprecated_images/docker-cardigann/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett.</p>"},{"location":"deprecated_images/docker-cardigann/#linuxservercardigann","title":"linuxserver/cardigann","text":"<p>Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format.</p>"},{"location":"deprecated_images/docker-cardigann/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/cardigann</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-cardigann/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-cardigann/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=cardigann \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e SOCKS_PROXY=IP:PORT \\\n -e HTTP_PROXY=IP:PORT \\\n -p 5060:5060 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/cardigann\n</code></pre>"},{"location":"deprecated_images/docker-cardigann/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n cardigann:\n image: linuxserver/cardigann\n container_name: cardigann\n environment:\n - PUID=1000\n - PGID=1000\n - SOCKS_PROXY=IP:PORT\n - HTTP_PROXY=IP:PORT\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 5060:5060\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-cardigann/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-cardigann/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5060</code> The port for the Cardigann webinterface"},{"location":"deprecated_images/docker-cardigann/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>SOCKS_PROXY=IP:PORT</code> for using a socks proxy (optional) <code>HTTP_PROXY=IP:PORT</code> for using a HTTP proxy (optional)"},{"location":"deprecated_images/docker-cardigann/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Cardigann config"},{"location":"deprecated_images/docker-cardigann/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-cardigann/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:5060</code>, for more information check out Cardigann.</p> <p>By adding a variable to the run command, <code>SOCKS_PROXY</code> or <code>HTTP_PROXY</code> cardigann can be used with a proxy, eg <code>-e SOCKS_PROXY=localhost:1080</code></p> <p>The folder <code>/config/definitions</code> can be used to add additional tracker definitions (for more info see Additional definitions ).</p>"},{"location":"deprecated_images/docker-cardigann/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it cardigann /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f cardigann</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cardigann</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/cardigann</code></li> </ul>"},{"location":"deprecated_images/docker-cardigann/#versions","title":"Versions","text":"<ul> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>01.02.19: - Multi arch images and pipeline build logic</li> <li>14.01.19: - Add multi arch and pipeline logic</li> <li>22.08.18: - Rebase to alpine 3.8</li> <li>06.05.18: - Use buildstage in Dockerfile</li> <li>06.12.17: - Rebase to alpine 3.7</li> <li>12.08.17: - Add npm install to build stage</li> <li>25.05.17: - Rebase to alpine 3.6</li> <li>07.02.17: - Rebase to alpine 3.5</li> <li>03.11.16: - Compiled using sstamoulis' method</li> <li>01.11.16: - Initial Release</li> </ul>"},{"location":"deprecated_images/docker-chevereto/","title":"chevereto","text":""},{"location":"deprecated_images/docker-chevereto/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/</p>"},{"location":"deprecated_images/docker-chevereto/#linuxserverchevereto","title":"linuxserver/chevereto","text":"<p>Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.</p>"},{"location":"deprecated_images/docker-chevereto/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/chevereto:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-chevereto/#application-setup","title":"Application Setup","text":"<p>Chevereto-Free now has a maintainer!</p> <p>~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~</p> <p>Access the WebUI at :443. For more information, check out Chevereto Free. <p>Chevereto requires a MariaDB database, we have an image available here if you require it.</p> <p>If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set <code>set_real_ip_from</code> to match the IP address/address block of your proxy server(s).</p>"},{"location":"deprecated_images/docker-chevereto/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-chevereto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2\"\nservices:\n chevereto:\n image: lscr.io/linuxserver/chevereto\n container_name: chevereto\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /path/to/config:/config\n - /path/to/data:/data\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n depends_on:\n - chevereto-db\n\n chevereto-db:\n image: lscr.io/linuxserver/mariadb\n container_name: chevereto-db\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - MYSQL_ROOT_PASSWORD=&lt;yourrootpass&gt;\n - MYSQL_DATABASE=chevereto\n - MYSQL_USER=chevereto\n - MYSQL_PASSWORD=&lt;yourdbpass&gt;\n volumes:\n - /path/to/config:/config\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-chevereto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=chevereto \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=&lt;TZ&gt; \\\n -p 80:80 \\\n -p 443:443 \\\n -v &lt;path to config on host&gt;:/config \\\n -v &lt;path to data on host&gt;:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/chevereto:latest\n</code></pre>"},{"location":"deprecated_images/docker-chevereto/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-chevereto/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"deprecated_images/docker-chevereto/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=&lt;TZ&gt;</code> Timezone (i.e., America/New_York)"},{"location":"deprecated_images/docker-chevereto/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> config directory volume mapping <code>/data</code> data directory volume mapping"},{"location":"deprecated_images/docker-chevereto/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-chevereto/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-chevereto/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-chevereto/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-chevereto/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-chevereto/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it chevereto /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f chevereto</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chevereto</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chevereto:latest</code></li> </ul>"},{"location":"deprecated_images/docker-chevereto/#versions","title":"Versions","text":"<ul> <li>13.06.22: - Deprecate.</li> <li>13.11.21: - Add composer to fix missing dependencies.</li> <li>21.10.21: - Removed deprecation warning, change reposiory links.</li> <li>22.07.21: - Rebase to Alpine 3.14.</li> <li>28.08.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-clarkson/","title":"clarkson","text":""},{"location":"deprecated_images/docker-clarkson/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond</p>"},{"location":"deprecated_images/docker-clarkson/#linuxserverclarkson","title":"linuxserver/clarkson","text":"<p>Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.</p>"},{"location":"deprecated_images/docker-clarkson/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/clarkson</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-clarkson/#application-setup","title":"Application Setup","text":"<p>Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container.</p> <p>It is preferred if you create the <code>clarkson</code> schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the \"clarkson\" user will not have permission to create the schema on your behalf. You can, of course, use the \"root\" user, which has the ability to create schemas automatically, but this is not recommended.</p> <pre><code>CREATE SCHEMA `clarkson`;\nCREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `clarkson`.* TO 'clarkson_user';\n</code></pre> <p>Once running, the container will run an initial MySQL migration, which populates the schema with all tables and procedures. The application will start immediately afterwards. You will need to register an initial user, of which will be the admin of the application. All subsequent users will be standard users. You can disable registrations after the fact by recreating the container with the <code>ENABLE_REGISTRATIONS</code> flag set to <code>false</code>. This will not hide the \"Register\" link, but will disable the functionality.</p>"},{"location":"deprecated_images/docker-clarkson/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-clarkson/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n clarkson:\n image: lscr.io/linuxserver/clarkson\n container_name: clarkson\n environment:\n - PUID=1000\n - PGID=1000\n - MYSQL_HOST=&lt;mysql_host&gt;\n - MYSQL_USERNAME=&lt;mysql_username&gt;\n - MYSQL_PASSWORD=&lt;mysql_password&gt;\n - ENABLE_REGISTRATIONS=&lt;true/false&gt;\n - TZ=Europe/London\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-clarkson/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=clarkson \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e MYSQL_HOST=&lt;mysql_host&gt; \\\n -e MYSQL_USERNAME=&lt;mysql_username&gt; \\\n -e MYSQL_PASSWORD=&lt;mysql_password&gt; \\\n -e ENABLE_REGISTRATIONS=&lt;true/false&gt; \\\n -e TZ=Europe/London \\\n -p 3000:3000 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/clarkson\n</code></pre>"},{"location":"deprecated_images/docker-clarkson/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-clarkson/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> WebUI"},{"location":"deprecated_images/docker-clarkson/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>MYSQL_HOST=&lt;mysql_host&gt;</code> Points the backend to the MySQL database. This can be either a docker hostname or an IP. <code>MYSQL_USERNAME=&lt;mysql_username&gt;</code> The user with access to the clarkson schema. <code>MYSQL_PASSWORD=&lt;mysql_password&gt;</code> The password for the user. <code>ENABLE_REGISTRATIONS=&lt;true/false&gt;</code> Defaults to false. If set to true, allows new users to register. <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-clarkson/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"deprecated_images/docker-clarkson/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-clarkson/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-clarkson/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-clarkson/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-clarkson/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-clarkson/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it clarkson /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f clarkson</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' clarkson</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/clarkson</code></li> </ul>"},{"location":"deprecated_images/docker-clarkson/#versions","title":"Versions","text":"<ul> <li>19.01.22: - Deprecate.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>23.03.19: - Updating runtime dependancies for the JRE.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>22.08.18: - Rebase to alpine linux 3.8.</li> <li>19.02.18: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-cloud9/","title":"cloud9","text":""},{"location":"deprecated_images/docker-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server</p>"},{"location":"deprecated_images/docker-cloud9/#linuxservercloud9","title":"linuxserver/cloud9","text":"<p>Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.</p>"},{"location":"deprecated_images/docker-cloud9/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/cloud9:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-cloud9/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Docker and Compose environment pre-installed go \u2705 Basic Golang environment pre-installed nodejs \u2705 Current stable NodeJS/NPM environment pre-installed python \u2705 Current Python3 environment pre-installed ruby \u2705 Current Ruby environment pre-installed"},{"location":"deprecated_images/docker-cloud9/#application-setup","title":"Application Setup","text":"<p>Access the webui at http://your-ip:8000, for more information check out here.</p>"},{"location":"deprecated_images/docker-cloud9/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-cloud9/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n cloud9:\n image: lscr.io/linuxserver/cloud9:latest\n container_name: cloud9\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - GITURL=https://github.com/linuxserver/docker-cloud9.git #optional\n - USERNAME= #optional\n - PASSWORD= #optional\n volumes:\n - /path/to/your/code:/code #optional\n - /var/run/docker.sock:/var/run/docker.sock #optional\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-cloud9/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=cloud9 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e GITURL=https://github.com/linuxserver/docker-cloud9.git `#optional` \\\n -e USERNAME= `#optional` \\\n -e PASSWORD= `#optional` \\\n -p 8000:8000 \\\n -v /path/to/your/code:/code `#optional` \\\n -v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/cloud9:latest\n</code></pre>"},{"location":"deprecated_images/docker-cloud9/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-cloud9/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> The port for the Cloud9 web interface"},{"location":"deprecated_images/docker-cloud9/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London <code>GITURL=https://github.com/linuxserver/docker-cloud9.git</code> Specify a git repo to checkout on first startup <code>USERNAME=</code> Optionally specify a username for http auth <code>PASSWORD=</code> Optionally specify a password for http auth (if USERNAME and PASSWORD are not set, there will be no http auth)"},{"location":"deprecated_images/docker-cloud9/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/code</code> Optionally if you want to mount up a local folder of code instead of checking out <code>/var/run/docker.sock</code> Needed if you plan to use Docker or compose commands"},{"location":"deprecated_images/docker-cloud9/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-cloud9/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-cloud9/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-cloud9/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-cloud9/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-cloud9/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it cloud9 /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f cloud9</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cloud9</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cloud9:latest</code></li> </ul>"},{"location":"deprecated_images/docker-cloud9/#versions","title":"Versions","text":"<ul> <li>23.06.22: - Deprecate image.</li> <li>24.06.21: - Use prebuilt compose binaries for the linuxserver repo.</li> <li>07.02.20: - Add optional http auth.</li> <li>02.06.19: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-codiad/","title":"codiad","text":""},{"location":"deprecated_images/docker-codiad/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE <code>linuxserver/cloud9</code></p>"},{"location":"deprecated_images/docker-codiad/#linuxservercodiad","title":"linuxserver/codiad","text":"<p>Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI.</p>"},{"location":"deprecated_images/docker-codiad/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/codiad</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-codiad/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-codiad/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=codiad \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 80:80 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/codiad\n</code></pre>"},{"location":"deprecated_images/docker-codiad/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n codiad:\n image: linuxserver/codiad\n container_name: codiad\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-codiad/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-codiad/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"deprecated_images/docker-codiad/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-codiad/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Codiad stores data."},{"location":"deprecated_images/docker-codiad/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-codiad/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: </li> <li><code>docker exec -it codiad /bin/bash</code></li> <li>To monitor the logs of the container in realtime: </li> <li><code>docker logs -f codiad</code></li> <li>Container version number </li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codiad</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/codiad</code></li> </ul>"},{"location":"deprecated_images/docker-codiad/#versions","title":"Versions","text":"<ul> <li>10.06.19: - Deprecate Image.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9, adding ssh client.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>26.09.18: - Add sed to init file to configure projects folder correctly.</li> <li>04.09.18: - Rebase to alpine linux 3.8.</li> <li>09.01.18: - Rebase to alpine linux 3.7.</li> <li>25.05.17: - Rebase to alpine linux 3.6.</li> <li>18.02.17: - Rebase to alpine linux 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>10.09.16: - Add layer badges to README.</li> <li>06.11.15: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-codimd/","title":"codimd","text":""},{"location":"deprecated_images/docker-codimd/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-codimd/#linuxservercodimd","title":"linuxserver/codimd","text":"<p>Codimd gives you access to all your files wherever you are.</p> <p>CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.</p>"},{"location":"deprecated_images/docker-codimd/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/codimd</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-codimd/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-codimd/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>version: \"3\"\nservices:\n mariadb:\n image: linuxserver/mariadb:latest\n container_name: codimd_mariadb\n restart: always\n volumes:\n - &lt;path to mariadb data&gt;:/config\n environment:\n - MYSQL_ROOT_PASSWORD=&lt;secret password&gt;\n - MYSQL_DATABASE=codimd\n - MYSQL_USER=codimd\n - MYSQL_PASSWORD=&lt;secret password&gt;\n - PGID=1000\n - PUID=1000\n - TZ=Europe/London\n codimd:\n image: linuxserver/codimd:latest\n container_name: codimd\n restart: always\n depends_on:\n - mariadb\n volumes:\n - &lt;path to config&gt;:/config\n environment:\n - DB_HOST=mariadb\n - DB_USER=codimd\n - DB_PASS=&lt;secret password&gt;\n - DB_NAME=codimd\n - DB_PORT=3306\n - PGID=1000\n - PUID=1000\n - TZ=Europe/London\n ports:\n - \"3000:3000\"\n</code></pre>"},{"location":"deprecated_images/docker-codimd/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=codimd \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e DB_HOST=&lt;hostname or ip&gt; \\\n -e DB_PORT=3306 \\\n -e DB_USER=codimd \\\n -e DB_PASS=&lt;secret password&gt; \\\n -e DB_NAME=codimd \\\n -e TZ=Europe/London \\\n -p 3000:3000 \\\n -v &lt;/path/to/appdata&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/codimd\n</code></pre>"},{"location":"deprecated_images/docker-codimd/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-codimd/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> If you wish to access this container from http://{IP}:${PORT}` this must be left unchanged."},{"location":"deprecated_images/docker-codimd/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>DB_HOST=&lt;hostname or ip&gt;</code> Host address of mysql database <code>DB_PORT=3306</code> Port to access mysql database default is 3306 <code>DB_USER=codimd</code> Database user <code>DB_PASS=&lt;secret password&gt;</code> Database password <code>DB_NAME=codimd</code> Database name <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-codimd/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> CodiMD config and configurable files"},{"location":"deprecated_images/docker-codimd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-codimd/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-codimd/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-codimd/#application-setup","title":"Application Setup","text":"<p>THIS IMAGE IS DEPRECATED. CodiMD is rebranded as <code>HedgeDoc</code> and the new docker image is at linuxserver/hedgedoc.</p> <p>CodiMD web interface can be accessed <code>http://${IP}:3000/</code>, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT)</p> <p>Full list of CodiMD options</p> <p>For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.</p> <p>To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository</p>"},{"location":"deprecated_images/docker-codimd/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-codimd/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it codimd /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f codimd</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codimd</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/codimd</code></li> </ul>"},{"location":"deprecated_images/docker-codimd/#versions","title":"Versions","text":"<ul> <li>22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc.</li> <li>23.05.19: - Initial release</li> </ul>"},{"location":"deprecated_images/docker-couchpotato/","title":"couchpotato","text":""},{"location":"deprecated_images/docker-couchpotato/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr</p>"},{"location":"deprecated_images/docker-couchpotato/#linuxservercouchpotato","title":"linuxserver/couchpotato","text":"<p>Couchpotato is an automatic NZB and torrent downloader. You can keep a <code>movies I want</code> list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory.</p>"},{"location":"deprecated_images/docker-couchpotato/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/couchpotato</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-couchpotato/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:5050</code>, for more information check out CouchPotato.</p>"},{"location":"deprecated_images/docker-couchpotato/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-couchpotato/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n couchpotato:\n image: lscr.io/linuxserver/couchpotato\n container_name: couchpotato\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/downloads:/downloads\n - /path/to/movies:/movies\n ports:\n - 5050:5050\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-couchpotato/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=couchpotato \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 5050:5050 \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/movies:/movies \\\n --restart unless-stopped \\\n lscr.io/linuxserver/couchpotato\n</code></pre>"},{"location":"deprecated_images/docker-couchpotato/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-couchpotato/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5050</code> http gui"},{"location":"deprecated_images/docker-couchpotato/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-couchpotato/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Couchpotato Application Data. <code>/downloads</code> Downloads Folder. <code>/movies</code> Movie Share."},{"location":"deprecated_images/docker-couchpotato/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-couchpotato/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-couchpotato/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-couchpotato/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-couchpotato/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-couchpotato/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it couchpotato /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f couchpotato</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' couchpotato</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/couchpotato</code></li> </ul>"},{"location":"deprecated_images/docker-couchpotato/#versions","title":"Versions","text":"<ul> <li>29.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>10.06.19: - Add back unrar &amp; unzip that were accidentally left out during rebase.</li> <li>06.06.19: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>14.01.19: - Multi-arch builds.</li> <li>16.08.18: - Rebase to alpine 3.8.</li> <li>06.11.17: - Rebase to alpine 3.7.</li> <li>20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push</li> <li>25.05.17: - Rebase to alpine 3.6</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder).</li> <li>30.09.16: - Fix umask.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>12.11.15: - Misc Code Cleanup.</li> <li>02.10.15: - Change to python baseimage.</li> <li>28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.</li> </ul>"},{"location":"deprecated_images/docker-dillinger/","title":"dillinger","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-dillinger/#linuxserverdillinger","title":"linuxserver/dillinger","text":"<p>Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.</p> <p></p>"},{"location":"deprecated_images/docker-dillinger/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/dillinger:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"deprecated_images/docker-dillinger/#application-setup","title":"Application Setup","text":"<p>Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.</p>"},{"location":"deprecated_images/docker-dillinger/#pdf-export","title":"PDF Export","text":"<p>If you need PDF export functionality you need to run the container with a custom seccomp profile because otherwise the headless Chrome instance it uses won't have sufficient permissions.</p> <p>Download the <code>pdf-export.json</code> from this repo onto your docker host and start the container with <code>--security-opt seccomp=/path/to/pdf-export.json</code>. If you're using compose the format is:</p> <pre><code> security_opt:\n - seccomp=/path/to/pdf-export.json\n</code></pre> <p>The original source for this seccomp profile is here.</p>"},{"location":"deprecated_images/docker-dillinger/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n dillinger:\n image: lscr.io/linuxserver/dillinger:latest\n container_name: dillinger\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/configs:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-dillinger/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=dillinger \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/configs:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/dillinger:latest\n</code></pre>"},{"location":"deprecated_images/docker-dillinger/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-dillinger/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> The port for the Dillinger web interface"},{"location":"deprecated_images/docker-dillinger/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"deprecated_images/docker-dillinger/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Dillinger plugin config files"},{"location":"deprecated_images/docker-dillinger/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-dillinger/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"deprecated_images/docker-dillinger/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-dillinger/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"deprecated_images/docker-dillinger/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-dillinger/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it dillinger /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f dillinger\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-dillinger/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-dillinger/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull dillinger\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d dillinger\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-dillinger/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/dillinger:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop dillinger\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm dillinger\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-dillinger/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"deprecated_images/docker-dillinger/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-dillinger.git\ncd docker-dillinger\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/dillinger:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-dillinger/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Deprecate image.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>19.04.22: - Rebase to Alpine.</li> <li>31.05.19: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-docker-compose/","title":"docker-compose","text":""},{"location":"deprecated_images/docker-docker-compose/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. Docker Compose is now available from the docker repos: https://docs.docker.com/engine/install/</p> <p>And also for direct download: https://github.com/docker/compose</p> <p></p> <p> </p> <p>The LinuxServer.io team brings you another container release featuring:</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings (PGID, PUID)</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>regular security updates</li> </ul> <p>Find us at:</p> <ul> <li>Blog - all the things you can do with our containers including How-To guides, opinions and much more!</li> <li>Discord - realtime support / chat with the community and the team.</li> <li>Discourse - post on our community forum.</li> <li>Fleet - an online web interface which displays all of our maintained images.</li> <li>GitHub - view the source for all of our repositories.</li> <li>Open Collective - please consider helping us by either donating or contributing to our budget</li> </ul>"},{"location":"deprecated_images/docker-docker-compose/#linuxserverdocker-compose","title":"linuxserver/docker-compose","text":"<p>docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.</p> <p></p>"},{"location":"deprecated_images/docker-docker-compose/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/docker-compose:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-docker-compose/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 docker-compose v1 releases alpine \u2705 docker-compose v1 releases with our alpine baseimage v2 \u2705 docker compose v2 releases"},{"location":"deprecated_images/docker-docker-compose/#usage","title":"Usage","text":""},{"location":"deprecated_images/docker-docker-compose/#docker-cli","title":"Docker cli","text":"<p><pre><code>docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n lscr.io/linuxserver/docker-compose:latest \\\n up\n</code></pre> You can replace the last line with any docker-compose command and argument, which will be passed to docker-compose inside the image.</p>"},{"location":"deprecated_images/docker-docker-compose/#recommended-method","title":"Recommended method","text":"<p>We provide a very convenient script that allows the docker-compose container to run as if it was installed natively:</p> <pre><code>sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose\nsudo chmod +x /usr/local/bin/docker-compose\n</code></pre> <p>Running these two commands on your docker host once will let you issue commands such as <code>docker-compose up -d</code> and the docker-compose container will do its job behind the scenes.</p>"},{"location":"deprecated_images/docker-docker-compose/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-docker-compose/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: <code>docker exec -it docker-compose /bin/bash</code></li> <li>To monitor the logs of the container in realtime: <code>docker logs -f docker-compose</code></li> <li>container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' docker-compose</code></li> <li>image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/docker-compose:latest</code></li> </ul>"},{"location":"deprecated_images/docker-docker-compose/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-docker-compose/#via-docker-run","title":"Via Docker Run","text":"<ul> <li>Update the image: <code>docker pull lscr.io/linuxserver/docker-compose:latest</code></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-docker-compose/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-docker-compose.git\ncd docker-docker-compose\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/docker-compose:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-docker-compose/#versions","title":"Versions","text":"<ul> <li>16.02.23: - Deprecate image.</li> <li>15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15.</li> <li>17.12.20: - Update run.sh with formatting changes.</li> <li>04.10.20: - Update run.sh with changes from upstream.</li> <li>31.08.20: - Update tox and virtualenv.</li> <li>31.07.20: - Add support for global env var <code>DOCKER_COMPOSE_IMAGE_TAG</code> in the <code>run.sh</code> script.</li> <li>06.07.20: - Publish docker-compose and docker-cli binaries in Github releases.</li> <li>01.07.20: - Release alpine based images at <code>alpine</code> tag.</li> <li>04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version.</li> <li>19.05.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-endlessh/","title":"endlessh","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p>We recommend looking at an alternative implementation such as: https://github.com/shizunge/endlessh-go/</p>"},{"location":"deprecated_images/docker-endlessh/#linuxserverendlessh","title":"linuxserver/endlessh","text":"<p>Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.</p> <p></p>"},{"location":"deprecated_images/docker-endlessh/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/endlessh:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"deprecated_images/docker-endlessh/#application-setup","title":"Application Setup","text":"<p>The app listens on the port mapped for ssh connections. To log to file, set the environment variable <code>LOGFILE</code> to <code>true</code> and map a volume for <code>/config</code>. The logs will be under <code>/config/logs/endlessh</code>.</p>"},{"location":"deprecated_images/docker-endlessh/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n endlessh:\n image: lscr.io/linuxserver/endlessh:latest\n container_name: endlessh\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MSDELAY=10000 #optional\n - MAXLINES=32 #optional\n - MAXCLIENTS=4096 #optional\n - LOGFILE=false #optional\n - BINDFAMILY= #optional\n volumes:\n - /path/to/endlessh/appdata:/config #optional\n ports:\n - 22:2222\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-endlessh/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=endlessh \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MSDELAY=10000 `#optional` \\\n -e MAXLINES=32 `#optional` \\\n -e MAXCLIENTS=4096 `#optional` \\\n -e LOGFILE=false `#optional` \\\n -e BINDFAMILY= `#optional` \\\n -p 22:2222 \\\n -v /path/to/endlessh/appdata:/config `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/endlessh:latest\n</code></pre>"},{"location":"deprecated_images/docker-endlessh/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-endlessh/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>2222</code> ssh port"},{"location":"deprecated_images/docker-endlessh/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MSDELAY=10000</code> The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. <code>MAXLINES=32</code> The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes. <code>MAXCLIENTS=4096</code> Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. <code>LOGFILE=false</code> By default, the app logs to container log. If this is set to <code>true</code>, the log will be output to file under <code>/config/logs/endlessh</code> (<code>/config</code> needs to be mapped). <code>BINDFAMILY=</code> By default, the app binds to IPv4 and IPv6 addresses. Set it to <code>4</code> or <code>6</code> to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both."},{"location":"deprecated_images/docker-endlessh/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Required if <code>LOGFILE</code> is set to <code>true</code>."},{"location":"deprecated_images/docker-endlessh/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-endlessh/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"deprecated_images/docker-endlessh/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-endlessh/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"deprecated_images/docker-endlessh/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-endlessh/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it endlessh /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f endlessh\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-endlessh/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-endlessh/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull endlessh\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d endlessh\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-endlessh/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/endlessh:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop endlessh\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm endlessh\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-endlessh/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"deprecated_images/docker-endlessh/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-endlessh.git\ncd docker-endlessh\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/endlessh:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-endlessh/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Deprecate image.</li> <li>12.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>23.09.22: - Migrate to s6v3.</li> <li>20.07.22: - Rebase to Alpine 3.16.</li> <li>16.04.22: - Rebase to Alpine 3.15.</li> <li>07.10.21: - Fix typo on MAXLINES var.</li> <li>08.06.21: - Add BINDFAMILY option.</li> <li>16.04.21: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-gazee/","title":"gazee","text":""},{"location":"deprecated_images/docker-gazee/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-gazee/#linuxservergazee","title":"linuxserver/gazee","text":"<p>Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser.</p>"},{"location":"deprecated_images/docker-gazee/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/gazee</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v6-latest"},{"location":"deprecated_images/docker-gazee/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-gazee/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=gazee \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -p 4242:4242 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;path to comics&gt;:/comics \\\n -v &lt;path to mylar data&gt;:/mylar \\\n -v &lt;path to SSL certs&gt;:/certs \\\n --restart unless-stopped \\\n linuxserver/gazee\n</code></pre>"},{"location":"deprecated_images/docker-gazee/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n gazee:\n image: linuxserver/gazee\n container_name: gazee\n environment:\n - PUID=1000\n - PGID=1000\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;path to comics&gt;:/comics\n - &lt;path to mylar data&gt;:/mylar\n - &lt;path to SSL certs&gt;:/certs\n ports:\n - 4242:4242\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-gazee/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-gazee/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4242</code> WebUI"},{"location":"deprecated_images/docker-gazee/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation"},{"location":"deprecated_images/docker-gazee/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Gazee should store config files. <code>/comics</code> Path to comics folder. <code>/mylar</code> Path to Mylar DB. <code>/certs</code> Where SSL certs should be stored."},{"location":"deprecated_images/docker-gazee/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-gazee/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>your-ip:4242</code></p> <p>Default username and password for the web interface:</p> <ul> <li>Username: <code>admin</code></li> <li>Password: <code>gazee</code></li> </ul> <p>Click the gear icon to go to the settings page.</p> <p>Change the default admin password or add a new admin and remove the admin user altogether.</p> <p>Comic path should be set to <code>/comics</code></p> <p>Optional Mylar DB path should be set to <code>/mylar</code></p> <p>Optional path for certificates and keys should be set to <code>/certs</code></p> <p>After you update the settings, Gazee will restart and begin an intial scan of your comic library.</p> <p>Happy Reading!</p>"},{"location":"deprecated_images/docker-gazee/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: </li> <li><code>docker exec -it gazee /bin/bash</code></li> <li>To monitor the logs of the container in realtime: </li> <li><code>docker logs -f gazee</code></li> <li>Container version number </li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gazee</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/gazee</code></li> </ul>"},{"location":"deprecated_images/docker-gazee/#versions","title":"Versions","text":"<ul> <li>27.03.19: - Deprecate image and get in semi working state.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>17.08.18: - Rebase to alpine 3.8.</li> <li>30.12.17: - Ensure version 11 of cherrypy.</li> <li>07.12.17: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-gmail-order-bot/","title":"gmail-order-bot","text":""},{"location":"deprecated_images/docker-gmail-order-bot/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#lsiodevgmail-order-bot","title":"lsiodev/gmail-order-bot","text":"<p>Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/lsiodev/gmail-order-bot:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"deprecated_images/docker-gmail-order-bot/#application-setup","title":"Application Setup","text":"<p>This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it.</p> <p>The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account.</p> <p>The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion.</p> <p>By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details: <pre><code>const Discord = require('discord.js');\nconst YAML = require('yaml');\nconst discordtoken = process.env.DISCORD_TOKEN;\nconst roomid = process.env.DISCORD_ROOM\n\n\nexports.orderbot = async function(order) {\n return new Promise(resolve =&gt; {\n const client = new Discord.Client();\n client.login(discordtoken);\n client.on('ready', async () =&gt; {\n delete order.rawpayload\n await client.channels.cache.get(roomid.toString()).send(YAML.stringify(order));\n client.destroy();\n resolve(true)\n })\n });\n}\n</code></pre></p> <p>This code will be passed an order object containing all the order details parsed from the email message. Here we use custom env variables to set application settings to connect up to and send a message to discord.</p> <p>In order to use this bot you will need to perform the following setup steps: 1. Create a dedicated gmail account to use for https://checkout.linuxserver.io 2. Enable API access to this Gmail account by clicking on <code>Enable the Gmail API</code> here https://developers.google.com/gmail/api/quickstart/nodejs 3. Save your credentials.json file from that action to the folder you will be bind mounting as <code>/config</code> 4. Run <code>docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v /path/to/data:/config --entrypoint /config.sh lsiodev/gmail-order-bot</code> 5. Go to the URL prompted and enter the key you get from it. 6. Start the container using the run/compose example in this readme.</p> <p>When the container starts if you are using a custom bot located in <code>/config/bots</code> it will install the node modules included in it's package.json, do not use system level node modules this container is Alpine based and it will cause conflicts.</p> <p>From there the bot will loop in for your defined timeout and pull in emails and spit out orders to your destination.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n gmail-order-bot:\n image: lscr.io/lsiodev/gmail-order-bot:latest\n container_name: gmail-order-bot\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - BOT_NAME=discord\n - LOOP_TIME=60\n volumes:\n - /path/to/data:/config\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-gmail-order-bot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=gmail-order-bot \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e BOT_NAME=discord \\\n -e LOOP_TIME=60 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/lsiodev/gmail-order-bot:latest\n</code></pre>"},{"location":"deprecated_images/docker-gmail-order-bot/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"deprecated_images/docker-gmail-order-bot/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>BOT_NAME=discord</code> On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots) <code>LOOP_TIME=60</code> Time in seconds to reach into gmail and get new messages to process"},{"location":"deprecated_images/docker-gmail-order-bot/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Path to gmail tokens and custom/default bots"},{"location":"deprecated_images/docker-gmail-order-bot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-gmail-order-bot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-gmail-order-bot/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-gmail-order-bot/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it gmail-order-bot /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f gmail-order-bot</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gmail-order-bot</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/lsiodev/gmail-order-bot:latest</code></li> </ul>"},{"location":"deprecated_images/docker-gmail-order-bot/#versions","title":"Versions","text":"<ul> <li>24.09.23: - Deprecate.</li> <li>06.07.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-guacd/","title":"guacd","text":""},{"location":"deprecated_images/docker-guacd/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. The last working tag is: 1.4.0-ls145 We recommend the official image instead: https://hub.docker.com/r/guacamole/guacd</p>"},{"location":"deprecated_images/docker-guacd/#linuxserverguacd","title":"linuxserver/guacd","text":"<p>Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.</p>"},{"location":"deprecated_images/docker-guacd/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/guacd:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-guacd/#application-setup","title":"Application Setup","text":"<p>This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite.</p>"},{"location":"deprecated_images/docker-guacd/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-guacd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n guacd:\n image: lscr.io/linuxserver/guacd:latest\n container_name: guacd\n ports:\n - 4822:4822\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-guacd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=guacd \\\n -p 4822:4822 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/guacd:latest\n</code></pre>"},{"location":"deprecated_images/docker-guacd/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-guacd/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4822</code> Port Guacamole server listens on"},{"location":"deprecated_images/docker-guacd/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function"},{"location":"deprecated_images/docker-guacd/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"deprecated_images/docker-guacd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-guacd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-guacd/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-guacd/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-guacd/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it guacd /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f guacd</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' guacd</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/guacd:latest</code></li> </ul>"},{"location":"deprecated_images/docker-guacd/#versions","title":"Versions","text":"<ul> <li>15.02.23: - Deprecate image.</li> <li>11.03.22: - Bump to 1.4.0.</li> <li>15.05.21: - Add terminus font for SSH support.</li> <li>08.05.21: - Bump to 1.3.0, rebase to Alpine.</li> <li>27.07.20: - Bump to 1.2.0.</li> <li>17.04.20: - Bump back 1.1.0, rebase to focal</li> <li>08.02.20: - Bump to 1.1.0.</li> <li>25.05.19: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-hydra/","title":"hydra","text":""},{"location":"deprecated_images/docker-hydra/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-hydra/#linuxserverhydra","title":"linuxserver/hydra","text":"<p>Hydra is a meta search for NZB indexers and the \"spiritual successor\" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers.</p>"},{"location":"deprecated_images/docker-hydra/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/hydra</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-hydra/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-hydra/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n hydra:\n image: lscr.io/linuxserver/hydra\n container_name: hydra\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n - &lt;nzb download&gt;:/downloads\n ports:\n - 5075:5075\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-hydra/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=hydra \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 5075:5075 \\\n -v &lt;path to data&gt;:/config \\\n -v &lt;nzb download&gt;:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/hydra\n</code></pre>"},{"location":"deprecated_images/docker-hydra/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-hydra/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5075</code> WebUI"},{"location":"deprecated_images/docker-hydra/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-hydra/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where hydra should store config files. <code>/downloads</code> NZB download folder."},{"location":"deprecated_images/docker-hydra/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-hydra/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-hydra/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-hydra/#application-setup","title":"Application Setup","text":"<p>THIS IMAGE HAS BEEN DEPRECATED.</p> <p>Please use linuxserver/nzbhydra2 instead.</p> <p>The web interface is at <code>&lt;your ip&gt;:5075</code> , to set up indexers and connections to your nzb download applications.</p>"},{"location":"deprecated_images/docker-hydra/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-hydra/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it hydra /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f hydra</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hydra</code></li> </ul>"},{"location":"deprecated_images/docker-hydra/#versions","title":"Versions","text":"<ul> <li>04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>17.08.18: - Rebase to alpine 3.8.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>20.07.17: - Internal git pull instead of at runtime.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users.</li> <li>14.10.16: - Add version layer information.</li> <li>09.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>25.01.16: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-hydra2/","title":"hydra2","text":""},{"location":"deprecated_images/docker-hydra2/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2.</p>"},{"location":"deprecated_images/docker-hydra2/#linuxserverhydra2","title":"linuxserver/hydra2","text":"<p>Hydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.</p> <p>It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is <code>linuxserver/hydra2:v2.10.2-ls49</code></p>"},{"location":"deprecated_images/docker-hydra2/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/hydra2</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-hydra2/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. <code>latest</code> tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.</p> Tag Description latest Stable releases dev Prereleases from their GitHub"},{"location":"deprecated_images/docker-hydra2/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-hydra2/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=hydra2 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 5076:5076 \\\n -v &lt;path to data&gt;:/config \\\n -v &lt;nzb download&gt;:/downloads \\\n --restart unless-stopped \\\n linuxserver/hydra2\n</code></pre>"},{"location":"deprecated_images/docker-hydra2/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n hydra2:\n image: linuxserver/hydra2\n container_name: hydra2\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n - &lt;nzb download&gt;:/downloads\n ports:\n - 5076:5076\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-hydra2/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-hydra2/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5076</code> WebUI"},{"location":"deprecated_images/docker-hydra2/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-hydra2/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where hydra2 should store config files. <code>/downloads</code> NZB download folder."},{"location":"deprecated_images/docker-hydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-hydra2/#application-setup","title":"Application Setup","text":"<p>The web interface is at <code>&lt;your ip&gt;:5076</code> , to set up indexers and connections to your nzb download applications.</p>"},{"location":"deprecated_images/docker-hydra2/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.</p>"},{"location":"deprecated_images/docker-hydra2/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it hydra2 /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f hydra2</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra2</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/hydra2</code></li> </ul>"},{"location":"deprecated_images/docker-hydra2/#versions","title":"Versions","text":"<ul> <li>19.04.20: - Deprecated. New repo at <code>linuxserver/docker-nzbhydra2</code>.</li> <li>08.01.20: - Switch to python3.</li> <li>05.01.20: - Add dev tag for prereleases.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).</li> <li>10.08.18: - Rebase to ubuntu bionic.</li> <li>15.04.18: - Change to port 5076 in the Dockerfile.</li> <li>11.01.18: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-ipfs/","title":"ipfs","text":""},{"location":"deprecated_images/docker-ipfs/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore.</p>"},{"location":"deprecated_images/docker-ipfs/#linuxserveripfs","title":"linuxserver/ipfs","text":"<p>Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.</p>"},{"location":"deprecated_images/docker-ipfs/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ipfs</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-ipfs/#application-setup","title":"Application Setup","text":"<p>In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them.</p> <p>Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE</p> <p>Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month. </p> <p>For more on using IPFS please read the docs here</p>"},{"location":"deprecated_images/docker-ipfs/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-ipfs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n ipfs:\n image: lscr.io/linuxserver/ipfs\n container_name: ipfs\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /path/to/data:/config\n ports:\n - 80:80\n - 4001:4001\n - 5001:5001\n - 8080:8080\n - 443:443 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-ipfs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ipfs \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 80:80 \\\n -p 4001:4001 \\\n -p 5001:5001 \\\n -p 8080:8080 \\\n -p 443:443 `#optional` \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ipfs\n</code></pre>"},{"location":"deprecated_images/docker-ipfs/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-ipfs/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> The port for the IPFS web UI <code>4001</code> Peering port, this is the only port you should expose to the internet <code>5001</code> API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on <code>8080</code> Gateway Port, actually serves IPFS content <code>443</code> HTTPS port for web UI"},{"location":"deprecated_images/docker-ipfs/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-ipfs/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> IPFS storage and config files/logs"},{"location":"deprecated_images/docker-ipfs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-ipfs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-ipfs/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-ipfs/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-ipfs/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-ipfs/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it ipfs /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f ipfs</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ipfs</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ipfs</code></li> </ul>"},{"location":"deprecated_images/docker-ipfs/#versions","title":"Versions","text":"<ul> <li>02.02.22: - Deprecate.</li> <li>19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14.</li> <li>01.04.21: - Add migration bins to image to support upgrades.</li> <li>24.02.20: - Rebase to Alpine 3.13.</li> <li>09.07.19: - Initial version.</li> </ul>"},{"location":"deprecated_images/docker-kanzi/","title":"kanzi","text":""},{"location":"deprecated_images/docker-kanzi/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-kanzi/#linuxserverkanzi","title":"linuxserver/kanzi","text":"<p>Kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.</p>"},{"location":"deprecated_images/docker-kanzi/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kanzi:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-kanzi/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-kanzi/#initial-setup","title":"Initial setup","text":"<ul> <li>Once you start the container for the first time, you need to perform some steps before use.</li> <li>Create an Amazon Developer Account here.</li> <li>Open a terminal in the <code>/config</code> directory of the docker container <code>docker exec -itw /config kanzi bash</code></li> <li>Enter <code>lexigram login --no-browser true</code> to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter.</li> <li>Edit the file <code>kodi.config</code> according to your local setup and this will be used by the included gunicorn server to respond to requests. </li> <li>Restart the container to automatically deploy the Kanzi skill.</li> <li>Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively.</li> </ul> <p>Subfolder <pre><code>location /kanzi {\n rewrite ^/kanzi/(.*) /$1 break;\n proxy_pass https://$IP-ADDRESS:8000;\n proxy_redirect https://$IP-ADDRESS:8000 /kanzi;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Server $host;\n proxy_set_header X-Forwarded-Host $server_name;\n}\n</code></pre> Subdomain <pre><code> location / {\n proxy_pass https://$IP-ADDRESS:8000;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Server $host;\n proxy_set_header X-Forwarded-Host $server_name;\n}\n</code></pre></p>"},{"location":"deprecated_images/docker-kanzi/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"deprecated_images/docker-kanzi/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-kanzi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n kanzi:\n image: lscr.io/linuxserver/kanzi:latest\n container_name: kanzi\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - INVOCATION_NAME=kanzi\n - URL_ENDPOINT=https://server.com/kanzi/\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-kanzi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kanzi \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e INVOCATION_NAME=kanzi \\\n -e URL_ENDPOINT=https://server.com/kanzi/ \\\n -p 8000:8000 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kanzi:latest\n</code></pre>"},{"location":"deprecated_images/docker-kanzi/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-kanzi/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> Application Port"},{"location":"deprecated_images/docker-kanzi/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>INVOCATION_NAME=kanzi</code> Specify an invocation name for this skill, use either kanzi or kod. <code>URL_ENDPOINT=https://server.com/kanzi/</code> Specify the URL at which the webserver is reachable either <code>https://kanzi.server.com/</code> or <code>https://server.com/kanzi/</code> Note the trailing slash MUST be included."},{"location":"deprecated_images/docker-kanzi/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files."},{"location":"deprecated_images/docker-kanzi/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-kanzi/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-kanzi/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-kanzi/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-kanzi/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-kanzi/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it kanzi /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f kanzi</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kanzi</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kanzi:latest</code></li> </ul>"},{"location":"deprecated_images/docker-kanzi/#versions","title":"Versions","text":"<ul> <li>20.06.22: - Deprecate image.</li> <li>13.04.19: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/","title":"letsencrypt","text":""},{"location":"deprecated_images/docker-letsencrypt/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-letsencrypt/#important-notice-this-image-has-been-deprecated-and-the-project-is-moved-to-a-new-repo","title":"IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO","text":"<p>Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub. This is a breaking change and you need to manually update. Apologies for the the disruption.</p> <p>Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image</p>"},{"location":"deprecated_images/docker-letsencrypt/#this-repository-will-be-archived-and-builds-for-the-image-will-no-longer-be-created-at-the-end-of-2020","title":"This repository will be archived and builds for the image will no longer be created at the end of 2020","text":""},{"location":"deprecated_images/docker-letsencrypt/#linuxserverletsencrypt","title":"linuxserver/letsencrypt","text":"<p>SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention.</p> <p></p>"},{"location":"deprecated_images/docker-letsencrypt/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/letsencrypt</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-letsencrypt/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container.</p>"},{"location":"deprecated_images/docker-letsencrypt/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=yourdomain.url \\\n -e SUBDOMAINS=www, \\\n -e VALIDATION=http \\\n -e DNSPLUGIN=cloudflare `#optional` \\\n -e PROPAGATION= `#optional` \\\n -e DUCKDNSTOKEN= `#optional` \\\n -e EMAIL= `#optional` \\\n -e ONLY_SUBDOMAINS=false `#optional` \\\n -e EXTRA_DOMAINS= `#optional` \\\n -e STAGING=false `#optional` \\\n -p 443:443 \\\n -p 80:80 `#optional` \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n linuxserver/letsencrypt\n</code></pre>"},{"location":"deprecated_images/docker-letsencrypt/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n swag:\n image: linuxserver/letsencrypt\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=yourdomain.url\n - SUBDOMAINS=www,\n - VALIDATION=http\n - DNSPLUGIN=cloudflare #optional\n - PROPAGATION= #optional\n - DUCKDNSTOKEN= #optional\n - EMAIL= #optional\n - ONLY_SUBDOMAINS=false #optional\n - EXTRA_DOMAINS= #optional\n - STAGING=false #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 443:443\n - 80:80 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-letsencrypt/#parameters","title":"Parameters","text":"<p>Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p> Parameter Function <code>-p 443</code> Https port <code>-p 80</code> Http port (required for http validation and http -&gt; https redirect) <code>-e PUID=1000</code> for UserID - see below for explanation <code>-e PGID=1000</code> for GroupID - see below for explanation <code>-e TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>-e URL=yourdomain.url</code> Top url you have control over (<code>customdomain.com</code> if you own it, or <code>customsubdomain.ddnsprovider.com</code> if dynamic dns). <code>-e SUBDOMAINS=www,</code> Subdomains you'd like the cert to cover (comma separated, no spaces) ie. <code>www,ftp,cloud</code>. For a wildcard cert, set this exactly to <code>wildcard</code> (wildcard cert is available via <code>dns</code> and <code>duckdns</code> validation only) <code>-e VALIDATION=http</code> Certbot validation method to use, options are <code>http</code>, <code>dns</code> or <code>duckdns</code> (<code>dns</code> method also requires <code>DNSPLUGIN</code> variable set) (<code>duckdns</code> method requires <code>DUCKDNSTOKEN</code> variable set, and the <code>SUBDOMAINS</code> variable must be either empty or set to <code>wildcard</code>). <code>-e DNSPLUGIN=cloudflare</code> Required if <code>VALIDATION</code> is set to <code>dns</code>. Options are <code>aliyun</code>, <code>cloudflare</code>, <code>cloudxns</code>, <code>cpanel</code>, <code>digitalocean</code>, <code>dnsimple</code>, <code>dnsmadeeasy</code>, <code>domeneshop</code>, <code>gandi</code>, <code>google</code>, <code>inwx</code>, <code>linode</code>, <code>luadns</code>, <code>nsone</code>, <code>ovh</code>, <code>rfc2136</code>, <code>route53</code> and <code>transip</code>. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under <code>/config/dns-conf</code>. <code>-e PROPAGATION=</code> Optionally override (in seconds) the default propagation time for the dns plugins. <code>-e DUCKDNSTOKEN=</code> Required if <code>VALIDATION</code> is set to <code>duckdns</code>. Retrieve your token from https://www.duckdns.org <code>-e EMAIL=</code> Optional e-mail address used for cert expiration notifications. <code>-e ONLY_SUBDOMAINS=false</code> If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to <code>true</code> <code>-e EXTRA_DOMAINS=</code> Additional fully qualified domain names (comma separated, no spaces) ie. <code>extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org</code> <code>-e STAGING=false</code> Set to <code>true</code> to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. <code>-v /config</code> All the config files including the webroot reside here."},{"location":"deprecated_images/docker-letsencrypt/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-letsencrypt/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-letsencrypt/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre> <p> </p>"},{"location":"deprecated_images/docker-letsencrypt/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-letsencrypt/#validation-and-initial-setup","title":"Validation and initial setup","text":"<ul> <li>Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).</li> <li>For <code>http</code> validation, port 80 on the internet side of the router should be forwarded to this container's port 80</li> <li>For <code>dns</code> validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under <code>/config/dns-conf</code></li> <li>Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\"</li> <li>Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\"</li> <li>For <code>duckdns</code> validation, either leave the <code>SUBDOMAINS</code> variable empty or set it to <code>wildcard</code>, and set the <code>DUCKDNSTOKEN</code> variable with your duckdns token. Due to a limitation of duckdns, the resulting cert will only cover either main subdomain (ie. <code>yoursubdomain.duckdns.org</code>), or sub-subdomains (ie. <code>*.yoursubdomain.duckdns.org</code>), but will not both at the same time. You can use our duckdns image to update your IP on duckdns.org.</li> <li><code>--cap-add=NET_ADMIN</code> is required for fail2ban to modify iptables</li> <li>If you need a dynamic dns provider, you can use the free provider duckdns.org where the <code>URL</code> will be <code>yoursubdomain.duckdns.org</code> and the <code>SUBDOMAINS</code> can be <code>www,ftp,cloud</code> with http validation, or <code>wildcard</code> with dns validation.</li> <li>After setup, navigate to <code>https://yourdomain.url</code> to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at <code>/config/nginx/site-confs/default</code>).</li> <li>Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under <code>/config/log/letsencrypt</code> to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#security-and-password-protection","title":"Security and password protection","text":"<ul> <li>The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.</li> <li>The container provides a pre-generated 4096-bit dhparams.pem (rotated weekly via Jenkins job) for new instances, however you may generate your own by running <code>docker exec letsencrypt openssl dhparam -out /config/nginx/dhparams.pem 4096</code> WARNING: This takes a very long time</li> <li>If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file <code>docker exec -it letsencrypt htpasswd -c /config/nginx/.htpasswd &lt;username&gt;</code></li> <li>You can add multiple user:pass to <code>.htpasswd</code>. For the first user, use the above command, for others, use the above command without the <code>-c</code> flag, as it will force deletion of the existing <code>.htpasswd</code> and creation of a new one</li> <li>You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#site-config-and-reverse-proxy","title":"Site config and reverse proxy","text":"<ul> <li>The default site config resides at <code>/config/nginx/site-confs/default</code>. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the <code>default</code> file, a new default will be created on container start.</li> <li>Preset reverse proxy config files are added for popular apps. See the <code>README.md</code> file under <code>/config/nginx/proxy_confs</code> for instructions on how to enable them. The preset confs reside in and get imported from this repo.</li> <li>If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included <code>add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\";</code> This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines</li> <li>If you wish to redirect http to https, you must expose port 80</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#using-certs-in-other-containers","title":"Using certs in other containers","text":"<ul> <li>This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.</li> <li>To use these certs in other containers, do either of the following:</li> <li>(Easier) Mount the container's config folder in other containers (ie. <code>-v /path-to-le-config:/le-ssl</code>) and in the other containers, use the cert location <code>/le-ssl/keys/letsencrypt/</code></li> <li>(More secure) Mount the letsencrypt folder <code>etc/letsencrypt</code> that resides under <code>/config</code> in other containers (ie. <code>-v /path-to-le-config/etc/letsencrypt:/le-ssl</code>) and in the other containers, use the cert location <code>/le-ssl/live/&lt;your.domain.url&gt;/</code> (This is more secure because the first method shares the entire letsencrypt config folder with other containers, including the www files, whereas the second method only shares the ssl certs)</li> <li>These certs include:</li> <li><code>cert.pem</code>, <code>chain.pem</code>, <code>fullchain.pem</code> and <code>privkey.pem</code>, which are generated by Let's Encrypt and used by nginx and various other apps</li> <li><code>privkey.pfx</code>, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)</li> <li><code>priv-fullchain-bundle.pem</code>, a pem cert that bundles the private key and the fullchain, used by apps like ZNC</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#using-fail2ban","title":"Using fail2ban","text":"<ul> <li>This container includes fail2ban set up with 3 jails by default:</li> <li>nginx-http-auth</li> <li>nginx-badbots</li> <li>nginx-botsearch</li> <li>To enable or disable other jails, modify the file <code>/config/fail2ban/jail.local</code></li> <li>To modify filters and actions, instead of editing the <code>.conf</code> files, create <code>.local</code> files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. <code>.local</code> files will append whatever's in the <code>.conf</code> files (ie. <code>nginx-http-auth.conf</code> --&gt; <code>nginx-http-auth.local</code>)</li> <li>You can check which jails are active via <code>docker exec -it swag fail2ban-client status</code></li> <li>You can check the status of a specific jail via <code>docker exec -it swag fail2ban-client status &lt;jail name&gt;</code></li> <li>You can unban an IP via <code>docker exec -it swag fail2ban-client set &lt;jail name&gt; unbanip &lt;IP&gt;</code></li> <li>A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands</li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.</p>"},{"location":"deprecated_images/docker-letsencrypt/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: <code>docker exec -it swag /bin/bash</code></li> <li>To monitor the logs of the container in realtime: <code>docker logs -f swag</code></li> <li>container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag</code></li> <li>image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/letsencrypt</code></li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-letsencrypt/#via-docker-runcreate","title":"Via Docker Run/Create","text":"<ul> <li>Update the image: <code>docker pull linuxserver/letsencrypt</code></li> <li>Stop the running container: <code>docker stop swag</code></li> <li>Delete the container: <code>docker rm swag</code></li> <li>Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</li> <li>Start the new container: <code>docker start swag</code></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li>Update all images: <code>docker-compose pull</code></li> <li>or update a single image: <code>docker-compose pull swag</code></li> <li>Let compose update all containers as necessary: <code>docker-compose up -d</code></li> <li>or update a single container: <code>docker-compose up -d swag</code></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#via-watchtower-auto-updater-especially-useful-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (especially useful if you don't remember the original parameters)","text":"<ul> <li>Pull the latest image at its tag and replace it with the same env variables in one run: <pre><code>docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once swag\n</code></pre></li> </ul> <p>Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p> <ul> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-letsencrypt/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic: <pre><code>git clone https://github.com/linuxserver/docker-letsencrypt.git\ncd docker-letsencrypt\ndocker build \\\n --no-cache \\\n --pull \\\n -t linuxserver/letsencrypt:latest .\n</code></pre></p> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre></p> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-letsencrypt/#versions","title":"Versions","text":"<ul> <li>28.07.20: - Start transition to new name, SWAG.</li> <li>17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate <code>DHLEVEL</code> param.</li> <li>01.06.20: - Rebasing to alpine 3.12, change ldap login address to <code>/ldaplogin</code> to avoid clashes (existing users need to manually update).</li> <li>31.05.20: - Tweak Authelia confs (existing users can delete <code>authelia-server.conf</code> and <code>authelia-location.conf</code>, and restart to update).</li> <li>23.05.20: - Add support for Authelia.</li> <li>15.05.20: - Remove <code>php7-pecl-imagick</code> due to upstream issues. Add support for <code>Geoip2</code> auto db retrieval.</li> <li>10.05.20: - Added support for fail2ban deny statements.</li> <li>04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of <code>whois</code> to replace the built-in busybox version. Update <code>jail.local</code> to change default fail2ban ban action to more widely supported <code>iptables-allports</code>.</li> <li>13.04.20: - Update cloudflare.ini with token info.</li> <li>11.03.20: - Add php7-sodium.</li> <li>06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am).</li> <li>05.03.20: - Use port and proto upstream variables for ldap and default sample confs.</li> <li>24.02.20: - Remove world/group read permissions in dns-conf.</li> <li>23.02.20: - Add aliyun dns validation plugin.</li> <li>28.01.20: - Deprecate tls-sni validation method, remove from docs.</li> <li>27.01.20: - Add support for cpanel dns validation.</li> <li>10.01.20: - Add support for domeneshop dns validation.</li> <li>07.01.20: - Update ciphers from Mozilla ssl-config recommendations.</li> <li>01.01.20: - Add support for gandi dns validation.</li> <li>31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors.</li> <li>18.12.19: - Add php7-imap and php7-pecl-apcu.</li> <li>11.12.19: - Fix Google Cloud DNS to use .json file for authentication.</li> <li>20.11.19: - Fix cryptography version mismatch due to pip issue.</li> <li>17.11.19: - Add php7-pdo_odbc.</li> <li>17.11.19: - Add transip dns validation plugin.</li> <li>27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete <code>/config/nginx/nginx.conf</code> and restart the container).</li> <li>26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch.</li> <li>24.10.19: - Add php7-pecl-imagick.</li> <li>23.10.19: - Update Host header in <code>proxy.conf</code> to fix CSRF issues.</li> <li>12.10.19: - Add linode dns validation plugin.</li> <li>23.09.19: - Move GeoIP2 db to /config to make it persistent.</li> <li>14.08.19: - Add inwx dns validation plugin.</li> <li>06.08.19: - Add php7-ftp.</li> <li>04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc.</li> <li>02.08.19: - Add php7-ldap, remove geoip v1(deprecated).</li> <li>01.08.19: - Mark https redirect block as default_server (effective only for new installs).</li> <li>31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist.</li> <li>30.07.19: - Support main domain via duckdns validation.</li> <li>29.07.19: - Enable http to https redirect by default (effective only for new installs).</li> <li>01.07.19: - Patch geoip2 module until upstream is fixed.</li> <li>30.06.19: - Add geoip2 module.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>19.06.19: - Set resolver to docker dns in ssl.conf.</li> <li>29.05.19: - Compensate for changes to the reverse-proxy-confs repo.</li> <li>26.05.19: - Remove botocore/urllib patch.</li> <li>08.05.19: - Remove default.conf when nginx is upgraded in downstream image.</li> <li>30.04.19: - Add php-redis.</li> <li>12.04.19: - Rebase aarch64 image to 3.9.</li> <li>25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>10.03.19: - Add TLSv1.3 to ssl.conf.</li> <li>02.03.19: - Add php intl and posix modules.</li> <li>27.02.19: - Add gnupg package.</li> <li>22.02.19: - Rebase to alpine 3.9.</li> <li>03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update).</li> <li>09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update).</li> <li>30.12.18: - Fix bundle key generation.</li> <li>19.12.18: - Add ipv6 and http/2 support to default site config.</li> <li>08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented <code>feature</code> of up to 8 minute random delay.</li> <li>03.12.18: - Fix silly bug resetting the duckdns token.</li> <li>02.12.18: - Add dns validation support for ovh.</li> <li>20.11.18: - Externalize reverse proxy confs to separate github repo <code>linuxserver/reverse-proxy-confs</code>, update baseimage packages during build</li> <li>19.11.18: - Add php opcache package.</li> <li>12.11.18: - Add support for duckdns wildcard certs via dns validation</li> <li>31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf)</li> <li>02.10.18: - Fix fail2ban instructions and logrotate conf</li> <li>11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto)</li> <li>04.09.18: - Linting fixes.</li> <li>30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan)</li> <li>21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing</li> <li>08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs</li> <li>25.07.18: - Add subdomain proxy conf for syncthing</li> <li>23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf.</li> <li>31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik)</li> <li>30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik)</li> <li>18.05.18: - Add more info on certs and unraid reverse proxy config</li> <li>11.05.18: - Add php pgsql support</li> <li>24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps</li> <li>20.04.18: - Add standardized optional reverse proxy conf files</li> <li>19.04.18: - Bind memcached to localhost only, add php7-sqlite3</li> <li>08.04.18: - Fix renewal hooks</li> <li>29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight)</li> <li>29.03.18: - Fix staging for v2 api</li> <li>13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME.</li> <li>21.02.18: - Reduce shellcheck directives by renaming secondary variables</li> <li>20.02.18: - Sanitize variables, increase log verbosity</li> <li>01.02.18: - Big changes. <code>VALIDATION</code> parameter added for choosing certbot validation methods, including dns through official plugins. <code>HTTPVAL</code> is deprecated. <code>STAGING</code> parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf</li> <li>13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting <code>/config/fail2ban/action.d/iptables-common.local</code> and restarting the container after updating the image</li> <li>11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt)</li> <li>10.01.18: - Add option for http validation on port 80</li> <li>05.01.18: - Rebase to alpine 3.7</li> <li>04.11.17: - Add php7 soap module</li> <li>31.10.17: - Add php7 exif and xmlreader modules</li> <li>25.09.17: - Manage fail2ban via s6</li> <li>24.09.17: - Add memcached service</li> <li>01.09.17: - <code>--privileged</code> is no longer required as long as <code>--cap-add=NET_ADMIN</code> is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules</li> <li>31.08.17: - Add php7-phar</li> <li>14.07.17: - Enable modules dynamically in nginx.conf</li> <li>06.07.17: - Add support for multiple domains (thanks @oznu)</li> <li>22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf</li> <li>16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme</li> <li>05.06.17: - Add php7-bz2</li> <li>27.05.17: - Rebase to alpine 3.6.</li> <li>03.05.17: - Fix log permissions.</li> <li>18.04.17: - Add php7-sockets, update fail2ban filter and action defaults</li> <li>27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite</li> <li>21.02.17: - Add php7-xml</li> <li>10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules</li> <li>13.01.17: - Add php5-ctype and php5-openssl</li> <li>04.01.17: - Add php5-mysqli and php5-pdo_mysql</li> <li>22.11.16: - Add gd and mcrypt packages</li> <li>21.11.16: - Add curl package</li> <li>07.11.16: - Initial Release</li> </ul>"},{"location":"deprecated_images/docker-libresonic/","title":"libresonic","text":""},{"location":"deprecated_images/docker-libresonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC <code>linuxserver/airsonic</code></p>"},{"location":"deprecated_images/docker-libresonic/#linuxserverlibresonic","title":"linuxserver/libresonic","text":"<p>Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.</p>"},{"location":"deprecated_images/docker-libresonic/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/libresonic</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-libresonic/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-libresonic/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=libresonic \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e CONTEXT_PATH=&lt;URL_BASE&gt; `#optional` \\\n -p 4040:4040 \\\n -v &lt;/path/to/config&gt;:/config \\\n -v &lt;/path/to/music&gt;:/music \\\n -v &lt;/path/to/playlists&gt;:/playlists \\\n -v &lt;/path/to/podcasts&gt;:/podcasts \\\n -v &lt;/path/to/other media&gt;:/media `#optional` \\\n --restart unless-stopped \\\n linuxserver/libresonic\n</code></pre>"},{"location":"deprecated_images/docker-libresonic/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n libresonic:\n image: linuxserver/libresonic\n container_name: libresonic\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - CONTEXT_PATH=&lt;URL_BASE&gt; #optional\n volumes:\n - &lt;/path/to/config&gt;:/config\n - &lt;/path/to/music&gt;:/music\n - &lt;/path/to/playlists&gt;:/playlists\n - &lt;/path/to/podcasts&gt;:/podcasts\n volumes:\n - &lt;/path/to/other media&gt;:/media #optional\n ports:\n - 4040:4040\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-libresonic/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-libresonic/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4040</code> WebUI"},{"location":"deprecated_images/docker-libresonic/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>CONTEXT_PATH=&lt;URL_BASE&gt;</code> For setting url-base in reverse proxy setups."},{"location":"deprecated_images/docker-libresonic/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration file location. <code>/music</code> Location of music. <code>/playlists</code> Location for playlists to be saved to. <code>/podcasts</code> Location of podcasts. <code>/media</code> Location of other media."},{"location":"deprecated_images/docker-libresonic/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-libresonic/#application-setup","title":"Application Setup","text":"<p>Access WebUI at <code>&lt;your-ip&gt;:4040</code>.</p> <p>Default user/pass is admin/admin</p>"},{"location":"deprecated_images/docker-libresonic/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: </li> <li><code>docker exec -it libresonic /bin/bash</code></li> <li>To monitor the logs of the container in realtime: </li> <li><code>docker logs -f libresonic</code></li> <li>Container version number </li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libresonic</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/libresonic</code></li> </ul>"},{"location":"deprecated_images/docker-libresonic/#versions","title":"Versions","text":"<ul> <li>24.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>15.01.19: - Pull war from github, adding pipeline multi arch builds.</li> <li>05.01.19: - Linting fixes.</li> <li>27.08.18: - Rebase to ubuntu bionic.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>11.07.17: - Rebase to alpine 3.6.</li> <li>12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts).</li> <li>08.02.17: - Rebase to alpine 3.5.</li> <li>04.12.16: - Update jetty runner version.</li> <li>29.11.16: - Switch to building from release tags following v6.1 stable release.</li> <li>17.11.16: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/","title":"musicbrainz","text":""},{"location":"deprecated_images/docker-musicbrainz/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-musicbrainz/#linuxservermusicbrainz","title":"linuxserver/musicbrainz","text":"<p>MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.</p> <p></p>"},{"location":"deprecated_images/docker-musicbrainz/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/musicbrainz</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-musicbrainz/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container.</p>"},{"location":"deprecated_images/docker-musicbrainz/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n musicbrainz:\n image: lscr.io/linuxserver/musicbrainz\n container_name: musicbrainz\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - BRAINZCODE=&lt;code from MusicBrainz&gt;\n - WEBADDRESS=&lt;ip of host&gt;\n - NPROC=&lt;parameter&gt; #optional\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;/path/to/appdata/config&gt;:/data\n ports:\n - 5000:5000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-musicbrainz/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=musicbrainz \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e BRAINZCODE=&lt;code from MusicBrainz&gt; \\\n -e WEBADDRESS=&lt;ip of host&gt; \\\n -e NPROC=&lt;parameter&gt; `#optional` \\\n -p 5000:5000 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;/path/to/appdata/config&gt;:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/musicbrainz\n</code></pre>"},{"location":"deprecated_images/docker-musicbrainz/#parameters","title":"Parameters","text":"<p>Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p> Parameter Function <code>-p 5000</code> WebUI <code>-e PUID=1000</code> for UserID - see below for explanation <code>-e PGID=1000</code> for GroupID - see below for explanation <code>-e TZ=Europe/London</code> Specify a timezone to use EG Europe/London <code>-e BRAINZCODE=&lt;code from MusicBrainz&gt;</code> To enter MusicBrainz code. See Setting up the application <code>-e WEBADDRESS=&lt;ip of host&gt;</code> To set ip for host to allow css to render properly, DO NOT ENTER PORT NUMBER. <code>-e NPROC=&lt;parameter&gt;</code> To set number of proceses, defaults to 5 if unset. <code>-v /config</code> Config files for musicbrainz. <code>-v /data</code> Data files for musicbrainz."},{"location":"deprecated_images/docker-musicbrainz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-musicbrainz/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-musicbrainz/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre> <p> </p>"},{"location":"deprecated_images/docker-musicbrainz/#application-setup","title":"Application Setup","text":"<ul> <li> <p>For all updates you should pull the latest image, clear all files and folders in /config and /data and reinitiate the database import by (re)starting the docker. We do not officially support upgrading this container in place with existing data sets. </p> </li> <li> <p>If you did not set WEBADDRESS env variable, then AFTER iniatilisation is complete you will need to edit the line <code>sub WEB_SERVER { \"localhost:5000\" }</code> in file /config/DBDefs.pm changing localhost to the ip of your host, this is to allow css to display properly</p> </li> <li> <p>You must register here to receive a MusicBrainz code to allow you to receive database updates, it is free. Get Code here.</p> </li> <li>The initial import and setup of the database can take quite a long time, dependant on your download speed etc, be patient and don't restart the container before it's complete.</li> <li>It appears there are issues with unraid and using /mnt/user/cache/appdata instead of /mnt/cache/appdata, use /mnt/cache/appdata.</li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-musicbrainz/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: <code>docker exec -it musicbrainz /bin/bash</code></li> <li>To monitor the logs of the container in realtime: <code>docker logs -f musicbrainz</code></li> <li>container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' musicbrainz</code></li> <li>image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/musicbrainz</code></li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-musicbrainz/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li>Update all images: <code>docker-compose pull</code></li> <li>or update a single image: <code>docker-compose pull musicbrainz</code></li> <li>Let compose update all containers as necessary: <code>docker-compose up -d</code></li> <li>or update a single container: <code>docker-compose up -d musicbrainz</code></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/#via-docker-run","title":"Via Docker Run","text":"<ul> <li>Update the image: <code>docker pull lscr.io/linuxserver/musicbrainz</code></li> <li>Stop the running container: <code>docker stop musicbrainz</code></li> <li>Delete the container: <code>docker rm musicbrainz</code></li> <li>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"<ul> <li>Pull the latest image at its tag and replace it with the same env variables in one run: <pre><code>docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once musicbrainz\n</code></pre></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul> <p>Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p>"},{"location":"deprecated_images/docker-musicbrainz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<ul> <li>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</li> </ul>"},{"location":"deprecated_images/docker-musicbrainz/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic: <pre><code>git clone https://github.com/linuxserver/docker-musicbrainz.git\ncd docker-musicbrainz\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/musicbrainz:latest .\n</code></pre></p> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre></p> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-musicbrainz/#versions","title":"Versions","text":"<ul> <li>23.02.21: - Deprecate image as no one stepped up to take over as maintainer.</li> <li>03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current.</li> <li>17.05.19: - Update DBDefs.pm to schema 25 database.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools.</li> <li>19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9</li> <li>22.08.18: - Bump server version 2018-08-14.</li> <li>30.06.18: - Bump server version 2018-06-30.</li> <li>01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm.</li> <li>14.05.18: - Bump server version 2018-05-09.</li> <li>26.04.18: - Bump server version 2018-04-23.</li> <li>09.02.18: - Bump server version 2018-02-09.</li> <li>24.01.18: - Bump server version 2018-01-24.</li> <li>10.01.18: - Bump server version 2018-01-10.</li> <li>31.11.17: - Bump server version 2017-12-21.</li> <li>30.11.17: - Add NPROC variable to allow number of processes to be set.</li> <li>30.11.17: - Fix linting recommendations.</li> <li>30.11.17: - Remove socket on startup if exists (thanks wtf911) re.</li> <li>24.11.17: - Remove catalyst side bar on new installs.</li> <li>31.10.17: - Bump server version 2017-10-31.</li> <li>20.09.17: - Bump server version 2017-09-18.</li> <li>06.09.17: - Bump server version 2017-09-04.</li> <li>19.07.17: - Bump server version 2017-07-17.</li> <li>21.06.17: - Bump server version 2017-06-19.</li> <li>26.05.17: - Fix later build of postgres using /run instead of /var/run.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>15.05.17: - Schema 24 update, recommend full rebuild with new config.</li> <li>15.04.17: - Bump server version 2017-04-10.</li> <li>04.04.17: - Bump server version 2017-03-27.</li> <li>15.03.17: - Bump server version 2017-03-13.</li> <li>04.03.17: - Bump server version and use nginx to serve web pages.</li> <li>06.02.17: - Rebase to alpine 3.5.</li> <li>16.12.16: - Rebase to alpine linux, entailing almost complete rewrite.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Fix umask.</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README, move to main repository.</li> <li>20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan.</li> <li>03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly.</li> <li>21.03.16: - Bump to latest server release.</li> <li>16.03.16: - Bump to latest server release.</li> <li>26.02.16: - Bump to latest server release.</li> <li>08.02.16: - Switch to PPA version for redis.</li> <li>03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads.</li> <li>15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master.</li> <li>10.12.15: - Initial release date.</li> </ul>"},{"location":"deprecated_images/docker-muximux/","title":"muximux","text":""},{"location":"deprecated_images/docker-muximux/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-muximux/#linuxservermuximux","title":"linuxserver/muximux","text":"<p>Muximux is a lightweight portal to view &amp; manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.</p>"},{"location":"deprecated_images/docker-muximux/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/muximux:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-muximux/#application-setup","title":"Application Setup","text":"<p>Find the web interface at <code>&lt;your-ip&gt;:80</code> , set apps you wish to use with muximux via the webui. More info:- Muximux</p>"},{"location":"deprecated_images/docker-muximux/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-muximux/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n muximux:\n image: lscr.io/linuxserver/muximux:latest\n container_name: muximux\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-muximux/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=muximux \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 80:80 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/muximux:latest\n</code></pre>"},{"location":"deprecated_images/docker-muximux/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-muximux/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"deprecated_images/docker-muximux/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-muximux/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where muximux should store its files."},{"location":"deprecated_images/docker-muximux/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-muximux/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-muximux/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-muximux/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-muximux/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-muximux/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it muximux /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f muximux</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' muximux</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/muximux:latest</code></li> </ul>"},{"location":"deprecated_images/docker-muximux/#versions","title":"Versions","text":"<ul> <li>21.10.22: - Deprecate image.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>13.09.18: - Rebase to alpine 3.8.</li> <li>09.01.18: - Rebase to alpine 3.7.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>12.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Rebase to alpine linux.</li> <li>09.09.16: - Add badges to README.</li> <li>22.02.16: - Initial release date.</li> </ul>"},{"location":"deprecated_images/docker-mylar/","title":"mylar","text":""},{"location":"deprecated_images/docker-mylar/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-mylar/#linuxservermylar","title":"linuxserver/mylar","text":"<p>Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.</p>"},{"location":"deprecated_images/docker-mylar/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mylar</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-mylar/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-mylar/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n mylar:\n image: lscr.io/linuxserver/mylar\n container_name: mylar\n environment:\n - PUID=1000\n - PGID=1000\n volumes:\n - &lt;path to data&gt;:/config\n - &lt;comics-folder&gt;:/comics\n - &lt;downloads-folder&gt;:/downloads\n ports:\n - 8090:8090\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-mylar/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=mylar \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -p 8090:8090 \\\n -v &lt;path to data&gt;:/config \\\n -v &lt;comics-folder&gt;:/comics \\\n -v &lt;downloads-folder&gt;:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mylar\n</code></pre>"},{"location":"deprecated_images/docker-mylar/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-mylar/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8090</code> WebUI"},{"location":"deprecated_images/docker-mylar/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation"},{"location":"deprecated_images/docker-mylar/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where mylar should store config files. <code>/comics</code> Map to your comics folder. <code>/downloads</code> Map to your downloads folder."},{"location":"deprecated_images/docker-mylar/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-mylar/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-mylar/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-mylar/#application-setup","title":"Application Setup","text":"<p>THIS IMAGE IS DEPRECATED. Please migrate to Mylar3.</p> <p>The web ui for settings etc, is on <code>&lt;your-ip&gt;:8090</code> For more detailed setup refer Mylar.</p>"},{"location":"deprecated_images/docker-mylar/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-mylar/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it mylar /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f mylar</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar</code></li> </ul>"},{"location":"deprecated_images/docker-mylar/#versions","title":"Versions","text":"<ul> <li>21.12.20: - Deprecated. Please migrate to Mylar3.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Pipeline logic and multi arch.</li> <li>17.08.18: - Rebase to alpine 3.8.</li> <li>06.07.18: - Add <code>html5lib</code> python package.</li> <li>14.06.18: - Add <code>requests</code> python package.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>21.07.17: - Internal git pull instead of at runtime.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>19.02.17: - Use quiet option for cleaner console log, app logs to file anyways.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>26.01.16: - Initial release.</li> </ul>"},{"location":"deprecated_images/docker-nano-discord-bot/","title":"nano-discord-bot","text":""},{"location":"deprecated_images/docker-nano-discord-bot/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#linuxservernano-discord-bot","title":"linuxserver/nano-discord-bot","text":"<p>Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lsiodev/nano-discord-bot</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-nano-discord-bot/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=nano-discord-bot \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ \\\n -e RPC_URL=https://nano.linuxserver.io:7077 \\\n -e FAUCET_KEY=XXXXXXXXXXXXX \\\n -e DISCORD_KEY=XXXXXXXXXXXXX \\\n -e FAUCET_AMOUNT=\"1000\" \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lsiodev/nano-discord-bot\n</code></pre>"},{"location":"deprecated_images/docker-nano-discord-bot/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n nano-discord-bot:\n image: lsiodev/nano-discord-bot\n container_name: nano-discord-bot\n environment:\n - PUID=1000\n - PGID=1000\n - WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/\n - RPC_URL=https://nano.linuxserver.io:7077\n - FAUCET_KEY=XXXXXXXXXXXXX\n - DISCORD_KEY=XXXXXXXXXXXXX\n - FAUCET_AMOUNT=\"1000\"\n volumes:\n - /path/to/data:/config\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-nano-discord-bot/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"deprecated_images/docker-nano-discord-bot/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/</code> Hosted wallet endpoint to use. <code>RPC_URL=https://nano.linuxserver.io:7077</code> RPC endpoint to publish blocks to and ingest account information. <code>FAUCET_KEY=XXXXXXXXXXXXX</code> The private key for your faucet account. <code>DISCORD_KEY=XXXXXXXXXXXXX</code> Discord api key for the bot. <code>FAUCET_AMOUNT=\"1000\"</code> Amount to distribute to individual Discord users in Nano."},{"location":"deprecated_images/docker-nano-discord-bot/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and Radarr configs"},{"location":"deprecated_images/docker-nano-discord-bot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-nano-discord-bot/#application-setup","title":"Application Setup","text":"<p>With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here .</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.</p>"},{"location":"deprecated_images/docker-nano-discord-bot/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it nano-discord-bot /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f nano-discord-bot</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-discord-bot</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lsiodev/nano-discord-bot</code></li> </ul>"},{"location":"deprecated_images/docker-nano-discord-bot/#versions","title":"Versions","text":"<ul> <li>25.05.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-nntp2nntp/","title":"nntp2nntp","text":""},{"location":"deprecated_images/docker-nntp2nntp/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#linuxservernntp2nntp","title":"linuxserver/nntp2nntp","text":"<p>Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#warning","title":"Warning","text":"<p>Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nntp2nntp:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"deprecated_images/docker-nntp2nntp/#application-setup","title":"Application Setup","text":"<p>Edit sample config file <code>config/nntp2nntp.conf</code> with upstream provider details and rename the local users.</p> <p>New user passwords can be created by running the password hash generator <pre><code>docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass\n</code></pre> entering the desired password and copying the resulting string to the relevant user line in <code>/config/nntp2nntp.conf</code></p> <p>Example with a user called <code>Dave</code> and with a password of <code>password</code> <pre><code>Dave = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8\n</code></pre></p>"},{"location":"deprecated_images/docker-nntp2nntp/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n nntp2nntp:\n image: lscr.io/linuxserver/nntp2nntp:latest\n container_name: nntp2nntp\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PUID=&lt;yourUID&gt;\n - PGID=&lt;yourGID&gt;\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 1563:1563\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-nntp2nntp/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nntp2nntp \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PUID=&lt;yourUID&gt; \\\n -e PGID=&lt;yourGID&gt; \\\n -p 1563:1563 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nntp2nntp:latest\n</code></pre>"},{"location":"deprecated_images/docker-nntp2nntp/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>1563</code> will map the container's port 1563 to port 1563 on the host"},{"location":"deprecated_images/docker-nntp2nntp/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PUID=&lt;yourUID&gt;</code> specify your UID <code>PGID=&lt;yourGID&gt;</code> specify your GID"},{"location":"deprecated_images/docker-nntp2nntp/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> this will store config on the docker host"},{"location":"deprecated_images/docker-nntp2nntp/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-nntp2nntp/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-nntp2nntp/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-nntp2nntp/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it nntp2nntp /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f nntp2nntp</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nntp2nntp</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nntp2nntp:latest</code></li> </ul>"},{"location":"deprecated_images/docker-nntp2nntp/#versions","title":"Versions","text":"<ul> <li>04.07.23: - Deprecate container.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>10.10.22: - Rebase to Alpine 3.15.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.04.19: - Multiarch builds and build from Github fork.</li> <li>15.05.18: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-nzbget/","title":"nzbget","text":""},{"location":"deprecated_images/docker-nzbget/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. nzbget has been deprecated by its developers. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd</p>"},{"location":"deprecated_images/docker-nzbget/#linuxservernzbget","title":"linuxserver/nzbget","text":"<p>Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.</p>"},{"location":"deprecated_images/docker-nzbget/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nzbget:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-nzbget/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable nzbget releases testing \u2705 nzbget pre-releases"},{"location":"deprecated_images/docker-nzbget/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>&lt;your-ip&gt;:6789</code> and the default login details (change ASAP) are</p> <p><code>login:nzbget, password:tegbzn6789</code></p> <p>To allow scheduling, from the webui set the time correction value in settings/logging.</p> <p>To change umask settings.</p> <p></p> <p>scroll to bottom, set umask like this (example shown for unraid)</p> <p></p> <p>You can add an additional mount point for intermediate unpacking folder with:-</p> <p><code>-v &lt;/path/to/intermedia_unpacking_folder&gt;:/intermediate</code></p> <p>for example, and changing the setting for InterDir in the PATHS tab of settings to <code>/intermediate</code></p>"},{"location":"deprecated_images/docker-nzbget/#media-folders","title":"Media folders","text":"<p>We have set <code>/downloads</code> as a optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"deprecated_images/docker-nzbget/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-nzbget/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n nzbget:\n image: lscr.io/linuxserver/nzbget:latest\n container_name: nzbget\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - NZBGET_USER=nzbget #optional\n - NZBGET_PASS=tegbzn6789 #optional\n volumes:\n - /path/to/data:/config\n - /path/to/downloads:/downloads #optional\n ports:\n - 6789:6789\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-nzbget/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nzbget \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e NZBGET_USER=nzbget `#optional` \\\n -e NZBGET_PASS=tegbzn6789 `#optional` \\\n -p 6789:6789 \\\n -v /path/to/data:/config \\\n -v /path/to/downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nzbget:latest\n</code></pre>"},{"location":"deprecated_images/docker-nzbget/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-nzbget/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>6789</code> WebUI"},{"location":"deprecated_images/docker-nzbget/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>NZBGET_USER=nzbget</code> Specify the user for web authentication. <code>NZBGET_PASS=tegbzn6789</code> Specify the password for web authentication."},{"location":"deprecated_images/docker-nzbget/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> NZBGet App data. <code>/downloads</code> Location of downloads on disk."},{"location":"deprecated_images/docker-nzbget/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-nzbget/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-nzbget/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-nzbget/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-nzbget/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-nzbget/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it nzbget /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f nzbget</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbget</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbget:latest</code></li> </ul>"},{"location":"deprecated_images/docker-nzbget/#versions","title":"Versions","text":"<ul> <li>31.12.22: - Deprecate image. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd</li> <li>27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd</li> <li>13.11.22: - Rebase master to 3.16, migrate to s6v3.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials.</li> <li>04.07.21: - Rebase to alpine 3.14.</li> <li>28.05.21: - Add linuxserver wheel index.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>26.10.20: - Fix python dependencies.</li> <li>24.08.20: - Fix ignored umask environment variable.</li> <li>08.06.20: - Symlink python3 bin to python.</li> <li>01.06.20: - Rebasing to alpine 3.12. Removing python2.</li> <li>13.05.20: - Add rarfile python package (for DeepUnrar).</li> <li>01.01.20: - Add python3 alongside python2 during transition.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>13.06.19: - Add apprise, chardet &amp; pynzbget packages.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>25.02.19: - Rebasing to alpine 3.9.</li> <li>20.01.19: - Add pipeline logic and multi arch, build from source.</li> <li>21.08.18: - Rebase to alpine 3.8.</li> <li>20.02.18: - Add note about supplemental mount point for intermediate unpacking.</li> <li>13.12.17: - Rebase to alpine 3.7.</li> <li>02.09.17: - Place app in subfolder rather than /app.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>20.04.17: - Add testing branch.</li> <li>06.02.17: - Rebase to alpine 3.5.</li> <li>30.09.16: - Fix umask.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README, perms fix on /app to allow updates.</li> <li>19.08.16: - Rebase to alpine linux.</li> <li>18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.</li> </ul>"},{"location":"deprecated_images/docker-openvpn-as/","title":"openvpn-as","text":""},{"location":"deprecated_images/docker-openvpn-as/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard</p>"},{"location":"deprecated_images/docker-openvpn-as/#linuxserveropenvpn-as","title":"linuxserver/openvpn-as","text":"<p>Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control.</p>"},{"location":"deprecated_images/docker-openvpn-as/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/openvpn-as</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 latest"},{"location":"deprecated_images/docker-openvpn-as/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. <code>latest</code> tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.</p> Tag Description latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial"},{"location":"deprecated_images/docker-openvpn-as/#application-setup","title":"Application Setup","text":"<p>The admin interface is available at <code>https://DOCKER-HOST-IP:943/admin</code> (assuming bridge mode) with a default user/password of admin/password</p> <p>During first login, make sure that the \"Authentication\" in the webui is set to \"Local\" instead of \"PAM\". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation).</p> <p>The \"admin\" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the \"admin\" user in the gui, 4) Modify the <code>as.conf</code> file under config/etc and replace the line <code>boot_pam_users.0=admin</code> with ~~<code>#boot_pam_users.0=admin</code>~~ <code>boot_pam_users.0=kjhvkhv</code> (this only has to be done once and will survive container recreation) * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above.</p> <p>To ensure your devices can connect to your VPN properly, goto Configuration -&gt; Network Settings -&gt; and change the \"Hostname or IP Address\" section to either your domain name or public ip address.</p>"},{"location":"deprecated_images/docker-openvpn-as/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-openvpn-as/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n openvpn-as:\n image: lscr.io/linuxserver/openvpn-as\n container_name: openvpn-as\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - INTERFACE=eth0 #optional\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 943:943\n - 9443:9443\n - 1194:1194/udp\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-openvpn-as/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=openvpn-as \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e INTERFACE=eth0 `#optional` \\\n -p 943:943 \\\n -p 9443:9443 \\\n -p 1194:1194/udp \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/openvpn-as\n</code></pre>"},{"location":"deprecated_images/docker-openvpn-as/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-openvpn-as/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>943</code> Admin GUI port. <code>9443</code> TCP port. <code>1194/udp</code> UDP port."},{"location":"deprecated_images/docker-openvpn-as/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>INTERFACE=eth0</code> With bridge networking, leave it as eth0 (or don't include at all), if host or macvlan, set it to your host's network interface, found by running <code>ifconfig</code>"},{"location":"deprecated_images/docker-openvpn-as/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where openvpn-as should store configuration files."},{"location":"deprecated_images/docker-openvpn-as/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-openvpn-as/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-openvpn-as/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-openvpn-as/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-openvpn-as/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it openvpn-as /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f openvpn-as</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvpn-as</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvpn-as</code></li> </ul>"},{"location":"deprecated_images/docker-openvpn-as/#versions","title":"Versions","text":"<ul> <li>15.06.20: - Deprecate.</li> <li>15.06.20: - Add fixes for 2.9.0.</li> <li>04.11.20: - <code>xenial</code> tag is deprecated and there will be no further releases for that tag.</li> <li>22.06.20: - Added Support for persistent Customization Folders.</li> <li>26.03.20: - Switch to using the openvpn-as repo for packages.</li> <li>29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users.</li> <li>27.08.19: - Add new clients package to install and upgrade process.</li> <li>22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed.</li> <li>25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic.</li> <li>07.04.19: - Fix first time config.</li> <li>03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support.</li> <li>14.03.19: - Update deb package URL.</li> <li>21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes.</li> <li>12.02.19: - Rename github repo to match the docker hub repo and container name.</li> <li>07.02.19: - Add pipeline logic and multi arch.</li> <li>31.01.19: - Add port mappings to docker create sample in readme.</li> <li>26.01.19: - Removed <code>privileged</code> and <code>host</code> networking requirements, added <code>cap-add=NET_ADMIN</code> requirement instead. <code>INTERFACE</code> no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default.</li> <li>19.12.18: - Bump to version 2.6.1.</li> <li>10.07.18: - Bump to version 2.5.2.</li> <li>23.03.18: - Bump to version 2.5.</li> <li>14.12.17: - Consolidate layers and fix continuation lines.</li> <li>25.10.17: - Bump to version 2.1.12.</li> <li>18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user.</li> <li>31.07.17: - Fix updates of existing openvpn-as installs.</li> <li>07.07.17: - Bump to version 2.1.9.</li> <li>31.10.16: - Bump to version 2.1.4.</li> <li>14.10.16: - Add version layer information.</li> <li>13.09.16: - Rebuild due to push error to hub on last build.</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>01.08.16: - Rebase to xenial.</li> <li>18.09.15: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-organizr/","title":"organizr","text":""},{"location":"deprecated_images/docker-organizr/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr</p>"},{"location":"deprecated_images/docker-organizr/#linuxserverorganizr","title":"linuxserver/organizr","text":"<p>Organizr is a HTPC/Homelab Services Organizer - Written in PHP</p> <p>Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup \"Tabs\" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs.</p> <p>For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr</p>"},{"location":"deprecated_images/docker-organizr/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/organizr</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-organizr/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-organizr/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n organizr:\n image: linuxserver/organizr\n container_name: organizr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=&lt;your timezone, eg Europe/London&gt;\n volumes:\n - &lt;path to data&gt;:/config\n ports:\n - 9983:80\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-organizr/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=organizr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=&lt;your timezone, eg Europe/London&gt; \\\n -p 9983:80 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/organizr\n</code></pre>"},{"location":"deprecated_images/docker-organizr/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-organizr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> will map the container's port 80 to port 9983 on the host"},{"location":"deprecated_images/docker-organizr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=&lt;your timezone, eg Europe/London&gt;</code> for specifying your timezone"},{"location":"deprecated_images/docker-organizr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> this is where your user data and logs will live"},{"location":"deprecated_images/docker-organizr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-organizr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-organizr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-organizr/#application-setup","title":"Application Setup","text":"<p>Dead simple to get running, create the container as instructed and start it. When up and running, load the site.</p>"},{"location":"deprecated_images/docker-organizr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-organizr/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it organizr /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f organizr</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' organizr</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/organizr</code></li> </ul>"},{"location":"deprecated_images/docker-organizr/#versions","title":"Versions","text":"<ul> <li>18.04.19: - Fix new install not working.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>26.02.19: - Upgrade packages during install to prevent mismatch with baseimage.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Fix permissions on new app location</li> <li>31.12.18: - Moved to pipeline building from v1-master branch</li> <li>05.09.18: - Rebase to Alpine 3.8</li> <li>10.01.18: - Rebase to Alpine 3.7</li> <li>25.05.17: - Rebase to Alpine 3.6</li> <li>02.05.17: - Added php7-curl package</li> <li>12.04.17: - Added php7-ldap package</li> <li>10.03.18: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-paperless-ng/","title":"paperless-ng","text":""},{"location":"deprecated_images/docker-paperless-ng/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx</p>"},{"location":"deprecated_images/docker-paperless-ng/#linuxserverpaperless-ng","title":"linuxserver/paperless-ng","text":"<p>Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"</p>"},{"location":"deprecated_images/docker-paperless-ng/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/paperless-ng:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-paperless-ng/#application-setup","title":"Application Setup","text":"<p>Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: <code>docker exec -it &lt;container_name&gt; manage &lt;command&gt;</code>. For example, <code>docker exec -it paperless manage document_retagger -tT</code>.</p>"},{"location":"deprecated_images/docker-paperless-ng/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-paperless-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n paperless-ng:\n image: lscr.io/linuxserver/paperless-ng:latest\n container_name: paperless-ng\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=America/New_York\n - REDIS_URL= #optional\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;/path/to/appdata/data&gt;:/data\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=paperless-ng \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=America/New_York \\\n -e REDIS_URL= `#optional` \\\n -p 8000:8000 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;/path/to/appdata/data&gt;:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/paperless-ng:latest\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ng/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-paperless-ng/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> http gui"},{"location":"deprecated_images/docker-paperless-ng/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=America/New_York</code> Specify a timezone to use EG America/New_York <code>REDIS_URL=</code> Specify an external redis instance to use. Can optionally include a port (<code>redis:6379</code>) and/or db (<code>redis/foo</code>). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"deprecated_images/docker-paperless-ng/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/data</code> Storage location for all paperless-ng data files."},{"location":"deprecated_images/docker-paperless-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-paperless-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-paperless-ng/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-paperless-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ng/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-paperless-ng/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it paperless-ng /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f paperless-ng</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ng</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ng:latest</code></li> </ul>"},{"location":"deprecated_images/docker-paperless-ng/#versions","title":"Versions","text":"<ul> <li>05.09.22: - Deprecate.</li> <li>30.11.21: - Added in jbig2enc.</li> <li>07.10.21: - Fixed variable that determins if we should run redis locally.</li> <li>01.10.21: - Replaced uwsgi with gunicorn due to websocket issues.</li> <li>24.07.21: - Fixed directory config files (sqlite db) is all stored.</li> <li>23.07.21: - Fixed initial user creation.</li> <li>10.07.21: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-paperless-ngx/","title":"paperless-ngx","text":""},{"location":"deprecated_images/docker-paperless-ngx/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx</p>"},{"location":"deprecated_images/docker-paperless-ngx/#linuxserverpaperless-ngx","title":"linuxserver/paperless-ngx","text":"<p>Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"</p>"},{"location":"deprecated_images/docker-paperless-ngx/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/paperless-ngx:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-paperless-ngx/#application-setup","title":"Application Setup","text":"<p>Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: <code>docker exec -it &lt;container_name&gt; manage &lt;command&gt;</code>. For example, <code>docker exec -it paperless manage document_retagger -tT</code>.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n paperless-ngx:\n image: lscr.io/linuxserver/paperless-ngx:latest\n container_name: paperless-ngx\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=America/New_York\n - REDIS_URL= #optional\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/appdata/data:/data\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ngx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=paperless-ngx \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=America/New_York \\\n -e REDIS_URL= `#optional` \\\n -p 8000:8000 \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/appdata/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/paperless-ngx:latest\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ngx/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> http gui"},{"location":"deprecated_images/docker-paperless-ngx/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=America/New_York</code> Specify a timezone to use EG America/New_York <code>REDIS_URL=</code> Specify an external redis instance to use. Can optionally include a port (<code>redis:6379</code>) and/or db (<code>redis/foo</code>). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"deprecated_images/docker-paperless-ngx/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/data</code> Storage location for all paperless-ngx data files."},{"location":"deprecated_images/docker-paperless-ngx/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-paperless-ngx/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-paperless-ngx/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-paperless-ngx/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it paperless-ngx /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f paperless-ngx</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ngx</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ngx:latest</code></li> </ul>"},{"location":"deprecated_images/docker-paperless-ngx/#versions","title":"Versions","text":"<ul> <li>05.09.22: - Deprecate.</li> <li>16.05.22: - Add correct libqpdf.so to arm builds.</li> <li>14.05.22: - Fine tune disabling of redis.</li> <li>12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql.</li> <li>12.05.22: - Utilize lsio wheel for pikepdf.</li> <li>11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn.</li> <li>05.05.22: - Add runtime dependencies libxslt1.1 for armhf</li> <li>30.04.22: - Add runtime dependencies lizbar and poppler-utils</li> <li>27.04.22: - Add build-dependencies for arm32 builds.</li> <li>11.04.22: - Replaced uwsgi with gunicorn due to websocket issues.</li> <li>11.03.22: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-papermerge/","title":"papermerge","text":""},{"location":"deprecated_images/docker-papermerge/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. The last working tag is: v2.0.1-ls60 We recommend the official image instead: https://hub.docker.com/r/papermerge/papermerge</p>"},{"location":"deprecated_images/docker-papermerge/#linuxserverpapermerge","title":"linuxserver/papermerge","text":"<p>Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\"</p>"},{"location":"deprecated_images/docker-papermerge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/papermerge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-papermerge/#application-setup","title":"Application Setup","text":"<p>Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge.</p> <p>If you need non-English OCR language support, you can use this mod.</p>"},{"location":"deprecated_images/docker-papermerge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-papermerge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n papermerge:\n image: lscr.io/linuxserver/papermerge:latest\n container_name: papermerge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - REDIS_URL= #optional\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;/path/to/appdata/data&gt;:/data\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-papermerge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=papermerge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e REDIS_URL= `#optional` \\\n -p 8000:8000 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;/path/to/appdata/data&gt;:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/papermerge:latest\n</code></pre>"},{"location":"deprecated_images/docker-papermerge/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-papermerge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> http gui"},{"location":"deprecated_images/docker-papermerge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>REDIS_URL=</code> Specify an external redis instance to use. Can optionally include a port (<code>redis:6379</code>) and/or db (<code>redis/foo</code>). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"deprecated_images/docker-papermerge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/data</code> Storage location for all papermerge data files."},{"location":"deprecated_images/docker-papermerge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-papermerge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-papermerge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-papermerge/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-papermerge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-papermerge/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it papermerge /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f papermerge</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' papermerge</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/papermerge:latest</code></li> </ul>"},{"location":"deprecated_images/docker-papermerge/#versions","title":"Versions","text":"<ul> <li>15.02.23: - Deprecate image.</li> <li>15.07.22: - Don't install development python packages</li> <li>13.04.21: - Handle upstream stapler change</li> <li>13.03.21: - Fixed mglib dependency per issue 32</li> <li>25.02.21: - Updated dependencies for v2</li> <li>07.02.21: - Support external MySQL/PSQL DBs.</li> <li>01.02.21: - Add redis.</li> <li>09.12.20: - Fix locales.</li> <li>08.08.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-photoshow/","title":"photoshow","text":""},{"location":"deprecated_images/docker-photoshow/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-photoshow/#linuxserverphotoshow","title":"linuxserver/photoshow","text":"<p>Photoshow is gallery software at its easiest, it doesn't even require a database.</p>"},{"location":"deprecated_images/docker-photoshow/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/photoshow:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-photoshow/#application-setup","title":"Application Setup","text":"<p>On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping.</p>"},{"location":"deprecated_images/docker-photoshow/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-photoshow/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n photoshow:\n image: lscr.io/linuxserver/photoshow:latest\n container_name: photoshow\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n - &lt;path to pictures&gt;:/Pictures:ro\n - &lt;path to store thumbs&gt;:/Thumbs\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-photoshow/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=photoshow \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 80:80 \\\n -v &lt;path to data&gt;:/config \\\n -v &lt;path to pictures&gt;:/Pictures:ro \\\n -v &lt;path to store thumbs&gt;:/Thumbs \\\n --restart unless-stopped \\\n lscr.io/linuxserver/photoshow:latest\n</code></pre>"},{"location":"deprecated_images/docker-photoshow/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-photoshow/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"deprecated_images/docker-photoshow/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-photoshow/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Stores config and logs for nginx base. <code>/Pictures:ro</code> Your local folder of photos you wish to share. <code>/Thumbs</code> Local folder to store thumbnails of your images."},{"location":"deprecated_images/docker-photoshow/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-photoshow/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-photoshow/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-photoshow/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-photoshow/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-photoshow/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it photoshow /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f photoshow</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' photoshow</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/photoshow:latest</code></li> </ul>"},{"location":"deprecated_images/docker-photoshow/#versions","title":"Versions","text":"<ul> <li>14.10.22: - Deprecate image.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>23.09.19: - Adding PHP-Exif for image metadata and processing.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>05.09.18: - Rebase to alpine 3.8.</li> <li>07.01.18: - Rebase to alpine 3.7.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.</li> <li>14.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Rebase to alpine linux.</li> <li>11.09.16: - Add layer badges to README.</li> <li>21.08.15: - Use patched keybaord js from fork of photoshow.</li> <li>21.08.15: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-pixapop/","title":"pixapop","text":""},{"location":"deprecated_images/docker-pixapop/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-pixapop/#linuxserverpixapop","title":"linuxserver/pixapop","text":"<p>Pixapop is an open-source single page application to view your photos in the easiest way possible.</p>"},{"location":"deprecated_images/docker-pixapop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pixapop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-pixapop/#application-setup","title":"Application Setup","text":"<p>Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.</p>"},{"location":"deprecated_images/docker-pixapop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-pixapop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n pixapop:\n image: lscr.io/linuxserver/pixapop:latest\n container_name: pixapop\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - APP_USERNAME=admin #optional\n - APP_PASSWORD=admin #optional\n volumes:\n - /path/to/config:/config\n - /path/to/photos:/photos\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-pixapop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pixapop \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e APP_USERNAME=admin `#optional` \\\n -e APP_PASSWORD=admin `#optional` \\\n -p 80:80 \\\n -v /path/to/config:/config \\\n -v /path/to/photos:/photos \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pixapop:latest\n</code></pre>"},{"location":"deprecated_images/docker-pixapop/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-pixapop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"deprecated_images/docker-pixapop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>APP_USERNAME=admin</code> Specify a username to enable authentication. <code>APP_PASSWORD=admin</code> Specify a password to enable authentication."},{"location":"deprecated_images/docker-pixapop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Stores config and logs for nginx base. <code>/photos</code> Your local folder of photos."},{"location":"deprecated_images/docker-pixapop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-pixapop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-pixapop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-pixapop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-pixapop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-pixapop/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it pixapop /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f pixapop</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pixapop</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pixapop:latest</code></li> </ul>"},{"location":"deprecated_images/docker-pixapop/#versions","title":"Versions","text":"<ul> <li>14.10.22 - Deprecate image.</li> <li>17.12.20 - Move image to main linuxserver repo, add notice to container log</li> <li>18.03.19 - Update build dependencies</li> <li>18.03.19 - Add build dependencies</li> <li>17.03.19 - Initial release</li> </ul>"},{"location":"deprecated_images/docker-pydio/","title":"pydio","text":""},{"location":"deprecated_images/docker-pydio/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-pydio/#linuxserverpydio","title":"linuxserver/pydio","text":"<p>Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more.</p>"},{"location":"deprecated_images/docker-pydio/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pydio</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-pydio/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-pydio/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n pydio:\n image: lscr.io/linuxserver/pydio\n container_name: pydio\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;path to data&gt;:/config\n - &lt;path to data&gt;:/data\n ports:\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-pydio/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=pydio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 443:443 \\\n -v &lt;path to data&gt;:/config \\\n -v &lt;path to data&gt;:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pydio\n</code></pre>"},{"location":"deprecated_images/docker-pydio/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-pydio/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>443</code> WebUI"},{"location":"deprecated_images/docker-pydio/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-pydio/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where pydio should store it's configuration files. <code>/data</code> Where pydio should store uploaded files."},{"location":"deprecated_images/docker-pydio/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-pydio/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-pydio/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-pydio/#application-setup","title":"Application Setup","text":"<p>THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead.</p> <p>You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname...</p> <p>Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own.</p> <p>For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard.</p> <p>For email settings edit the file /config/ssmtp.conf and restart the container.</p>"},{"location":"deprecated_images/docker-pydio/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-pydio/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it pydio /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f pydio</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio</code></li> </ul>"},{"location":"deprecated_images/docker-pydio/#versions","title":"Versions","text":"<ul> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8.</li> <li>12.01.18: - Rebase to alpine linux 3.7.</li> <li>28.10.17: - php7-ssh2 moved from testing to community repo.</li> <li>25.05.17: - Rebase to alpine linux 3.6.</li> <li>17.05.17: - Make default install pydio 8.</li> <li>03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.</li> <li>28.02.17: - Modify sed for data path.</li> <li>18.02.17: - Rebase to alpine linux 3.5.</li> <li>05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite.</li> <li>14.10.16: - Add version layer information.</li> <li>10.09.16: - Add layer badges to README.</li> <li>08.09.15: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-pyload/","title":"pyload","text":""},{"location":"deprecated_images/docker-pyload/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/</p>"},{"location":"deprecated_images/docker-pyload/#linuxserverpyload","title":"linuxserver/pyload","text":"<p>Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.</p>"},{"location":"deprecated_images/docker-pyload/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pyload</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-pyload/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. <code>latest</code> tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.</p> Tag Description latest Stable releases from Pyload ng Development releases from Pyload-ng (currently alpha)"},{"location":"deprecated_images/docker-pyload/#application-setup","title":"Application Setup","text":"<p>Access the web interface at <code>http://your-ip:8000</code> the default login is: username - admin password - password</p> <p>For the <code>ng</code> tag, the default user/pass are <code>pyload/pyload</code>.</p> <p>For general usage please see the pyLoad wiki here .</p>"},{"location":"deprecated_images/docker-pyload/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-pyload/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n pyload:\n image: lscr.io/linuxserver/pyload\n container_name: pyload\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /path/to/pyload/config:/config\n - /path/to/downloads:/downloads\n ports:\n - 8000:8000\n - 7227:7227 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-pyload/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pyload \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 8000:8000 \\\n -p 7227:7227 `#optional` \\\n -v /path/to/pyload/config:/config \\\n -v /path/to/downloads:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pyload\n</code></pre>"},{"location":"deprecated_images/docker-pyload/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-pyload/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> Allows HTTP access to the application <code>7227</code> pyLoad control port"},{"location":"deprecated_images/docker-pyload/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-pyload/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> pyLoad Configuration and files database <code>/downloads</code> Destination of pyLoad downloads"},{"location":"deprecated_images/docker-pyload/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-pyload/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-pyload/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-pyload/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-pyload/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-pyload/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it pyload /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f pyload</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload</code></li> </ul>"},{"location":"deprecated_images/docker-pyload/#versions","title":"Versions","text":"<ul> <li>25.01.22: - Deprecate.</li> <li>23.02.21: - Add Python plugin <code>passlib</code>.</li> <li>16.02.21: - Publish <code>ng</code> tag for pyload-ng (currently alpha).</li> <li>04.11.20: - Rebase to alpine 3.11.</li> <li>18.10.20: - Chown app folder to fix plugin updater.</li> <li>18.07.19: - Add ffmpeg for plugins the do video processing.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>08.06.19: - Initial release.</li> </ul>"},{"location":"deprecated_images/docker-readme-sync/","title":"readme-sync","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p></p>"},{"location":"deprecated_images/docker-readme-sync/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast <p>The LinuxServer.io team brings you another image release featuring :-</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>security updates</li> </ul>"},{"location":"deprecated_images/docker-readme-sync/#lsiodevreadme-sync","title":"lsiodev/readme-sync","text":"<p>Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.</p> <p> </p>"},{"location":"deprecated_images/docker-readme-sync/#usage","title":"Usage","text":"<pre><code>docker run --rm=true \\\n -e DOCKERHUB_USERNAME=&lt;USERNAME&gt; \\\n -e DOCKERHUB_PASSWORD=&lt;PASSWORD&gt; \\\n -e GIT_REPOSITORY=&lt;GITHUB REPO&gt; \\\n -e DOCKER_REPOSITORY=&lt;DOCKERHUB REPO&gt; \\\n -e GIT_BRANCH=&lt;GITHUB BRANCH&gt; \\\n lsiodev/readme-sync bash -c 'node sync'\n</code></pre>"},{"location":"deprecated_images/docker-readme-sync/#parameters","title":"Parameters","text":"<p>The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.</p> Parameter Function <code>-e DOCKERHUB_USERNAME</code> your dockerhub username <code>-e DOCKERHUB_PASSWORD</code> your dockerhub password <code>-e GIT_REPOSITORY</code> github repository, i.e. linuxserver/docker-readme-sync <code>-e DOCKER_REPOSITORY</code> dockerhub repository, i.e. lsiodev/docker-readme-sync <code>-e GIT_BRANCH</code> github repository branch, optional (default: master) <p>\u00a0 It is based on alpine and is not meant to run as a service. The sync is performed and the command exits. \u00a0</p>"},{"location":"deprecated_images/docker-readme-sync/#versions","title":"Versions","text":"Date Changes 13.01.21 Use ghcr baseimages. Fall back to <code>external</code> folder for readme lite. 28.07.20 Rebase to alpine 3.12. 20.08.18 Rebase to alpine 3.8. 28.02.18 convert repo to use node.js implementation. 17.11.17 add github branch support. 16.10.16 merge ruby app. 11.10.16 Initial development release."},{"location":"deprecated_images/docker-requestrr/","title":"requestrr","text":""},{"location":"deprecated_images/docker-requestrr/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.</p>"},{"location":"deprecated_images/docker-requestrr/#linuxserverrequestrr","title":"linuxserver/requestrr","text":"<p>Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.</p>"},{"location":"deprecated_images/docker-requestrr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/requestrr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-requestrr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:4545</code>, for more information check out Requestrr.</p>"},{"location":"deprecated_images/docker-requestrr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-requestrr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n requestrr:\n image: lscr.io/linuxserver/requestrr:latest\n container_name: requestrr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 4545:4545\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-requestrr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=requestrr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 4545:4545 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/requestrr:latest\n</code></pre>"},{"location":"deprecated_images/docker-requestrr/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-requestrr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4545</code> web gui"},{"location":"deprecated_images/docker-requestrr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-requestrr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"deprecated_images/docker-requestrr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-requestrr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-requestrr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-requestrr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-requestrr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-requestrr/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it requestrr /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f requestrr</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' requestrr</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/requestrr:latest</code></li> </ul>"},{"location":"deprecated_images/docker-requestrr/#versions","title":"Versions","text":"<ul> <li>20.12.21: - Deprecate.</li> <li>27.09.21: - Allow app to write to tmp folder.</li> <li>21.02.21: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-rutorrent/","title":"rutorrent","text":""},{"location":"deprecated_images/docker-rutorrent/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-rutorrent/#linuxserverrutorrent","title":"linuxserver/rutorrent","text":"<p>Rutorrent is a popular rtorrent client with a webui for ease of use.</p>"},{"location":"deprecated_images/docker-rutorrent/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/rutorrent</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-rutorrent/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-rutorrent/#docker-compose-recommended","title":"docker-compose (recommended)","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n rutorrent:\n image: lscr.io/linuxserver/rutorrent\n container_name: rutorrent\n environment:\n - PUID=1000\n - PGID=1000\n volumes:\n - &lt;/path/to/rutorrent/config&gt;:/config\n - &lt;/path/to/rutorrent/downloads&gt;:/downloads\n ports:\n - 80:80\n - 5000:5000\n - 51413:51413\n - 6881:6881/udp\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-rutorrent/#docker-cli","title":"docker cli","text":"<pre><code>docker run -d \\\n --name=rutorrent \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -p 80:80 \\\n -p 5000:5000 \\\n -p 51413:51413 \\\n -p 6881:6881/udp \\\n -v &lt;/path/to/rutorrent/config&gt;:/config \\\n -v &lt;/path/to/rutorrent/downloads&gt;:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/rutorrent\n</code></pre>"},{"location":"deprecated_images/docker-rutorrent/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-rutorrent/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> ruTorrent Web UI <code>5000</code> scgi port <code>51413</code> Bit-torrent port <code>6881/udp</code> Bit-torrent port"},{"location":"deprecated_images/docker-rutorrent/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation"},{"location":"deprecated_images/docker-rutorrent/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> where ruTorrent should store it's config files <code>/downloads</code> path to your downloads folder"},{"location":"deprecated_images/docker-rutorrent/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-rutorrent/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-rutorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-rutorrent/#application-setup","title":"Application Setup","text":"<p>THIS IMAGE IS DEPRECATED. Please migrate to crazy-max's image.</p> <p>Webui can be found at <code>&lt;your-ip&gt;:80</code> , configuration files for rtorrent are in /config/rtorrent, php in config/php and for the webui in /config/rutorrent/settings.</p> <p><code>Settings, changed by the user through the \"Settings\" panel in ruTorrent, are valid until rtorrent restart. After which all settings will be set according to the rtorrent config file (/config/rtorrent/rtorrent.rc),this is a limitation of the actual apps themselves.</code></p> <p>** Important note for unraid users or those running services such as a webserver on port 80, change port 80 assignment **</p> <p><code>** It should also be noted that this container when run will create subfolders ,completed, incoming and watched in the /downloads volume.**</code></p> <p>** The Port Assignments and configuration folder structure has been changed from the previous ubuntu based versions of this container and we recommend a clean install **</p> <p>Umask can be set in the /config/rtorrent/rtorrent.rc file by changing value in <code>system.umask.set</code></p> <p>If you are seeing this error <code>Caught internal_error: 'DhtRouter::get_tracker did not actually insert tracker.'.</code> , a possible fix is to disable dht in <code>/config/rtorrent/rtorrent.rc</code> by changing the following values.</p> <pre><code>dht.mode.set = disable\nprotocol.pex.set = no\n</code></pre> <p>If after updating you see an error about connecting to rtorrent in the webui, remove or comment out these lines in /config/rtorrent/rtorrent.rc ,whatever value is set, yes or no. Just setting them to no will still cause the error..</p> <p><pre><code>trackers.use_udp.set = yes\nprotocol.pex.set = no\n</code></pre> To add plugins, create a <code>plugins</code> folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories.</p>"},{"location":"deprecated_images/docker-rutorrent/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-rutorrent/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it rutorrent /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f rutorrent</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rutorrent</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rutorrent</code></li> </ul>"},{"location":"deprecated_images/docker-rutorrent/#versions","title":"Versions","text":"<ul> <li>25.03.22: - Deprecated. Please migrate to crazy-max's image.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>29.02.20: - Update readme for pex/dht.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>20.05.19: - Shift to building from official releases instead of commits.</li> <li>13.05.19: - Add libffi and openssl.</li> <li>07.05.19: - Add cloudscraper pip package.</li> <li>11.04.19: - Fix warnings in webui by adding python3, procps and pip packages.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>03.11.18: - Add pipeline and multi arch logic to repo.</li> <li>27.08.18: - Add bind tools package.</li> <li>22.08.18: - Rebase to alpine 3.8.</li> <li>08.12.17: - Rebase to alpine 3.7, add sox package.</li> <li>28.10.17: - Mediainfo moved from testing to community repo.</li> <li>09.10.17: - Use repo version of mediainfo to shorten build time.</li> <li>28.05.17: - Fix permissions on secondary temp folder of nginx.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>03.05.17: - Fix log permissions.</li> <li>18.03.17: - Note in readme about disabling dht in some circumstances.</li> <li>24.02.17: - Patch a source file to quash rss https bug.</li> <li>29.01.17: - Rebase to alpine 3.5.</li> <li>20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90.</li> <li>14.10.16: - Add version layer information.</li> <li>04.10.16: - Remove redundant sessions folder.</li> <li>30.09.16: - Fix umask.</li> <li>21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package.</li> <li>09.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README, bump mediainfo version to 0.7.87.</li> <li>07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php.</li> <li>26.07.16: - Rebase to alpine.</li> <li>08.03.16: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-scrutiny/","title":"scrutiny","text":""},{"location":"deprecated_images/docker-scrutiny/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker</p>"},{"location":"deprecated_images/docker-scrutiny/#linuxserverscrutiny","title":"linuxserver/scrutiny","text":"<p>Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard &amp; Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.</p>"},{"location":"deprecated_images/docker-scrutiny/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/scrutiny:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"deprecated_images/docker-scrutiny/#application-setup","title":"Application Setup","text":"<p>This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables <code>SCRUTINY_WEB</code> and <code>SCRUTINY_COLLECTOR</code> to control the mode of the container. Setting both to <code>true</code> will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in \"collector\" mode by specifying <code>SCRUTINY_API_ENDPOINT</code>. Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is <code>8080</code>).</p> <p>You may need to manually enter the container to run <code>scrutiny-collector-metrics run</code> for your first job or wait until around midnight for it to kick off.</p> <p>A fully commented example configuration yaml file can be found in the original project repository here. Place this file in the location mounted to <code>/config</code>.</p> <p>A note on <code>--cap-add</code> for this container: * <code>SYS_RAWIO</code> is necessary to allow smartctl permission to query your device SMART data. * <code>SYS_ADMIN</code> is required for NVMe drives as per upstream issue #26.</p>"},{"location":"deprecated_images/docker-scrutiny/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-scrutiny/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n scrutiny:\n image: lscr.io/linuxserver/scrutiny:latest\n container_name: scrutiny\n cap_add:\n - SYS_RAWIO\n - SYS_ADMIN #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - SCRUTINY_API_ENDPOINT=http://localhost:8080\n - SCRUTINY_WEB=true\n - SCRUTINY_COLLECTOR=true\n volumes:\n - /path/to/config:/config\n - /run/udev:/run/udev:ro\n ports:\n - 8080:8080\n devices:\n - /dev/sda:/dev/sda\n - /dev/sdb:/dev/sdb\n - /dev/nvme1n1:/dev/nvme1n1\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-scrutiny/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=scrutiny \\\n --cap-add=SYS_RAWIO \\\n --cap-add=SYS_ADMIN `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e SCRUTINY_API_ENDPOINT=http://localhost:8080 \\\n -e SCRUTINY_WEB=true \\\n -e SCRUTINY_COLLECTOR=true \\\n -p 8080:8080 \\\n -v /path/to/config:/config \\\n -v /run/udev:/run/udev:ro \\\n --device /dev/sda:/dev/sda \\\n --device /dev/sdb:/dev/sdb \\\n --device /dev/nvme1n1:/dev/nvme1n1 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/scrutiny:latest\n</code></pre>"},{"location":"deprecated_images/docker-scrutiny/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-scrutiny/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Port for scrutiny's web interface and API."},{"location":"deprecated_images/docker-scrutiny/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London. <code>SCRUTINY_API_ENDPOINT=http://localhost:8080</code> # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector <code>SCRUTINY_WEB=true</code> # optional - Run the web service. <code>SCRUTINY_COLLECTOR=true</code> # optional - Run the metrics collector."},{"location":"deprecated_images/docker-scrutiny/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where config is stored. <code>/run/udev:ro</code> Provides necessary metadata to Scrutiny."},{"location":"deprecated_images/docker-scrutiny/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/sda</code> This is how Scrutiny accesses drives. Optionally supply <code>/dev:/dev</code> instead for all devices. <code>/dev/sdb</code> A second drive. <code>/dev/nvme1n1</code> An NVMe drive. NVMe requires <code>--cap-add=SYS_ADMIN</code>."},{"location":"deprecated_images/docker-scrutiny/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-scrutiny/#portainer-notice","title":"Portainer notice","text":"<p>{% hint style=\"warning\" %} This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"deprecated_images/docker-scrutiny/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-scrutiny/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-scrutiny/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-scrutiny/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-scrutiny/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it scrutiny /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f scrutiny</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' scrutiny</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/scrutiny:latest</code></li> </ul>"},{"location":"deprecated_images/docker-scrutiny/#versions","title":"Versions","text":"<ul> <li>13.06.22: - Deprecate container.</li> <li>19.01.22: - Rebase to Alpine 3.15.</li> <li>22.11.20: - Added fix for <code>nsswitch.conf</code> to resolve local hosts</li> <li>17.09.20: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-shout-irc/","title":"shout-irc","text":""},{"location":"deprecated_images/docker-shout-irc/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE <code>linuxserver/thelounge</code></p>"},{"location":"deprecated_images/docker-shout-irc/#linuxservershout-irc","title":"linuxserver/shout-irc","text":"<p>Shout-irc is a web IRC client that you host on your own server.</p>"},{"location":"deprecated_images/docker-shout-irc/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/shout-irc</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-shout-irc/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-shout-irc/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=shout-irc \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 9000:9000 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/shout-irc\n</code></pre>"},{"location":"deprecated_images/docker-shout-irc/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n shout-irc:\n image: linuxserver/shout-irc\n container_name: shout-irc\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n ports:\n - 9000:9000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-shout-irc/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-shout-irc/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9000</code> Application WebUI"},{"location":"deprecated_images/docker-shout-irc/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-shout-irc/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files."},{"location":"deprecated_images/docker-shout-irc/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-shout-irc/#application-setup","title":"Application Setup","text":"<ul> <li>To log in to the application, browse to https://:9000. To setup user account(s) edit <code>/config/config.json</code> Change the value <code>public: true,</code> to <code>public: false,</code> restart the container and enter the following from the command line of the host: <code>docker exec -it thelounge thelounge add &lt;user&gt;</code> Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface. </li> </ul>"},{"location":"deprecated_images/docker-shout-irc/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: </li> <li><code>docker exec -it shout-irc /bin/bash</code></li> <li>To monitor the logs of the container in realtime: </li> <li><code>docker logs -f shout-irc</code></li> <li>Container version number </li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shout-irc</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/shout-irc</code></li> </ul>"},{"location":"deprecated_images/docker-shout-irc/#versions","title":"Versions","text":"<ul> <li>11.06.19: - DEPRECATE IMAGE, USE THELOUNGE.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>25.08.18: - Rebase to alpine 3.8.</li> <li>13.12.17: - Rebase to alpine 3.7.</li> <li>27.05.17: - Rebase to alpine 3.6.</li> <li>09.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>31.08.16: - Rebase to alpine linux, move to lsiocommunity</li> </ul>"},{"location":"deprecated_images/docker-sickrage/","title":"sickrage","text":""},{"location":"deprecated_images/docker-sickrage/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead</p>"},{"location":"deprecated_images/docker-sickrage/#linuxserversickrage","title":"linuxserver/sickrage","text":""},{"location":"deprecated_images/docker-sickrage/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/sickrage</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-sickrage/#usage","title":"Usage","text":"<p>Here are some example snippets to help you get started creating a container from this image.</p>"},{"location":"deprecated_images/docker-sickrage/#docker","title":"docker","text":"<pre><code>docker create \\\n --name=sickrage \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 8081:8081 \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n -v &lt;/path/to/downloads&gt;:/downloads \\\n -v &lt;/path/to/tv/shows&gt;:/tv \\\n --restart unless-stopped \\\n linuxserver/sickrage\n</code></pre>"},{"location":"deprecated_images/docker-sickrage/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2\"\nservices:\n sickrage:\n image: linuxserver/sickrage\n container_name: sickrage\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n - &lt;/path/to/downloads&gt;:/downloads\n - &lt;/path/to/tv/shows&gt;:/tv\n ports:\n - 8081:8081\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-sickrage/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-sickrage/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8081</code> Application WebUI"},{"location":"deprecated_images/docker-sickrage/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-sickrage/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files. <code>/downloads</code> ISOs. <code>/tv</code> TV library directory."},{"location":"deprecated_images/docker-sickrage/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"deprecated_images/docker-sickrage/#application-setup","title":"Application Setup","text":"<p>Web interface is at <code>&lt;your ip&gt;:8081</code> , set paths for downloads, tv-shows to match docker mappings via the webui.</p>"},{"location":"deprecated_images/docker-sickrage/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running: </li> <li><code>docker exec -it sickrage /bin/bash</code></li> <li>To monitor the logs of the container in realtime: </li> <li><code>docker logs -f sickrage</code></li> <li>Container version number </li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickrage</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/sickrage</code></li> </ul>"},{"location":"deprecated_images/docker-sickrage/#versions","title":"Versions","text":"<ul> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>09.08.18: - Change repository to Sick-Rage</li> <li>17.08.18: - Rebase to alpine 3.8.</li> <li>20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>06.08.17: - Internal git pull instead of at runtime.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Fix umask.</li> <li>09.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>30.12.15: - Build later version of unrar from source, removed uneeded mako package.</li> <li>20.11.15: - Updated to new repo, by SickRage Team.</li> <li>15.10.15: - Initial Release.</li> </ul>"},{"location":"deprecated_images/docker-taisun/","title":"taisun","text":""},{"location":"deprecated_images/docker-taisun/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/</p>"},{"location":"deprecated_images/docker-taisun/#linuxservertaisun","title":"linuxserver/taisun","text":"<p>Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to:</p> <ul> <li>Deploy and manage web based virtual desktops.</li> <li>Deploy Taisun specific stacks of applications</li> <li>Browse available images on popular Docker repositories</li> <li>Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop</li> <li>Spinup a developer container based on popular frameworks and work from a web based IDE</li> <li>Single click remote server access to Taisun and your Docker applications</li> </ul>"},{"location":"deprecated_images/docker-taisun/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/taisun</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-taisun/#application-setup","title":"Application Setup","text":"<p>The webui is at http://localhost:3000, for more information on usage see here.</p>"},{"location":"deprecated_images/docker-taisun/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-taisun/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2\"\nservices:\n taisun:\n image: linuxserver/taisun\n container_name: taisun\n network_mode: bridge\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-taisun/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=taisun \\\n -p 3000:3000 \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n --restart unless-stopped \\\n lscr.io/linuxserver/taisun\n</code></pre>"},{"location":"deprecated_images/docker-taisun/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-taisun/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Taisun WebUI."},{"location":"deprecated_images/docker-taisun/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function"},{"location":"deprecated_images/docker-taisun/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/var/run/docker.sock</code> Docker Socket on the system"},{"location":"deprecated_images/docker-taisun/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-taisun/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-taisun/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-taisun/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-taisun/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it taisun /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f taisun</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' taisun</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/taisun</code></li> </ul>"},{"location":"deprecated_images/docker-taisun/#versions","title":"Versions","text":"<ul> <li>02.02.22: - Deprecate.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>20.07.19: - Build compose bins from source, use minimal docker install from repos.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>30.03.19: - Updating docker-compose build dependancies for musl libc.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>13.02.19: - Initial release.</li> </ul>"},{"location":"deprecated_images/docker-tester/","title":"tester","text":""},{"location":"deprecated_images/docker-tester/#deprecation-notice","title":"DEPRECATION NOTICE","text":"<p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"deprecated_images/docker-tester/#linuxservertester","title":"linuxserver/tester","text":"<p>This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint</p>"},{"location":"deprecated_images/docker-tester/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/tester:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"deprecated_images/docker-tester/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-tester/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n tester:\n image: lscr.io/linuxserver/tester:latest\n container_name: tester\n environment:\n - URL=http://google.com\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-tester/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=tester \\\n -e URL=http://google.com \\\n -p 3000:3000 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/tester:latest\n</code></pre>"},{"location":"deprecated_images/docker-tester/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-tester/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> WebUI"},{"location":"deprecated_images/docker-tester/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>URL=http://google.com</code> Specify an endpoint, the container will automatically determine the correct protocol and program to use"},{"location":"deprecated_images/docker-tester/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"deprecated_images/docker-tester/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-tester/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"deprecated_images/docker-tester/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-tester/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-tester/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it tester /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f tester</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tester</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tester:latest</code></li> </ul>"},{"location":"deprecated_images/docker-tester/#versions","title":"Versions","text":"<ul> <li>25.04.23: - Deprecate.</li> <li>16.04.23: - User Chromium image as base.</li> <li>16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay.</li> <li>24.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>18.04.20: - Initial release.</li> </ul>"},{"location":"deprecated_images/docker-unifi-controller/","title":"unifi-controller","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p>We recommend our unifi-network-application image instead: https://github.com/linuxserver/docker-unifi-network-application</p>"},{"location":"deprecated_images/docker-unifi-controller/#linuxserverunifi-controller","title":"linuxserver/unifi-controller","text":"<p>The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.</p> <p></p>"},{"location":"deprecated_images/docker-unifi-controller/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/unifi-controller:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"deprecated_images/docker-unifi-controller/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Unifi Controller releases. mongoless \u2705 Stable Unifi Controller releases without mongodb included."},{"location":"deprecated_images/docker-unifi-controller/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-unifi-controller/#from-2024-01-01-this-image-will-be-deprecated-and-it-will-no-longer-be-updated-please-migrate-to-our-unifi-network-application-image-instead","title":"From 2024-01-01 this image will be deprecated and it will no longer be updated. Please migrate to our Unifi Network Application image instead","text":"<p>See: https://info.linuxserver.io/issues/2023-09-06-unifi-controller for more information.</p> <p>The webui is at https://ip:8443, setup with the first run wizard.</p> <p>For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings &gt; System &gt; Advanced and set the Inform Host to a hostname or IP address accessible by your devices. Additionally the checkbox \"Override\" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).</p> <p>Please note, Unifi change the location of this option every few releases so if it's not where it says, search for \"Inform\" or \"Inform Host\" in the settings.</p> <p>In order to manually adopt a device take these steps:</p> <pre><code>ssh ubnt@$AP-IP\nset-inform http://$address:8080/inform\n</code></pre> <p>The default device password is <code>ubnt</code>. <code>$address</code> is the IP address of the host you are running this container on and <code>$AP-IP</code> is the Access Point IP address.</p> <p>When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting \"DHCP Gateway IP\", under Settings &gt; Networks &gt; network_name, to a correct (and accessable) ip address.</p>"},{"location":"deprecated_images/docker-unifi-controller/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"deprecated_images/docker-unifi-controller/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"deprecated_images/docker-unifi-controller/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n unifi-controller:\n image: lscr.io/linuxserver/unifi-controller:latest\n container_name: unifi-controller\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MEM_LIMIT=1024 #optional\n - MEM_STARTUP=1024 #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8443:8443\n - 3478:3478/udp\n - 10001:10001/udp\n - 8080:8080\n - 1900:1900/udp #optional\n - 8843:8843 #optional\n - 8880:8880 #optional\n - 6789:6789 #optional\n - 5514:5514/udp #optional\n restart: unless-stopped\n</code></pre>"},{"location":"deprecated_images/docker-unifi-controller/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=unifi-controller \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MEM_LIMIT=1024 `#optional` \\\n -e MEM_STARTUP=1024 `#optional` \\\n -p 8443:8443 \\\n -p 3478:3478/udp \\\n -p 10001:10001/udp \\\n -p 8080:8080 \\\n -p 1900:1900/udp `#optional` \\\n -p 8843:8843 `#optional` \\\n -p 8880:8880 `#optional` \\\n -p 6789:6789 `#optional` \\\n -p 5514:5514/udp `#optional` \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/unifi-controller:latest\n</code></pre>"},{"location":"deprecated_images/docker-unifi-controller/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"deprecated_images/docker-unifi-controller/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8443</code> Unifi web admin port <code>3478/udp</code> Unifi STUN port <code>10001/udp</code> Required for AP discovery <code>8080</code> Required for device communication <code>1900/udp</code> Required for <code>Make controller discoverable on L2 network</code> option <code>8843</code> Unifi guest portal HTTPS redirect port <code>8880</code> Unifi guest portal HTTP redirect port <code>6789</code> For mobile throughput test <code>5514/udp</code> Remote syslog port"},{"location":"deprecated_images/docker-unifi-controller/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MEM_LIMIT=1024</code> Optionally change the Java memory limit (in Megabytes). Set to <code>default</code> to reset to default <code>MEM_STARTUP=1024</code> Optionally change the Java initial/minimum memory (in Megabytes). Set to <code>default</code> to reset to default"},{"location":"deprecated_images/docker-unifi-controller/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> All Unifi data stored here"},{"location":"deprecated_images/docker-unifi-controller/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-unifi-controller/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"deprecated_images/docker-unifi-controller/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"deprecated_images/docker-unifi-controller/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"deprecated_images/docker-unifi-controller/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"deprecated_images/docker-unifi-controller/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it unifi-controller /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f unifi-controller\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-controller\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-controller:latest\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-unifi-controller/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"deprecated_images/docker-unifi-controller/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull unifi-controller\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d unifi-controller\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-unifi-controller/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/unifi-controller:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop unifi-controller\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm unifi-controller\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"deprecated_images/docker-unifi-controller/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"<ul> <li> <p>Pull the latest image at its tag and replace it with the same env variables in one run:</p> <pre><code>docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once unifi-controller\n</code></pre> </li> <li> <p>You can also remove the old dangling images: <code>docker image prune</code></p> </li> </ul> <p>Warning</p> <p>We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p>"},{"location":"deprecated_images/docker-unifi-controller/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"deprecated_images/docker-unifi-controller/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-unifi-controller.git\ncd docker-unifi-controller\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/unifi-controller:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"deprecated_images/docker-unifi-controller/#versions","title":"Versions","text":"<ul> <li>01.01.24: - Deprecate.</li> <li>05.09.23: - Add deprecation warning as per https://info.linuxserver.io/issues/2023-09-06-unifi-controller.</li> <li>04.09.23: - Bump JRE to 17 to support v7.5.</li> <li>02.05.23: - Cleanup <code>apt-get install</code> during build to reduce image size.</li> <li>18.03.23: - Add mongoless branch.</li> <li>10.03.23: - Test writing to /run/unifi and symlink to /config/run if it fails.</li> <li>20.02.23: - Migrate to s6v3, install deb package on build, fix permissions.</li> <li>23.01.23: - Exclude <code>run</code> from <code>/config</code> volume.</li> <li>30.11.22: - Bump JRE to 11.</li> <li>01.06.22: - Deprecate armhf.</li> <li>23.12.21: - Move min/max memory config from run to system.properties.</li> <li>22.12.21: - Move deb package install to first init to avoid overlayfs performance issues.</li> <li>13.12.21: - Rebase 64 bit containers to Focal.</li> <li>11.12.21: - Add java opts to mitigate CVE-2021-44228.</li> <li>11.06.21: - Allow for changing Java initial mem via new optional environment variable.</li> <li>12.01.21: - Deprecate the <code>LTS</code> tag as Unifi no longer releases LTS stable builds. Existing users can switch to the <code>latest</code> tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully.</li> <li>17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6.</li> <li>16.06.20: - Add logrotate.</li> <li>02.06.20: - Updated port list &amp; descriptions. Moved some ports to optional.</li> <li>14.11.19: - Changed url for deb package to match new Ubiquity domain.</li> <li>29.07.19: - Allow for changing Java mem limit via new optional environment variable.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic</li> </ul>"},{"location":"general/container-customization/","title":"Customizing LinuxServer Containers","text":"<p>One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves.</p> <p>Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance.</p> <p>Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools:</p> <ul> <li>Private Custom Scripts: Run once when the container is started before services (including the main service/app) are started</li> <li>Private Custom Services: Run at the same time as other services. Service get restarted on exit</li> <li>Public Facing Docker Mods: Provide extensions to the containers filesystem. Scripts/services can be implemented as s6 services</li> </ul> <p>All of the functionality described in this post is live on every one of the containers we currently maintain:</p> <p>https://fleet.linuxserver.io</p> <p>Note</p> <p>While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support.</p>"},{"location":"general/container-customization/#custom-scripts","title":"Custom Scripts","text":"<p>The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at <code>/custom-cont-init.d</code> and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins.</p> <p>Because this location is outside of <code>/config</code> you will need to mount it like any other volume if you wish to make use of it. e.g. <code>-v /home/foo/appdata/my-custom-files:/custom-cont-init.d</code> if using the Docker CLI or</p> <pre><code>services:\n bar:\n volumes:\n - /home/foo/appdata/bar:/config\n - /home/foo/appdata/my-custom-files:/custom-cont-init.d:ro\n</code></pre> <p>if using compose. Where possible, to improve security, we recommend mounting them read-only (<code>:ro</code>) so that container processes cannot write to the location.</p> <p>One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go.</p> <pre><code>#!/bin/bash\n\necho \"**** installing ffmpeg ****\"\napk add --no-cache ffmpeg\n</code></pre> <p>Note</p> <p>The folder <code>/custom-cont-init.d</code> needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.</p>"},{"location":"general/container-customization/#custom-services","title":"Custom Services","text":"<p>There might also be a need to run an additional service in a container alongside what we already package. Similarly to the custom scripts, just create a new directory at <code>/custom-services.d</code>. The files in this directory should be named after the service they will be running. Similar to with custom scripts you will need to mount this folder like any other volume if you wish to make use of it. e.g. <code>-v /home/foo/appdata/my-custom-services:/custom-services.d</code> if using the Docker CLI or</p> <pre><code>services:\n bar:\n volumes:\n - /home/foo/appdata/bar:/config\n - /home/foo/appdata/my-custom-services:/custom-services.d:ro\n</code></pre> <p>if using compose. Where possible, to improve security, we recommend mounting them read-only (<code>:ro</code>) so that container processes cannot write to the location.</p> <p>Running cron in our containers is now as simple as a single file. Drop this script in <code>/custom-services.d/cron</code> and it will run automatically in the container:</p> <pre><code>#!/usr/bin/with-contenv bash\n\n/usr/sbin/crond -f -S -l 0 -c /etc/crontabs\n</code></pre> <p>Note</p> <p>With this example, you will most likely need to have cron installed via a custom script using the technique in the previous section, and will need to populate the crontab.</p> <p>Note</p> <p>The folder <code>/custom-services.d</code> needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.</p>"},{"location":"general/container-customization/#docker-mods","title":"Docker Mods","text":"<p>In most cases if you needed to write some kind of custom logic to get a plugin to work or to use some kind of popular external service you will not be the only one that finds this logic useful.</p> <p>If you would like to publish and support your hard work we provide a system for a user to pass a single environment variable to the container to ingest your custom modifications.</p> <p>We consume Mods from Dockerhub and in order to publish one following our guide, you only need a Github Account and a Dockerhub account. (Our guide and example code can be found here)</p> <p>Essentially it is a system that stashes a tarball of scripts and any other files you need in an image layer on Dockerhub. When we spin up the container we will download this tarball and extract it to /.</p> <p>This allows community members to publish a relatively static pile of logic that will always be applied to an end user's up to date Linuxserver.io container.</p> <p>An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container:</p> <pre><code>docker create \\\n --name=transmission \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e DOCKER_MODS=taisun/config-mods:pia \\\n -e PIAUSER=pmyuser \\\n -e PIAPASS=mypassword \\\n -e PIAENDPOINT=\"US New York City\" \\\n -e TZ=US/Eastern \\\n -p 9091:9091 \\\n -p 51413:51413 \\\n -p 51413:51413/udp \\\n -v path to data:/config \\\n -v path to downloads:/downloads \\\n -v path to watch folder:/watch \\\n --restart unless-stopped \\\n linuxserver/transmission\n</code></pre> <p>The source code for this mod can be found here.</p> <p>Note</p> <p>When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control.</p>"},{"location":"general/container-customization/#we-are-here-to-help","title":"We are here to help","text":"<p>If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out.</p> <p>Our Discord server is best for quick direct contact and our Forum for a longer running project.</p> <p>There is zero barrier to entry for these levels of container customization and you are in complete control.</p> <p>We are looking forward to your next creation.</p>"},{"location":"general/container-execution/","title":"Container Execution","text":"<p>You may find at some point you need to view the internal data of a container.</p>"},{"location":"general/container-execution/#shell-access","title":"Shell Access","text":"<p>Particularly useful when debugging the application - to shell in to one of our containers, run the following:</p> <pre><code>docker exec -it &lt;container_name&gt; /bin/bash\n</code></pre>"},{"location":"general/container-execution/#tailing-the-logs","title":"Tailing the logs","text":"<p>The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the <code>docker logs</code> command:</p> <pre><code>docker logs -f --tail=&lt;number_of_lines_to_start_with&gt; &lt;container_name&gt;\n</code></pre> <p>The <code>--tail</code> argument is optional, but useful if the application has been running for a long time - the <code>logs</code> command by default will output all logs.</p> <p>To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:</p> <pre><code># ~/.bash_aliases\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n</code></pre> <p>Execute it with <code>dtail &lt;container_name&gt;</code>.</p>"},{"location":"general/container-execution/#checking-the-build-version","title":"Checking the build version","text":"<p>If you are experiencing issues with one of our containers, it helps us to know which version of the image your container is running from. The primary reason we ask for this is because you may be reporting an issue we are aware of and have subsequently fixed. However, if you are running on the latest version of our image, it could indeed be a newly found bug, which we'd want to know more about.</p> <p>To obtain the build version for the container:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' &lt;container_name&gt;\n</code></pre> <p>Or the image:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/&lt;image_name&gt;\n</code></pre>"},{"location":"general/containers-101/","title":"Docker Containers: 101","text":"<p>A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever \u2013 the person who built the container for you took care of that. Containers don\u2019t usually ship with configuration files baked in though. This is because the contents of a container are \u2018stateless\u2019 or \u2018immutable\u2019. In English, this means the state or filesystem of the container itself cannot be modified after it is created.</p>"},{"location":"general/containers-101/#what-do-i-need-to-know","title":"What do I need to know?","text":"<p>To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.</p> <pre><code>docker run hello-world\n</code></pre> <p>That's it, your first docker container. It pre-supposes you have docker installed but that's all it takes to run a container. You didn't need to know anything about installed what that app needed to run - this is the key benefit. <code>hello-world</code> is a simple example but imagine you have a complex application with a large number of dependencies and it is tied to a specific version of Python or Java. Then imagine you have a second app again tied to a specific, but different, version of Java or Python. Now you have to try and ensure these two (often conflicting) versions sit on the same host and play nice. In the world of containers these two versions can operate in complete isolation from one another. Bliss.</p>"},{"location":"general/containers-101/#key-terminology","title":"Key Terminology","text":"<p>There are a few terms you might find useful to understand when working with containers:</p> <ul> <li>docker - the first, and most popular, container runtime - it sits as an abstraction layer between the kernels features such as cgroups or namespaces and running applications</li> <li>container - a sandboxed process isolated in memory and running instance of an image</li> <li>image - a pre-built filesystem in a format ready to be understood by a container runtime (usually docker)</li> <li>volume - use volumes to persist data outside of the containers sandboxed filesystem</li> <li>environment - a way of configuring the sandboxed environment your container runs in</li> </ul>"},{"location":"general/containers-101/#key-concepts","title":"Key Concepts","text":"<p>Containers are completely sandboxed environments by the Linux kernel. It may help you to think of them somewhat like a small VM however in practice this is largely false. The Linux kernel controls access to various system resources utilising control groups (cgroups). We rely on docker to translate these complex concepts into simple ones that users can understand and consume.</p> <p>By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the <code>-p</code> flag.</p> <pre><code>docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt\n</code></pre> <p>Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next.</p> <p>Containers are an amazing way to run applications in a secure, sandboxed way.</p>"},{"location":"general/docker-compose/","title":"Docker Compose","text":""},{"location":"general/docker-compose/#intro","title":"Intro","text":"<p>Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application\u2019s services. Then, with a single command, you create and start all the services from your configuration.</p> <p>Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only.</p>"},{"location":"general/docker-compose/#installation","title":"Installation","text":""},{"location":"general/docker-compose/#official-repos","title":"Official Repos","text":"<p>Starting with version 2, Docker started publishing <code>docker compose</code> as a go based plugin for docker (rather than a python based standalone binary). They publish this plugin for multiple arches as opposed to the x86_64 only binaries for v1.x.</p> <p>Install docker from the official repos as described here, making sure that you install the <code>docker-compose-plugin</code> package as part of the process.</p>"},{"location":"general/docker-compose/#manual-package","title":"Manual Package","text":"<p>You can install <code>docker compose</code> manually via the following commands:</p> <pre><code>mkdir -p \"$HOME/.docker/cli-plugins\" &amp;&amp; \\\ncurl -sL \"https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)\" -o \"$HOME/.docker/cli-plugins/docker-compose\" &amp;&amp; \\\nchmod +x $HOME/.docker/cli-plugins/docker-compose\n</code></pre> <p>If you prefer to install it system-wide you can use <code>/usr/local/lib/docker/cli-plugins</code> instead of <code>$HOME/.docker/cli-plugins</code></p> <p>Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running <code>docker compose version</code> should display the compose version.</p>"},{"location":"general/docker-compose/#v1x-compatibility","title":"v1.x compatibility","text":"<p>As v2 runs as a plugin instead of a standalone binary, it is invoked by <code>docker compose args</code> instead of <code>docker-compose args</code>. To make migration easier, Docker released a replacement binary for <code>docker-compose</code> on x86_64 and aarch64 platforms. More info on that can be found at the upstream repo.</p>"},{"location":"general/docker-compose/#single-service-usage","title":"Single service Usage","text":"<p>Here's a basic example for deploying a Linuxserver container with docker compose:</p> <pre><code>version: \"2.1\"\nservices:\n heimdall:\n image: linuxserver/heimdall\n container_name: heimdall\n volumes:\n - /home/user/appdata/heimdall:/config\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre> <p>If you save the above snippet in a file named <code>compose.yml</code>, you can simply run <code>docker compose up -d</code> from within the same folder and the heimdall image will be automatically pulled, and a container will be created and started. <code>up</code> means bring the services up, and <code>-d</code> means do it in the background.</p> <p>If you want to do it from a different folder or if you named the yaml file differently, ie. <code>heimdall.yml</code>, then you can define it in the command with <code>-f</code>: <code>docker compose -f /path/to/heimdall.yml up -d</code></p> <p>To bring down the services, simply do <code>docker compose down</code> or <code>docker compose -f /path/to/heimdall.yml down</code> and all containers defined by the yml will be stopped and destroyed.</p>"},{"location":"general/docker-compose/#multiple-service-usage","title":"Multiple Service Usage","text":"<p>You can have multiple services managed by a single compose yaml. Copy the contents below the <code>services:</code> line in any of our readme yaml samples into the same yaml file and the <code>docker compose up/down</code> commands will apply to all services at once.</p> <p>Let's say you have the following in a yaml file named <code>compose.yml</code>:</p> <pre><code>version: \"2.1\"\nservices:\n heimdall:\n image: linuxserver/heimdall\n container_name: heimdall\n volumes:\n - /home/user/appdata/heimdall:/config\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n\n nginx:\n image: linuxserver/nginx\n container_name: nginx\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /home/user/appdata/nginx:/config\n ports:\n - 81:80\n - 444:443\n restart: unless-stopped\n\n mariadb:\n image: linuxserver/mariadb\n container_name: mariadb\n environment:\n - PUID=1000\n - PGID=1000\n - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD\n - TZ=Europe/London\n volumes:\n - /home/user/appdata/mariadb:/config\n ports:\n - 3306:3306\n restart: unless-stopped\n</code></pre> <p>You now have 3 services defined in there: <code>heimdall</code>, <code>nginx</code> and <code>mariadb</code>. When you do a <code>docker compose up -d</code>, it will first download the images for all three if they don't exist (if they exist, they are not updated) and it will create all three containers and start them. <code>docker compose down</code> will bring all three services down and destroy the containers (persistent data will remain).</p>"},{"location":"general/docker-compose/#updates","title":"Updates","text":"<p>If you want to update the images and recreate the containers with the same vars, it's extremely easy with docker compose. First we tell it to update all images via <code>docker compose pull</code>. Then we issue <code>docker compose up -d</code> and it will automatically recreate the containers (as necessary) based on the updated images. If a container's image is already the latest and there was no update, it remains untouched.</p> <p>Similarly, if you edit the contents of the yaml file and re-issue <code>docker compose up -d</code>, only the containers affected by the changes to the yaml file will be recreated, others will be untouched.</p> <p>Defining the containers running on your server as code is a core tenet of a \"Devops\" approach to the world. Constructing elaborate <code>docker run</code> commands and then forgetting which variables you passed is a thing of the past when using <code>docker compose</code>.</p>"},{"location":"general/docker-compose/#support-requests","title":"Support Requests","text":"<p>If you would like to request support, you can do so on our discord server or our forum. When you do so, please provide all the necessary information like the server and platform info, docker container log and the compose yaml.</p> <p>If your compose yaml makes use of .env files, please post an output of <code>docker compose config</code> or <code>docker compose config -f /path/to/compose.yml</code> for the entire yaml, or <code>docker compose config &lt;service name&gt;</code> for a single service, as it will automatically replace the environment variables with their actual values.</p> <p>There are multiple ways to see the logs of your containers. In some instances, using <code>docker logs</code> is preferable to <code>docker compose logs</code>. By default <code>docker logs</code> will not run unless you define which service the logs are coming from. The <code>docker compose logs</code> will pull all of the logs for the services defined in the <code>compose.yml</code> file.</p> <p>When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your <code>compose.yml</code> file, it is not helpful to submit all of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using <code>docker logs heimdall</code> or <code>docker compose logs heimdall</code>. The bash_alias for <code>dclogs</code> can be used if you define your service after you've typed the alias. Likewise, the bash_alias <code>detail</code> will not run without defining the service after it.</p>"},{"location":"general/docker-compose/#common-gotchas","title":"Common Gotchas","text":""},{"location":"general/docker-compose/#quoting-variables","title":"Quoting variables","text":"<p>In compose yamls, the environment variables can be defined in a couple of different styles. For the style we use in our readme samples, wrapping the variables in quotes is not required unless the variables contain spaces. When it's necessary, you can wrap them in quotes as described below.</p> <ul> <li>Style 1 (our readme recommended style):</li> </ul> <pre><code>environment:\n - 'key=value'\n</code></pre> <p>This method requires the entire line wrapped in quotes, including the key and the value.</p> <ul> <li>Style 2:</li> </ul> <pre><code>environment:\n key: 'value'\n</code></pre> <p>With this method, you can wrap just the value in quotes.</p>"},{"location":"general/docker-compose/#escaping-signs","title":"Escaping $ signs","text":"<p>Docker compose interprets values that follow a <code>$</code> as a variable and it will interpolate at runtime. If your environment variables contain the <code>$</code> character as part of the value and it needs to be treated literally, you need to escape it with another <code>$</code> sign.</p> <p>For example, if you want the variable <code>key</code> to have the value <code>real$value</code> exactly, you need to set <code>- 'key=real$$value'</code> in the compose yaml.</p>"},{"location":"general/docker-compose/#tips-tricks","title":"Tips &amp; Tricks","text":"<p><code>docker compose</code> expects a <code>compose.yml</code> file in the current directory and if one isn't present it will complain. In order to improve your quality of life we suggest the use of bash aliases. The file path for the aliases below assumes that the <code>compose.yml</code> file is being kept in the folder <code>/opt</code>. If your compose file is kept somewhere else, like in a home directory, then the path will need to be changed.</p> <p>Create or open the file <code>~/.bash_aliases</code> and populate with the following content:</p> <pre><code>alias dcup='docker compose -f /opt/compose.yml up -d' #brings up all containers if one is not defined after dcup\nalias dcdown='docker compose -f /opt/compose.yml stop' #brings down all containers if one is not defined after dcdown\nalias dcpull='docker compose -f /opt/compose.yml pull' #pulls all new images is specified after dcpull\nalias dclogs='docker compose -f /opt/compose.yml logs -tf --tail=\"50\" '\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n</code></pre> <p>If the <code>compose.yml</code> file is in a home directory, the following can be put in the <code>~/.bash_aliases</code> file.</p> <pre><code>alias dcup='docker compose -f ~/compose.yml up -d' #brings up all containers if one is not defined after dcup\nalias dcdown='docker compose -f ~/compose.yml stop' #brings down all containers if one is not defined after dcdown\nalias dcpull='docker compose -f ~/compose.yml pull' #pulls all new images unless one is specified\nalias dclogs='docker compose -f ~/compose.yml logs -tf --tail=\"50\" '\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n</code></pre> <p>Some distributions, like Ubuntu, already have the code snippet below in the <code>~/.bashrc</code> file. If it is not included, you'll need to add the following to your <code>~/.bashrc</code> file in order for the aliases file to be picked up:</p> <pre><code>if [ -f ~/.bash_aliases ]; then\n . ~/.bash_aliases\nfi\n</code></pre> <p>Once configured, you can run <code>source ~/.bashrc</code> or log out and the log in again. Now you can type <code>dcpull</code> or <code>dcup</code> to manage your entire fleet of containers at once. It's like magic.</p>"},{"location":"general/fleet/","title":"Fleet","text":""},{"location":"general/fleet/#how-fleet-works","title":"How Fleet works","text":"<p>Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data.</p> <p>It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable. This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner.</p>"},{"location":"general/fleet/#why-a-snapshot","title":"Why a snapshot?","text":"<p>In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call.</p> <p>As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API:</p> API Time (ms) Docker Hub (multiple calls) 52000ms Fleet 50ms"},{"location":"general/fleet/#capabilities","title":"Capabilities","text":"<p>Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.</p>"},{"location":"general/fleet/#hidden","title":"Hidden","text":"<p>If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included.</p>"},{"location":"general/fleet/#unstable","title":"Unstable","text":"<p>Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly.</p>"},{"location":"general/fleet/#deprecated","title":"Deprecated","text":"<p>If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context.</p>"},{"location":"general/fleet/#api","title":"API","text":"<p>Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository</p> <p>{% api-method method=\"get\" host=\"https://fleet.linuxserver.io\" path=\"/api/v1/images\" %} {% api-method-summary %} Get All Repositories and Images</p> <p>{% api-method-description %} Returns all synchronized images.</p> <p>{% api-method-spec %}</p> <p>{% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned.</p> <pre><code>{\n \"status\": \"OK\",\n \"data\" {\n \"totalPullCount\": 1862494227,\n \"repositories\": {\n \"lsiobase\": [\n {\n \"name\": \"alpine\",\n \"pullCount\": 4275970,\n \"version\": \"3.6\",\n \"stable\": true\n },\n {\n \"name\": \"alpine.arm64\",\n \"pullCount\": 66234,\n \"version\": \"edge\",\n \"stable\": true\n },\n ...\n ],\n \"linuxserver\": [\n {\n \"name\": \"airsonic\",\n \"pullCount\": 4608329,\n \"version\": \"v10.2.1\",\n \"stable\": true\n },\n {\n \"name\": \"apache\",\n \"pullCount\": 3011699,\n \"version\": \"latest\",\n \"stable\": true\n },\n ...\n ]\n ...\n }\n }\n}\n</code></pre> <p>{% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %}</p> <p>Info</p> <p>Any repositories not synchronized with Docker Hub (e.g. staging or metadata repositories) will not be returned as part of the API. This also applies to images which the repository owner does not wish to be part of the primary image list.</p>"},{"location":"general/fleet/#running-fleet","title":"Running Fleet","text":"<p>Warning</p> <p>Fleet is a Java application and requires at least JRE 11.</p> <p>Grab the latest Fleet release from GitHub.</p>"},{"location":"general/fleet/#sql","title":"SQL","text":"<p>Fleet stores its data in a MariaDB database which you need to provide. In order for the application to manage its tables and procedures, the user you provide it needs to have the relevant <code>GRANT</code> permissions to the fleet database. The following script should be sufficient to get the initial database set up.</p> <pre><code>CREATE SCHEMA `fleet`;\nCREATE USER 'fleet_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `fleet`.* TO 'fleet_user';\n</code></pre> <p>The username and password that you define must then be provided as part of Fleet's configuration.</p>"},{"location":"general/fleet/#configuration-file","title":"Configuration File","text":"<p>All primary configuration for Fleet at runtime is loaded in via a <code>fleet.properties</code> file. This can be located anywhere on the file system, and is loaded in via a Runtime argument:</p> <pre><code># Runtime\nfleet.app.port=8080\n\n# Database Connectivity\nfleet.database.driver=org.mariadb.jdbc.Driver\nfleet.database.url=jdbc:mariadb://&lt;IP_OR_URL&gt;:3306/fleet\nfleet.database.username=&lt;fleet_sql_user&gt;\nfleet.database.password=&lt;fleet_sql_password&gt;\n\n# Password security\nfleet.admin.secret=&lt;a_random_string&gt;\n</code></pre> <p>All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties.</p> <p>Info</p> <p>If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. <code>fleet.app.port=8080</code> becomes <code>export fleet_app_port=8080</code></p> Property Name Purpose <code>fleet.app.port</code> The port which the application will be running under. <code>fleet.admin.secret</code> A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret. <code>fleet.database.driver</code> The driver to use for connections to Fleet's database. This should be <code>org.mariadb.jdbc.Driver</code> <code>fleet.database.url</code> The full JDBC connection string to the database. <code>fleet.database.username</code> The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations. <code>fleet.database.password</code> The password for the SQL user"},{"location":"general/fleet/#runtime-arguments","title":"Runtime Arguments","text":"<p>As well as the base configuration file, Fleet also supports some runtime arguments by means of the <code>-D</code> flag. These can be used to direct Fleet to behave in a specific way at runtime.</p> <p>Info</p> <p>Unlike the properties defined above, these properties are only accessed via the JVM arguments (<code>-D</code>).</p> Runtime Argument Purpose <code>fleet.config.base</code> The absolute path of the configuration file. <code>fleet.show.passwords</code> Tells fleet to show passwords in plain text in its logs. Not recommended. <code>fleet.nuke.database</code> Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet. <code>fleet.skip.sync.on.startup</code> By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval."},{"location":"general/fleet/#default-user","title":"Default User","text":"<p>When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are:</p> <p>Username: admin</p> <p>Password: admin</p> <p>Warning</p> <p>You should change the default password for this user as soon as possible! This can be done via the <code>Admin</code> -&gt; <code>Users</code> menu options.</p>"},{"location":"general/running-our-containers/","title":"Running LinuxServer Containers","text":""},{"location":"general/running-our-containers/#image-structure","title":"Image Structure","text":""},{"location":"general/running-our-containers/#base-images","title":"Base Images","text":"<p>We have curated various base images which our main application images derive from. This is beneficial for two main reasons:</p> <ul> <li>A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies.</li> <li>Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors.</li> </ul>"},{"location":"general/running-our-containers/#the-config-volume","title":"The <code>/config</code> volume","text":"<p>To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal <code>/config</code> directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume.</p> <p>We do this because we believe that it makes it easier to answer the common question of \"where does the application data get persisted?\" - the answer being \"always in <code>/config</code>\". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself!</p>"},{"location":"general/running-our-containers/#creating-a-container","title":"Creating a Container","text":"<p>To create a container from one of our images, you must use either <code>docker create</code> or <code>docker run</code>. Each image follows the same pattern in the command when creating a container:</p> <pre><code>docker create \\\n --name=&lt;container_name&gt; \\\n -v &lt;path_to_data&gt;:/config \\\n -e PUID=&lt;uid&gt; \\\n -e PGID=&lt;gid&gt; \\\n -p &lt;host_port&gt;:&lt;app_port&gt; \\\n linuxserver/&lt;image_name&gt;\n</code></pre>"},{"location":"general/swag/","title":"SWAG","text":"<p>The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn</p>"},{"location":"general/swag/#introduction","title":"Introduction","text":""},{"location":"general/swag/#what-are-ssl-certs","title":"What are SSL certs?","text":"<p>SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party.</p>"},{"location":"general/swag/#what-is-lets-encrypt-andor-zerossl","title":"What is Let's Encrypt (and/or ZeroSSL)?","text":"<p>In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL, one can get free certs via automated means.</p> <p>The SWAG docker image, published and maintained by LinuxServer.io, makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image.</p>"},{"location":"general/swag/#creating-a-swag-container","title":"Creating a SWAG container","text":"<p>Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios.</p>"},{"location":"general/swag/#docker-cli","title":"docker cli","text":"<pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=yourdomain.url \\\n -e SUBDOMAINS=www, \\\n -e VALIDATION=http \\\n -e CERTPROVIDER= `#optional` \\\n -e DNSPLUGIN=cloudflare `#optional` \\\n -e DUCKDNSTOKEN=&lt;token&gt; `#optional` \\\n -e EMAIL=&lt;e-mail&gt; `#optional` \\\n -e ONLY_SUBDOMAINS=false `#optional` \\\n -e EXTRA_DOMAINS=&lt;extradomains&gt; `#optional` \\\n -e STAGING=false `#optional` \\\n -p 443:443 \\\n -p 80:80 `#optional` \\\n -v &lt;/path/to/appdata/config&gt;:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre>"},{"location":"general/swag/#docker-compose","title":"docker-compose","text":"<p>Compatible with docker-compose v2 schemas.</p> <pre><code>---\nversion: \"2.1\"\nservices:\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=yourdomain.url\n - SUBDOMAINS=www,\n - VALIDATION=http\n - CERTPROVIDER= #optional\n - DNSPLUGIN=cloudflare #optional\n - DUCKDNSTOKEN=&lt;token&gt; #optional\n - EMAIL=&lt;e-mail&gt; #optional\n - ONLY_SUBDOMAINS=false #optional\n - EXTRA_DOMAINS=&lt;extradomains&gt; #optional\n - STAGING=false #optional\n volumes:\n - &lt;/path/to/appdata/config&gt;:/config\n ports:\n - 443:443\n - 80:80 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"general/swag/#authorization-method","title":"Authorization method","text":"<p>Our image currently supports three different methods to validate domain ownership:</p> <ul> <li>http:<ul> <li>Let's Encrypt (acme) server connects to domain on port 80</li> <li>Can be owned domain or a dynamic dns address</li> </ul> </li> <li>dns:<ul> <li>Let's Encrypt (acme) server connects to dns provider</li> <li>Api credentials and settings entered into <code>ini</code> files under <code>/config/dns-conf/</code></li> <li>Supports wildcard certs</li> <li>Need to have own domain name (non-free)</li> </ul> </li> <li>duckdns:<ul> <li>Let's Encrypt (acme) server connects to DuckDNS</li> <li>Supports wildcard certs (only for the sub-subdomains)</li> <li>No need for own domain (free)</li> </ul> </li> </ul> <p>The validation is performed when the container is started for the first time. Nginx won't be up until ssl certs are successfully generated.</p> <p>The certs are valid for 90 days. The container will check the cert expiration status every night and if they are to expire within 30 days, it will attempt to auto-renew. If your certs are about to expire in less than 30 days, check the logs under <code>/config/log/letsencrypt</code> to see why the auto-renewals failed.</p>"},{"location":"general/swag/#cert-provider-lets-encrypt-vs-zerossl","title":"Cert Provider (Let's Encrypt vs ZeroSSL)","text":"<p>As of January 2021, SWAG supports getting certs validated by either Let's Encrypt or ZeroSSL. Both services use the ACME protocol as the underlying method to validate ownership. Our Certbot client in the SWAG image is ACME compliant and therefore supports both services.</p> <p>Although very similar, ZeroSSL does (at the time of writing) have a couple of advantages over Let's Encrypt:</p> <ul> <li>ZeroSSL provides unlimited certs via ACME and has no rate limits or throttling (it's quite common for new users to get throttled by Let's Encrypt due to multiple unsuccessful attempts to validate)</li> <li>ZeroSSL provides a web interface that allows users to list and manage the certs they have received</li> </ul> <p>SWAG currently defaults to Let's Encrypt as the cert provider so as not to break existing installs, however users can override that behavior by setting the environment variable <code>CERTPROVIDER=zerossl</code> to retrieve a cert from ZeroSSL instead. The only gotcha is that ZeroSSL requires the <code>EMAIL</code> env var to be set so the certs can be tied to a ZeroSSL account for management over their web interface.</p>"},{"location":"general/swag/#port-forwards","title":"Port forwards","text":"<p>Port 443 mapping is required for access through <code>https://domain.com</code>. However, you don't necessarily need to have it listen on port 443 on the host server. All that is needed is to have port 443 on the router (wan) somehow forward to port 443 inside the container, while it can go through a different port on the host.</p> <p>For instance, it is ok to have port 443 on router (wan) forward to port 444 on the host, and then map port 444 to port 443 in docker run/create or compose yml.</p> <p>Port 80 forwarding is required for <code>http</code> validation only. Same rule as above applies, and it's OK to go from 80 on the router to 81 on the host, mapped to 80 in the container.</p>"},{"location":"general/swag/#docker-networking","title":"Docker networking","text":"<p>SWAG container happily runs with bridge networking. However, the default bridge network in docker does not allow containers to connect each other via container names used as dns hostnames. Therefore, it is recommended to first create a user defined bridge network and attach the containers to that network.</p> <p>If you are using docker-compose, and your services are on the same yaml, you do not need to do this, because docker-compose automatically creates a user defined bridge network and attaches each container to it as long as no other networking option is defined in their config.</p> <p>For the below examples, we will use a network named <code>lsio</code>. We can create it via <code>docker network create lsio</code>. After that, any container that is created with <code>--net=lsio</code> can ping each other by container name as dns hostname.</p> <p>Info</p> <p>Keep in mind that dns hostnames are meant to be case-insensitive, however container names are case-sensitive. For container names to be used as dns hostnames in nginx, they should be all lowercase as nginx will convert them to all lowercase before trying to resolve.</p>"},{"location":"general/swag/#container-setup-examples","title":"Container setup examples","text":""},{"location":"general/swag/#create-container-via-http-validation","title":"Create container via http validation","text":"<p>Let's assume our domain name is <code>linuxserver-test.com</code> and we would like our cert to also cover <code>www.linuxserver-test.com</code> and <code>ombi.linuxserver-test.com</code>. On the router, forward ports <code>80</code> and <code>443</code> to your host server. On your dns provider (if using your own domain), create an <code>A</code> record for the main domain and point it to your server IP (wan). Also create CNAMES for <code>www</code> and <code>ombi</code> and point them to the <code>A</code> record for the domain.</p> <p>With docker cli, we'll first create a user defined bridge network if we haven't already <code>docker network create lsio</code>, and then create the container:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=www,ombi \\\n -e VALIDATION=http \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Once created, we do <code>docker start swag</code> to start it.</p> <p>With docker compose, we can use the following yml:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=www,ombi\n - VALIDATION=http\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>We can fire up the container with <code>docker-compose up -d</code></p> <p>After the container is started, we'll watch the logs with <code>docker logs swag -f</code>. After some initial initialization, we will see the validation steps. After all the steps, it should print <code>Server ready</code> in the logs.</p> <p>Now we can browse to <code>https://www.linuxserver-test.com</code> and we'll see the default landing page displayed.</p>"},{"location":"general/swag/#create-container-via-dns-validation-with-a-wildcard-cert","title":"Create container via dns validation with a wildcard cert","text":"<p>Let's assume our domain name is <code>linuxserver-test.com</code> and we would like our cert to also cover <code>www.linuxserver-test.com</code>, <code>ombi.linuxserver-test.com</code> and any other subdomain possible. On the router, we'll forward port <code>443</code> to our host server (Port 80 forwarding is optional).</p> <p>We'll need to make sure that we are using a dns provider that is supported by this image. Currently the following dns plugins are supported: <code>cloudflare</code>, <code>cloudxns</code>, <code>digitalocean</code>, <code>dnsimple</code>, <code>dnsmadeeasy</code>, <code>google</code>, <code>luadns</code>, <code>nsone</code>, <code>ovh</code>, <code>rfc2136</code>, <code>route53</code>, and many others (see the docker-swag repo for an up to date list). Your dns provider by default is the provider of your domain name and if they are not supported, it is very easy to switch to a different dns provider. Cloudflare is recommended due to being free and reliable. To switch to Cloudflare, you can register for a free account and follow their steps to point the nameservers to Cloudflare. The rest of the instructions assume that we are using the cloudflare dns plugin.</p> <p>On our dns provider, we'll create an <code>A</code> record for the main domain and point it to our server IP (wan). We'll also create a CNAME for <code>*</code> and point it to the <code>A</code> record for the domain. On Cloudflare, we'll click on the orange cloud to turn it grey so that it is dns only and not cached/proxied by Cloudflare, which would add more complexities.</p> <p>Now, let's get the container set up.</p> <p>With docker cli, we'll first create a user defined bridge network if we haven't already <code>docker network create lsio</code>, and then create the container:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=dns \\\n -e DNSPLUGIN=cloudflare \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>And we start the container via <code>docker start swag</code></p> <p>With docker compose, we'll use:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=wildcard\n - VALIDATION=dns\n - DNSPLUGIN=cloudflare\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>Then we'll fire up the container via <code>docker-compose up -d</code></p> <p>After the container is started, we'll watch the logs with <code>docker logs swag -f</code>. After some init steps, we'll notice that the container will give an error during validation due to wrong credentials. That's because we didn't enter the correct credentials for the Cloudflare API yet. We can browse to the location <code>/config/dns-conf</code> which is mapped from the host location (according to above settings) <code>/home/aptalca/appdata/swag/dns-conf/</code> and edit the correct ini file for our dns provider. For Cloudflare, we'll enter our API token. The API token can be created by going to My Profile-&gt;API Tokens and creating a token with the Edit DNS permission on the DNS zones for which you wish to request certificates. In the cloudflare.ini comment out the <code>dns_cloudflare_email</code> and <code>dns_cloudflare_api_key</code> values, then uncomment <code>dns_cloudflare_api_token</code> and add your API token against it.</p> <p>Once we enter the credentials into the ini file, we'll restart the docker container via <code>docker restart swag</code> and again watch the logs. After successful validation, we should see the notice <code>Server ready</code> and our webserver should be up and accessible at <code>https://www.linuxserver-test.com</code>.</p>"},{"location":"general/swag/#create-container-via-duckdns-validation-with-a-wildcard-cert","title":"Create container via duckdns validation with a wildcard cert","text":"<p>We will first need to get a subdomain from DuckDNS. Let's assume we get <code>linuxserver-test</code> so our url will be <code>linuxserver-test.duckdns.org</code>. Then we'll need to make sure that the subdomain points to our server IP (wan) on the DuckDNS website. We can always use our DuckDNS docker image to keep the IP up to date. Don't forget to get the token for your account from DuckDNS. On the router, we'll forward port <code>443</code> to our host server (Port 80 forward is optional).</p> <p>Now, let's get the container set up.</p> <p>With docker cli, we'll first create a user defined bridge network if we haven't already <code>docker network create lsio</code>, and then create the container:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.duckdns.org \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=duckdns \\\n -e DUCKDNSTOKEN=97654867496t0877648659765854 \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>And we start the container via <code>docker start swag</code></p> <p>With docker compose, we'll use:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.duckdns.org\n - SUBDOMAINS=wildcard\n - VALIDATION=duckdns\n - DUCKDNSTOKEN=97654867496t0877648659765854\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>Then we'll fire up the container via <code>docker-compose up -d</code></p> <p>After the container is started, we'll watch the logs with <code>docker logs swag -f</code>. We'll see some initialization and then we will see the validation steps. After all the steps, it should print <code>Server ready</code> in the logs.</p> <p>Now we can access the webserver by browsing to <code>https://www.linuxserver-test.duckdns.org</code>.</p> <p>Warning</p> <p>Due to a DuckDNS limitation, our cert only covers the wildcard subdomains, but it doesn't cover the main url. So if we try to access <code>https://linuxserver-test.duckdns.org</code>, we'll see a browser warning about an invalid ssl cert. But accessing it through the <code>www</code> (or <code>ombi</code> or any other) subdomain should work fine.</p>"},{"location":"general/swag/#web-hosting-examples","title":"Web hosting examples","text":""},{"location":"general/swag/#simple-html-web-page-hosting","title":"Simple html web page hosting","text":"<p>Once we have a working container, we can drop our web documents in and modify the nginx config files to set up our webserver.</p> <p>All the necessary files are under <code>/config</code> which is mapped from the host location (set by above examples) <code>/home/aptalca/appdata/swag</code>.</p> <p>We can drop all of our web/html files into <code>/config/www</code>.</p> <p>The main site config nginx uses can be found at <code>/config/nginx/site-confs/default</code>. Don't delete this file, as it will be regenerated on container restart, but feel free to modify as needed. By default, it is listening on port 443, and the root folder is set to <code>/config/www</code>, so if you drop a <code>page1.html</code> into that location, it will be accessible at <code>https://linuxserver-test.com/page1.html</code>.</p> <p>To enable listening on port 80 and automatically redirecting to port 443 for enforcing ssl, uncomment the lines at the top of the <code>default</code> site config so it reads:</p> <pre><code># redirect all traffic to https\nserver {\n listen 80;\n listen [::]:80;\n server_name _;\n return 301 https://$host$request_uri;\n}\n</code></pre> <p>After any changes to the config files, simply restart the container via <code>docker restart swag</code> to reload the nginx config.</p>"},{"location":"general/swag/#hosting-a-wordpress-site","title":"Hosting a Wordpress site","text":"<p>Wordpress requires a mysql database. For that, we'll use the linuxserver MariaDB docker image.</p> <p>Here's a docker compose stack to get both containers set up. For this exercise, we'll utilize the cloudflare dns plugin for Let's Encrypt validation, but you can use any other method to set it up as described in this linked section:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n mariadb:\n image: lscr.io/linuxserver/mariadb\n container_name: mariadb\n environment:\n - PUID=1000\n - PGID=1000\n - MYSQL_ROOT_PASSWORD=mariadbpassword\n - TZ=Europe/London\n - MYSQL_DATABASE=WP_database\n - MYSQL_USER=WP_dbuser\n - MYSQL_PASSWORD=WP_dbpassword\n volumes:\n - /home/aptalca/appdata/mariadb:/config\n restart: unless-stopped\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=wildcard\n - VALIDATION=dns\n - DNSPLUGIN=cloudflare\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n depends_on:\n - mariadb\n restart: unless-stopped\n</code></pre> <p>And here are the docker cli versions (make sure you already created the lsio network as described above: Mariadb:</p> <pre><code>docker create \\\n --name=mariadb \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e MYSQL_ROOT_PASSWORD=mariadbpassword \\\n -e TZ=Europe/London \\\n -e MYSQL_DATABASE=WP_database \\\n -e MYSQL_USER=WP_dbuser \\\n -e MYSQL_PASSWORD=WP_dbpassword \\\n -v /home/aptalca/appdata/mariadb:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mariadb\n</code></pre> <p>SWAG:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=dns \\\n -e DNSPLUGIN=cloudflare \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Once the SWAG container is set up with ssl certs and the webserver is up, we'll download the latest Wordpress and untar it into our www folder:</p> <pre><code>wget https://wordpress.org/latest.tar.gz\ntar xvf latest.tar.gz -C /home/aptalca/appdata/swag/www/\nrm latest.tar.gz\n</code></pre> <p>Now that we have all the Wordpress files under the container's <code>/config/www/wordpress</code> folder, we'll need to make some adjustments to the nginx configurations.</p> <ul> <li>Find the line in <code>/config/nginx/site-confs/default</code> that reads <code>root /config/www;</code> and change it to <code>root /config/www/wordpress;</code></li> <li>Find the line in <code>/config/nginx/site-confs/default</code> that reads <code>try_files $uri $uri/ /index.html /index.php$is_args$args =404;</code> and change it to <code>try_files $uri $uri/ /index.html /index.php$is_args$args;</code></li> </ul> <p>Alternatively, if you need to run multiple instances of Wordpress, you can leave <code>/config/nginx/site-confs/default</code> entirely unchanged and create new <code>site-confs</code> for each instance of Wordpress. The new <code>site-confs</code> will be slimmed down copies of <code>/config/nginx/site-confs/default</code>. This assumes you will run each instance on a separate subdomain. If you would prefer to have each Wordpress site on a different top level domain, be sure to add each domain to the <code>EXTRA_DOMAINS</code> environment variable.</p> <p>Ex: <code>/config/nginx/site-confs/myfirstsubdomain.linuxserver-test.com.conf</code></p> <pre><code>server {\n listen 443 ssl http2; # REMOVED default_server\n listen [::]:443 ssl http2; # REMOVED default_server\n\n server_name myfirstsubdomain.linuxserver-test.com; # PUT YOUR DOMAIN HERE\n\n include /config/nginx/ssl.conf;\n\n root /config/sites/myfirstsubdomain.linuxserver-test.com/www; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE\n index index.html index.htm index.php;\n\n location / {\n try_files $uri $uri/ /index.html /index.php$is_args$args; # REMOVED =404\n }\n\n location ~ ^(.+\\.php)(.*)$ {\n fastcgi_split_path_info ^(.+\\.php)(.*)$;\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n include /etc/nginx/fastcgi_params;\n }\n\n # deny access to .htaccess/.htpasswd files\n location ~ /\\.ht {\n deny all;\n }\n}\n</code></pre> <p><code>/config/nginx/site-confs/mysecondsubdomain.linuxserver-test.com.conf</code></p> <pre><code>server {\n listen 443 ssl http2; # REMOVED default_server\n listen [::]:443 ssl http2; # REMOVED default_server\n\n server_name mysecondsubdomain.linuxserver-test.com; # PUT YOUR DOMAIN HERE\n\n include /config/nginx/ssl.conf;\n\n root /config/sites/mysecondsubdomain.linuxserver-test.com/www; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE\n index index.html index.htm index.php;\n\n location / {\n try_files $uri $uri/ /index.html /index.php$is_args$args; # REMOVED =404\n }\n\n location ~ ^(.+\\.php)(.*)$ {\n fastcgi_split_path_info ^(.+\\.php)(.*)$;\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n include /etc/nginx/fastcgi_params;\n }\n\n # deny access to .htaccess/.htpasswd files\n location ~ /\\.ht {\n deny all;\n }\n}\n</code></pre> <p>Now that you have completed changing your nginx configurations you need to restart the SWAG container.</p> <p>Now we should be able to access our Wordpress config page at <code>https://linuxserver-test.com/wp-admin/install.php</code>. We'll go ahead and enter <code>mariadb</code> as the <code>Database Host</code> address (we are using the container name as the dns hostname since both containers are in the same user defined bridge network), and also enter the Database Name, user and password we used in the mariadb config above (<code>WP_database</code>, <code>WP_dbuser</code> and <code>WP_dbpassword</code>).</p> <p>Once we go through the rest of the install steps, our Wordpress instance should be fully set up and available at <code>https://linuxserver-test.com</code>.</p> <p>If you would like to have <code>http</code> requests on port 80 enabled and auto redirected to <code>https</code> on port 443, uncomment the relevant lines at the top of the default site config to read:</p> <pre><code># redirect all traffic to https\nserver {\n listen 80;\n listen [::]:80;\n server_name _;\n return 301 https://$host$request_uri;\n}\n</code></pre>"},{"location":"general/swag/#reverse-proxy","title":"Reverse Proxy","text":"<p>A reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as if they originated from the Web server itself (Shamelessly borrowed from another post on our blog).</p> <p></p> <p>In this case, a user or a client browser can connect to our SWAG container via https on port 443, request a service such as Ombi, then our SWAG container connects to the ombi container, retrieves the data and passes it on to the client via https with our trusted cert. The connection to ombi is local and does not need to be encrypted, but all communication between our SWAG container and the client browser will be encrypted.</p>"},{"location":"general/swag/#preset-proxy-confs","title":"Preset proxy confs","text":"<p>Our SWAG image comes with a list of preset reverse proxy confs for popular apps and services. They are hosted on Github and are pulled into the <code>/config/nginx/proxy-confs</code> folder as inactive sample files. To activate, one must rename a conf file to remove <code>.sample</code> from the filename and restart the SWAG container. Any proxy conf file in that folder with a name that matches <code>*.subdomain.conf</code> or <code>*.subfolder.conf</code> will be loaded in nginx during container start.</p> <p>Most proxy confs work without any modification, but some may require other changes. All the required changes are listed at the top of each proxy conf. The conf files use container names to reach other containers and therefore the proxied containers should be named the same as listed in our documentation for each container.</p> <p>The conf files also require that the SWAG container is in the same user defined bridge network as the other container so they can reach each other via container name as dns hostnames. Make sure you follow the instructions listed above in the Docker networking section.</p>"},{"location":"general/swag/#understanding-the-proxy-conf-structure","title":"Understanding the proxy conf structure","text":""},{"location":"general/swag/#subdomain-proxy-conf","title":"Subdomain proxy conf","text":"<p>Here's the preset proxy conf for Heimdall as a subdomain (ie. <code>https://heimdall.linuxserver-test.com</code>):</p> <pre><code># make sure that your dns has a cname set for heimdall\n\nserver {\n listen 443 ssl;\n listen [::]:443 ssl;\n\n server_name heimdall.*;\n\n include /config/nginx/ssl.conf;\n\n client_max_body_size 0;\n\n # enable for ldap auth, fill in ldap details in ldap.conf\n #include /config/nginx/ldap.conf;\n\n # enable for Authelia\n #include /config/nginx/authelia-server.conf;\n\n location / {\n # enable the next two lines for http auth\n #auth_basic \"Restricted\";\n #auth_basic_user_file /config/nginx/.htpasswd;\n\n # enable the next two lines for ldap auth\n #auth_request /auth;\n #error_page 401 =200 /ldaplogin;\n\n # enable for Authelia\n #include /config/nginx/authelia-location.conf;\n\n include /config/nginx/proxy.conf;\n resolver 127.0.0.11 valid=30s;\n set $upstream_app heimdall;\n set $upstream_port 443;\n set $upstream_proto https;\n proxy_pass $upstream_proto://$upstream_app:$upstream_port;\n\n }\n}\n</code></pre> <p>Let's dissect this conf to look at what each directive or block does.</p> <pre><code>server {\n}\n</code></pre> <p>This is our server block. Whenever nginx gets a request from a client, it determines which server block should be processed based on the destination server name, port and other relevant info, and the matching server block determines how nginx handles and responds to the request.</p> <pre><code> listen 443 ssl;\n listen [::]:443 ssl;\n</code></pre> <p>This means that only requests coming to port 443 will match this server block.</p> <pre><code> server_name heimdall.*;\n</code></pre> <p>Only destination addresses that match <code>heimdall.*</code> will match this server block.</p> <pre><code> include /config/nginx/ssl.conf;\n</code></pre> <p>This directive injects the contents of our ssl.conf file here, which contains all ssl related settings (cert location, ciphers used, etc.).</p> <pre><code> client_max_body_size 0;\n</code></pre> <p>Removes the size limitation on uploads (default 1MB).</p> <pre><code> # enable for ldap auth, fill in ldap details in ldap.conf\n #include /config/nginx/ldap.conf;\n</code></pre> <p>Commented out (disabled) by default. When enabled, it will inject the contents of ldap.conf, necessary settings for LDAP auth.</p> <pre><code> # enable for Authelia\n #include /config/nginx/authelia-server.conf;\n</code></pre> <p>Commented out (disabled) by default. When enabled, it will inject the contents of authelia-server.conf, necessary settings for Authelia integration.</p> <pre><code> location / {\n }\n</code></pre> <p>Location blocks are used for subfolders or paths. After a server block is matched, nginx will look at the subfolder or path requested to match one of the location blocks inside the selected server block. This particular block in our example is for <code>/</code> so it will match any subfolder or path at this address.</p> <pre><code> # enable the next two lines for http auth\n #auth_basic \"Restricted\";\n #auth_basic_user_file /config/nginx/.htpasswd;\n</code></pre> <p>Commented out (disabled) by default. When enabled, it will use <code>.htpasswd</code> to perform user/pass authentication before allowing access.</p> <pre><code> # enable the next two lines for ldap auth\n #auth_request /auth;\n #error_page 401 =200 /login;\n</code></pre> <p>Commented out (disabled) by default. When enabled, it will use LDAP authentication before allowing access.</p> <pre><code> # enable for Authelia\n #include /config/nginx/authelia-location.conf;\n</code></pre> <p>Commented out (disabled) by default. When enabled, it will use Authelia authentication before allowing access.</p> <pre><code> include /config/nginx/proxy.conf;\n</code></pre> <p>Injects the contents of proxy.conf, which contains various directives and headers that are common for proxied connections.</p> <pre><code> resolver 127.0.0.11 valid=30s;\n</code></pre> <p>Tells nginx to use the docker dns to resolve the IP address when the container name is used as address in the next line.</p> <pre><code> set $upstream_app heimdall;\n set $upstream_port 443;\n set $upstream_proto https;\n proxy_pass $upstream_proto://$upstream_app:$upstream_port;\n</code></pre> <p>This is a bit of a tricky part. Normally, we could just put in the directive <code>proxy_pass https://heimdall:443;</code> and expect nginx to connect to Heimdall via its container name used as a dns hostname. Although it works for the most part, nginx has an annoying habit. During start, nginx checks all dns hostnames used in proxy_pass statements and if any one of them is not accessible, it refuses to start. We really don't want a stopped proxied container to prevent our webserver from starting up, so we use a trick.</p> <p>If the proxy_pass statement contains a <code>variable</code> instead of a <code>dns hostname</code>, nginx doesn't check whether it's accessible or not during start. So here we are setting 3 variables, one named <code>upstream_app</code> with the value of <code>heimdall</code>, one named <code>$upstream_port</code>, with the value of the internal heimdall port <code>443</code>, and one named <code>$upstream_proto</code> with the value set to <code>https</code>. We we use these variables as the address in the proxy_pass directive. That way, if the heimdall container is down for any reason, nginx can still start. When using a variable instead of hostname, we also have to set the resolver to docker dns in the previous line.</p> <p>If the proxied container is not in the same user defined bridge network as SWAG (could be on a remote host, could be using host networking or macvlan), we can change the value of <code>$upstream_app</code> to an IP address instead: <code>set $upstream_app 192.168.1.10;</code></p>"},{"location":"general/swag/#subfolder-proxy-conf","title":"Subfolder proxy conf","text":"<p>Here's the preset proxy conf for mytinytodo via a subfolder</p> <pre><code># works with https://github.com/breakall/mytinytodo-docker\n# set the mtt_url to 'https://your.domain.com/todo/' in db/config.php\n\nlocation /todo {\n return 301 $scheme://$host/todo/;\n}\nlocation ^~ /todo/ {\n\n # enable the next two lines for http auth\n #auth_basic \"Restricted\";\n #auth_basic_user_file /config/nginx/.htpasswd;\n\n # enable the next two lines for ldap auth, also customize and enable ldap.conf in the default conf\n #auth_request /auth;\n #error_page 401 =200 /ldaplogin;\n\n # enable for Authelia, also enable authelia-server.conf in the default site config\n #include /config/nginx/authelia-location.conf;\n\n include /config/nginx/proxy.conf;\n resolver 127.0.0.11 valid=30s;\n set $upstream_app mytinytodo;\n set $upstream_port 80;\n set $upstream_proto http;\n proxy_pass $upstream_proto://$upstream_app:$upstream_port/;\n}\n</code></pre> <p>Unlike the subdomain proxy confs, here we do not have a server block. That is because all of the subfolder proxy confs get injected into the main server block of our root domain defined in the default site conf. So here we are only defining the location block for our specific subfolders.</p> <p>Many of the elements are the same as the subdomain ones, so for those you can refer to the previous section. Let's take a look at some of the differences.</p> <pre><code># works with https://github.com/breakall/mytinytodo-docker\n# set the mtt_url to 'https://your.domain.com/todo/' in db/config.php\n</code></pre> <p>These are the instructions to get the tinytodo container ready to work with our reverse proxy.</p> <pre><code>location ^~ /todo {\n return 301 $scheme://$host/todo/;\n}\n</code></pre> <p>Redirects requests for <code>https://linuxserver-test.com/todo</code> to <code>https://linuxserver-test.com/todo/</code> (added forward slash at the end).</p> <pre><code>location ^~ /todo/ {\n}\n</code></pre> <p>Any requests sent to nginx where the destination starts with <code>https://linuxserver-test.com/todo/</code> will match this location block.</p> <pre><code> set $upstream_app mytinytodo;\n set $upstream_port 80;\n set $upstream_proto http;\n proxy_pass $upstream_proto://$upstream_app:$upstream_port/;\n</code></pre> <p>Same as the previous example, we set a variable <code>$upstream_app</code> with the value <code>mytinytodo</code> and tell nginx to use the variable as the address. Keep in mind that the port listed here is the container port because nginx is connecting to this container directly via the docker network. So if our mytinytodo container has a port mapping of <code>-p 8080:80</code>, we still set <code>$upstream_port</code> variable to <code>80</code>.</p> <p>Info</p> <p>Nginx has an interesting behavior displayed here. Even though we define <code>http://$upstream_mytinytodo:80/</code> as the address nginx should proxy, nginx actually connects to <code>http://$upstream_mytinytodo:80/todo</code>. Whenever we use a variable as part of the proxy_pass url, nginx automatically appends the defined <code>location</code> (in this case <code>/todo</code>) to the end of the proxy_pass url before it connects. If we include the subfolder, nginx will try to connect to <code>http://$upstream_mytinytodo:80/todo/todo</code> and will fail.</p>"},{"location":"general/swag/#ombi-subdomain-reverse-proxy-example","title":"Ombi subdomain reverse proxy example","text":"<p>In this example, we will reverse proxy Ombi at the address <code>https://ombi.linuxserver-test.com</code>.</p> <p>First let's make sure that we have a CNAME for <code>ombi</code> set up on our dns provider (a wildcard CNAME <code>*</code> will also cover this) and it is pointing to our <code>A</code> record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named <code>lsio</code>) as described above. We also need to make sure that port 443 on our router is forwarded to the correct port on our server.</p> <p>Here's a docker compose stack we can use to set up both containers:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n ombi:\n image: lscr.io/linuxserver/ombi\n container_name: ombi\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /home/aptalca/appdata/ombi:/config\n ports:\n - 3579:3579\n restart: unless-stopped\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=wildcard\n - VALIDATION=dns\n - DNSPLUGIN=cloudflare\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>And here are the docker cli versions: Ombi:</p> <pre><code>docker create \\\n --name=ombi \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -p 3579:3579 \\\n -v /home/aptalca/appdata/ombi:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ombi\n</code></pre> <p>SWAG:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=dns \\\n -e DNSPLUGIN=cloudflare \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Once our containers up and running (and we confirm we can reach the placeholder page at <code>https://linuxserver-test.com</code>), we simply rename the file <code>ombi.subdomain.conf.sample</code> under <code>/config/nginx/proxy-confs/</code> to <code>ombi.subdomain.conf</code> and we restart the SWAG container. Now when we browser to <code>https://ombi.linuxserver-test.com</code> we should see the Ombi gui.</p>"},{"location":"general/swag/#nextcloud-subdomain-reverse-proxy-example","title":"Nextcloud subdomain reverse proxy example","text":"<p>Nextcloud is a bit trickier because the app has various security measures built-in, forcing us to configure certain options manually.</p> <p>As with the other examples, let's make sure that we have a CNAME for <code>nextcloud</code> set up on our dns provider (a wildcard CNAME <code>*</code> will also cover this) and it is pointing to our <code>A</code> record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named <code>lsio</code>) as described above. For DuckDNS, we do not need to create CNAMES, as all sub-subdomains automatically point to the same IP as our custom subdomain, but we need to make sure that it is the correct IP address for our server. We also need to make sure that port 443 on our router is forwarded to the correct port on our server.</p> <p>In this example we'll use the duckdns wildcard cert, but you can use any Let's Encrypt validation you like as described above</p> <p>Here's a docker compose stack to set up our SWAG, nextcloud and mariadb containers:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n nextcloud:\n image: lscr.io/linuxserver/nextcloud\n container_name: nextcloud\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /home/aptalca/appdata/nextcloud/config:/config\n - /home/aptalca/appdata/nextcloud/data:/data\n depends_on:\n - mariadb\n restart: unless-stopped\n mariadb:\n image: lscr.io/linuxserver/mariadb\n container_name: mariadb\n environment:\n - PUID=1000\n - PGID=1000\n - MYSQL_ROOT_PASSWORD=mariadbpassword\n - TZ=Europe/London\n - MYSQL_DATABASE=nextcloud\n - MYSQL_USER=ncuser\n - MYSQL_PASSWORD=ncpassword\n volumes:\n - /home/aptalca/appdata/mariadb:/config\n restart: unless-stopped\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.duckdns.org\n - SUBDOMAINS=wildcard\n - VALIDATION=duckdns\n - DUCKDNSTOKEN=97654867496t0877648659765854\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>And here are the docker cli versions: Nextcloud:</p> <pre><code>docker create \\\n --name=nextcloud \\\n --net=lsio\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -v /home/aptalca/appdata/nextcloud/config:/config \\\n -v /home/aptalca/appdata/nextcloud/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nextcloud\n</code></pre> <p>Mariadb:</p> <pre><code>docker create \\\n --name=mariadb \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e MYSQL_ROOT_PASSWORD=mariadbpassword \\\n -e TZ=Europe/London \\\n -e MYSQL_DATABASE=nextcloud \\\n -e MYSQL_USER=ncuser \\\n -e MYSQL_PASSWORD=ncpassword \\\n -v /home/aptalca/appdata/mariadb:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mariadb\n</code></pre> <p>SWAG:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.duckdns.org \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=duckdns \\\n -e DUCKDNSTOKEN=97654867496t0877648659765854 \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Now we find the file named <code>nextcloud.subdomain.conf.sample</code> under SWAG's <code>/config/nginx/proxy-confs</code> folder and rename it to <code>nextcloud.subdomain.conf</code>, then restart the SWAG container.</p> <p>If this is the first time we are accessing Nextcloud (we've never accessed it locally before), we can simply navigate to <code>https://nextcloud.linuxserver-test.duckdns.org</code> and we should see the Nextcloud set up page. We'll fill out the info, use the mariadb user <code>ncuser</code> and the password we selected in the environment variable (<code>ncpassword</code> in the above example) and we'll use <code>mariadb</code> as the Database Host address (container name as dns hostname).</p> <p></p> <p>We should then be able to go through the intro slides and then see the Nextcloud dashboard with our shiny padlock icon next to the address bar.</p> <p></p> <p>If this is an existing Nextcloud instance, or we set it up locally via the host IP address and local port, Nextcloud will reject proxied connections. In that case, we have to follow the instructions at the top of the <code>nextcloud.subdomain.conf</code> file:</p> <pre><code># assuming this container is called \"swag\", edit your nextcloud container's config\n# located at /config/www/nextcloud/config/config.php and add the following lines before the \");\":\n# 'trusted_proxies' =&gt; ['swag'],\n# 'overwrite.cli.url' =&gt; 'https://nextcloud.your-domain.com/',\n# 'overwritehost' =&gt; 'nextcloud.your-domain.com',\n# 'overwriteprotocol' =&gt; 'https',\n#\n# Also don't forget to add your domain name to the trusted domains array. It should look somewhat like this:\n# array (\n# 0 =&gt; '192.168.0.1:444', # This line may look different on your setup, don't modify it.\n# 1 =&gt; 'nextcloud.your-domain.com',\n# ),\n</code></pre> <p>These settings will tell Nextcloud to respond to queries where the destination address is our domain name.</p> <p>If you followed the above directions to set it up for the first time, you only need to add the line <code>'trusted_proxies' =&gt; ['swag'],</code>, otherwise nextcloud 16+ shows a warning about incorrect reverse proxy settings. By default, HSTS is disabled in SWAG config, because it is a bit of a sledgehammer that prevents loading of any http assets on the entire domain. You can enable it in SWAG's <code>ssl.conf</code>.</p>"},{"location":"general/swag/#plex-subfolder-reverse-proxy-example","title":"Plex subfolder reverse proxy example","text":"<p>In this example, we will set up Plex as a subfolder so it will be accessible at <code>https://linuxserver-test.com/plex</code>. We will initially set up Plex with host networking through its local IP and will connect to it from the same subnet. If we are on a different subnet, or if using a bridge network, we can use the <code>PLEX_CLAIM</code> variable to automatically claim the server with our plex account.</p> <p>Once the Plex server is set up, it is safe to switch it to bridge networking from host.</p> <p>Here's a docker compose stack we can use to set up both containers:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n plex:\n image: lscr.io/linuxserver/plex\n container_name: plex\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - VERSION=docker\n volumes:\n - /home/aptalca/appdata/plex:/config\n - /home/aptalca/tvshows:/data/tvshows\n - /home/aptalca/movies:/data/movies\n restart: unless-stopped\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=wildcard\n - VALIDATION=dns\n - DNSPLUGIN=cloudflare\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>Here are the docker cli versions: Plex:</p> <pre><code>docker create \\\n --name=plex \\\n --net=host \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e VERSION=docker \\\n -v /home/aptalca/appdata/plex:/config \\\n -v /home/aptalca/tvshows:/data/tvshows \\\n -v /home/aptalca/movies:/data/movies \\\n --restart unless-stopped \\\n lscr.io/linuxserver/plex\n</code></pre> <p>SWAG:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=dns \\\n -e DNSPLUGIN=cloudflare \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Once the containers are set up, we browse to <code>http://LOCALSERVERIP:32400/web</code> and set up our Plex server with our Plex account. Then we can find the file named <code>plex.subfolder.conf.sample</code> under our SWAG container's <code>/config/nginx/proxy-confs</code> folder and rename it to <code>plex.subfolder.conf</code>.</p> <p>If we are using bridge networking for our plex container, we can restart the SWAG container and we should be able to access Plex at <code>https://linuxserver-test.com/plex</code>.</p> <p>If we are using host networking for our plex container, we will also have to make one modification to the <code>plex.subfolder.conf</code>. We need to find the line that reads <code>proxy_pass http://$upstream_plex:32400;</code> and replace <code>$upstream_plex</code> with our Plex server's local IP address (ie. <code>proxy_pass http://192.168.1.10:32400;</code>). Then we can restart SWAG and access Plex at <code>https://linuxserver-test.com/plex</code>.</p> <p>If we want Plex to always use our domain to connect (including in mobile apps), we can add our url <code>https://linuxserver-test.com/plex</code> into the <code>Custom server access URLs</code> in Plex server settings. After that, it is OK to turn off remote access in Plex server settings and remove the port forwarding port 32400. After that, all connections to our Plex server will go through SWAG reverse proxy over port 443.</p>"},{"location":"general/swag/#using-heimdall-as-the-home-page-at-domain-root","title":"Using Heimdall as the home page at domain root","text":"<p>In this example, we will set Heimdall as our homepage at domain root so when we navigate to <code>https://linuxserver-test.com</code> we will reach Heimdall.</p> <p>As before, we need to make sure port 443 is properly forwarded to our server. We also need to make sure that if we are using the docker cli method, we need to create a user defined bridge network as defined above.</p> <p>Here's a docker compose stack we can use to set up both containers:</p> <pre><code>---\nversion: \"2.1\"\nservices:\n heimdall:\n image: lscr.io/linuxserver/heimdall\n container_name: heimdall\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n volumes:\n - /home/aptalca/appdata/heimdall:/config\n restart: unless-stopped\n swag:\n image: lscr.io/linuxserver/swag\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - URL=linuxserver-test.com\n - SUBDOMAINS=wildcard\n - VALIDATION=dns\n - DNSPLUGIN=cloudflare\n volumes:\n - /home/aptalca/appdata/swag:/config\n ports:\n - 443:443\n - 80:80\n restart: unless-stopped\n</code></pre> <p>Here are the docker cli versions: Heimdall:</p> <pre><code>docker create \\\n --name=heimdall \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -v /home/aptalca/appdata/heimdall:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/heimdall\n</code></pre> <p>SWAG:</p> <pre><code>docker create \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n --net=lsio \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e URL=linuxserver-test.com \\\n -e SUBDOMAINS=wildcard \\\n -e VALIDATION=dns \\\n -e DNSPLUGIN=cloudflare \\\n -p 443:443 \\\n -p 80:80 \\\n -v /home/aptalca/appdata/swag:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag\n</code></pre> <p>Once the containers are set up, we'll find the file named <code>heimdall.subfolder.conf.sample</code> under SWAG's <code>/config/nginx/proxy-confs</code> folder and rename it to <code>heimdall.subfolder.conf</code>. If we look inside that conf file, we'll see that it is set to use <code>location / {</code>, which will cause an issue because there is already a location defined for <code>/</code> inside the default site config for SWAG. So we need to edit the default site config at <code>/config/nginx/site-confs/default</code> and comment out the location block for <code>/</code> inside our main server block so it reads:</p> <pre><code> #location / {\n # try_files $uri $uri/ /index.html /index.php?$args =404;\n #}\n</code></pre> <p>That way, nginx will use the <code>/</code> location block from our heimdall proxy conf instead.</p> <p>After that, when we navigate to <code>https://linuxserver-test.com</code>, we'll see the Heimdall interface.</p> <p>If we want to password protect our new homepage, we can run the following on the host command line to create a new <code>.htpasswd</code> file: <code>docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername</code>. After which, we can activate authentication by editing the <code>heimdall.subfolder.conf</code> file to uncomment the relevant lines so it reads:</p> <pre><code> # enable the next two lines for http auth\n auth_basic \"Restricted\";\n auth_basic_user_file /config/nginx/.htpasswd;\n</code></pre>"},{"location":"general/swag/#troubleshooting","title":"Troubleshooting","text":"<p>We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io</p>"},{"location":"general/swag/#common-errors","title":"Common errors","text":""},{"location":"general/swag/#404","title":"404","text":"<p>This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.</p>"},{"location":"general/swag/#502","title":"502","text":"<p>This error means that nginx can't talk to the application. There is a few common reasons for this:</p> <ul> <li> <p>The application and SWAG is not on the same custom docker network</p> <p>Further up we talk about how to set up Docker networking, however there are some other common traps</p> </li> <li> <p>The container name does not match the application name.</p> <p>Covered in the section for Understanding the proxy conf structure</p> </li> <li> <p>You manually changed the port.</p> <p>Also covered in the section for Understanding the proxy conf structure</p> </li> <li> <p>The container originally ran with host networking, or the default bridge.</p> <p>In most cases the contents of <code>/config/nginx/resolver.conf;</code> should be <code>...resolver 127.0.0.11 valid=30s;</code>, if this is not the case, you can:</p> <ul> <li>Delete it, and restart the container to have it regenerate</li> <li>Manually set the content(we wont override it)</li> </ul> </li> </ul>"},{"location":"general/swag/#final-thoughts","title":"Final Thoughts","text":"<p>This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub. If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn</p>"},{"location":"general/swag/#how-to-request-support","title":"How to Request Support","text":"<p>As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread. If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link:</p> <ul> <li>Docker run/create or compose yml you used</li> <li>Full docker log (<code>docker logs swag</code>)</li> <li>Any relevant conf files (default, nginx.conf or specific proxy conf)</li> </ul>"},{"location":"general/understanding-puid-and-pgid/","title":"Understanding PUID and PGID","text":"<p>Info</p> <p>We are aware that recent versions of the Docker engine have introduced the <code>--user</code> flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.</p>"},{"location":"general/understanding-puid-and-pgid/#why-use-these","title":"Why use these?","text":"<p>Docker runs all of its containers under the <code>root</code> user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as <code>root</code>. This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this).</p> <p>Another issue is file management within the container's mapped volumes. If the process is running under <code>root</code>, all files and directories created during the container's lifespan will be owned by <code>root</code>, thus becoming inaccessible by you.</p> <p>Using the <code>PUID</code> and <code>PGID</code> allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly.</p>"},{"location":"general/understanding-puid-and-pgid/#using-the-variables","title":"Using the variables","text":"<p>When creating a container from one of our images, ensure you use the <code>-e PUID</code> and <code>-e PGID</code> options in your docker command:</p> <pre><code>docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets\n</code></pre> <p>Or, if you use <code>docker-compose</code>, add them to the <code>environment:</code> section:</p> <pre><code>environment:\n - PUID=1000\n - PGID=1000\n</code></pre> <p>It is most likely that you will use the <code>id</code> of yourself, which can be obtained by running the command below. The two values you will be interested in are the <code>uid</code> and <code>gid</code>.</p> <pre><code>id $user\n</code></pre>"},{"location":"general/updating-our-containers/","title":"Updating our containers","text":"<p>Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features.</p>"},{"location":"general/updating-our-containers/#steps-required-to-update","title":"Steps required to update","text":"<p>Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container.</p>"},{"location":"general/updating-our-containers/#stop-the-container","title":"Stop the container","text":"<p>Firstly, stop the container.</p> <pre><code>docker stop &lt;container_name&gt;\n</code></pre>"},{"location":"general/updating-our-containers/#remove-the-container","title":"Remove the container","text":"<p>Once the container has been stopped, remove it.</p> <p>Warning</p> <p>Did you remember to persist the <code>/config</code> volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. Read up on why this is important.</p> <pre><code>docker rm &lt;container_name&gt;\n</code></pre>"},{"location":"general/updating-our-containers/#pull-the-latest-version","title":"Pull the latest version","text":"<p>Now you can pull the latest version of the application image from Docker Hub.</p> <pre><code>docker pull linuxserver/&lt;image_name&gt;\n</code></pre>"},{"location":"general/updating-our-containers/#recreate-the-container","title":"Recreate the container","text":"<p>Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been outlined in our documentation.</p> <pre><code>docker create \\\n --name=&lt;container_name&gt; \\\n -v &lt;path_to_data&gt;:/config \\\n -e PUID=&lt;uid&gt; \\\n -e PGID=&lt;gid&gt; \\\n -p &lt;host_port&gt;:&lt;app_port&gt; \\\n linuxserver/&lt;image_name&gt;\n</code></pre>"},{"location":"general/updating-our-containers/#docker-compose","title":"Docker Compose","text":"<p>It is also possible to update a single container using Docker Compose:</p> <pre><code>docker-compose pull linuxserver/&lt;image_name&gt;\ndocker-compose up -d &lt;container_name&gt;\n</code></pre> <p>Or, to update all containers at once:</p> <pre><code>docker-compose pull\ndocker-compose up -d\n</code></pre>"},{"location":"general/updating-our-containers/#removing-old-images","title":"Removing old images","text":"<p>Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the old version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can <code>prune</code> old images from your system, which will free up space:</p> <pre><code>docker image prune\n</code></pre>"},{"location":"general/volumes/","title":"Volumes","text":"<p>In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them.</p> <p>There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays.</p>"},{"location":"general/volumes/#mapping-a-volume-to-your-container","title":"Mapping a volume to your container","text":"<p>Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the <code>/config</code> directory.</p> <p>Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory <code>/opt/appdata</code>. Under this tree, you can create a single configuration directory for each of your containers.</p> <p>When creating the container itself, now is the time to make use of the <code>-v</code> flag, which will tell Docker to overlay your host directory over the container's directory:</p> <pre><code>docker create --name my_container \\\n -v /opt/appdata/my_config:/config \\\n linuxserver/&lt;an_image&gt;\n</code></pre> <p>The above example shows how the usage of <code>-v</code> has mapped the host machine's <code>/opt/appdata/my_config</code> directory over the container's internal <code>/config</code> directory.</p> <p>Info</p> <p>When dealing with mapping overlays, it always reads <code>host:container</code></p> <p>You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the <code>/config</code> directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.</p>"},{"location":"images/","title":"Images","text":"<p>Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.</p>"},{"location":"images/docker-adguardhome-sync/","title":"adguardhome-sync","text":""},{"location":"images/docker-adguardhome-sync/#linuxserveradguardhome-sync","title":"linuxserver/adguardhome-sync","text":"<p>Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.</p> <p></p>"},{"location":"images/docker-adguardhome-sync/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/adguardhome-sync:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-adguardhome-sync/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases from GitHub"},{"location":"images/docker-adguardhome-sync/#application-setup","title":"Application Setup","text":"<p>Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync.</p>"},{"location":"images/docker-adguardhome-sync/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-adguardhome-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n adguardhome-sync:\n image: lscr.io/linuxserver/adguardhome-sync:latest\n container_name: adguardhome-sync\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CONFIGFILE=/config/adguardhome-sync.yaml #optional\n volumes:\n - /path/to/adguardhome-sync/config:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-adguardhome-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=adguardhome-sync \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CONFIGFILE=/config/adguardhome-sync.yaml `#optional` \\\n -p 8080:8080 \\\n -v /path/to/adguardhome-sync/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/adguardhome-sync:latest\n</code></pre>"},{"location":"images/docker-adguardhome-sync/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-adguardhome-sync/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Port for AdGuardHome Sync's web API."},{"location":"images/docker-adguardhome-sync/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CONFIGFILE=/config/adguardhome-sync.yaml</code> Set a custom config file."},{"location":"images/docker-adguardhome-sync/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-adguardhome-sync/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-adguardhome-sync/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-adguardhome-sync/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-adguardhome-sync/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-adguardhome-sync/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-adguardhome-sync/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it adguardhome-sync /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f adguardhome-sync\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' adguardhome-sync\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/adguardhome-sync:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-adguardhome-sync/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-adguardhome-sync/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull adguardhome-sync\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d adguardhome-sync\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-adguardhome-sync/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/adguardhome-sync:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop adguardhome-sync\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm adguardhome-sync\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-adguardhome-sync/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-adguardhome-sync/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-adguardhome-sync.git\ncd docker-adguardhome-sync\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/adguardhome-sync:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-adguardhome-sync/#versions","title":"Versions","text":"<ul> <li>31.01.24: - Rebase to Alpine 3.19.</li> <li>11.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>07.02.23: - Rebase to Alpine 3.17, update amd64 artifact name.</li> <li>03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>18.12.21: - Rebase to Alpine 3.15.</li> <li>09.08.21: - Rebase to Alpine 3.14.</li> <li>08.04.21: - Initial Release.</li> </ul>"},{"location":"images/docker-airsonic-advanced/","title":"airsonic-advanced","text":""},{"location":"images/docker-airsonic-advanced/#linuxserverairsonic-advanced","title":"linuxserver/airsonic-advanced","text":"<p>Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.</p> <p></p>"},{"location":"images/docker-airsonic-advanced/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/airsonic-advanced:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-airsonic-advanced/#application-setup","title":"Application Setup","text":"<p>We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files.</p> <p>Please see notes about upgrading from v10 to v11 here</p> <p>Access WebUI at <code>&lt;your-ip&gt;:4040</code>.</p> <p>Default user/pass is admin/admin</p> <p>Extra java options can be passed with the JAVA_OPTS environment variable, eg <code>-e JAVA_OPTS=\"-Xmx256m -Xms256m\"</code>. For some reverse proxies, you may need to pass <code>JAVA_OPTS=-Dserver.use-forward-headers=true</code> for airsonic to generate the proper URL schemes.</p> <p>Note that if you want to use Airsonic's Java jukebox player, then <code>PGID</code> will need to match the group of your sound device (e.g. <code>/dev/snd</code>).</p>"},{"location":"images/docker-airsonic-advanced/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-airsonic-advanced/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n airsonic-advanced:\n image: lscr.io/linuxserver/airsonic-advanced:latest\n container_name: airsonic-advanced\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CONTEXT_PATH= #optional\n - JAVA_OPTS= #optional\n volumes:\n - /path/to/airsonic-advanced/config:/config\n - /path/to/music:/music\n - /path/to/playlists:/playlists\n - /path/to/podcasts:/podcasts\n - /path/to/other media:/media #optional\n ports:\n - 4040:4040\n devices:\n - /dev/snd:/dev/snd #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-airsonic-advanced/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=airsonic-advanced \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CONTEXT_PATH= `#optional` \\\n -e JAVA_OPTS= `#optional` \\\n -p 4040:4040 \\\n -v /path/to/airsonic-advanced/config:/config \\\n -v /path/to/music:/music \\\n -v /path/to/playlists:/playlists \\\n -v /path/to/podcasts:/podcasts \\\n -v /path/to/other media:/media `#optional` \\\n --device /dev/snd:/dev/snd `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/airsonic-advanced:latest\n</code></pre>"},{"location":"images/docker-airsonic-advanced/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-airsonic-advanced/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4040</code> WebUI"},{"location":"images/docker-airsonic-advanced/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CONTEXT_PATH=</code> For setting url-base in reverse proxy setups. <code>JAVA_OPTS=</code> For passing additional java options."},{"location":"images/docker-airsonic-advanced/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration file location. <code>/music</code> Location of music. <code>/playlists</code> Location for playlists to be saved to. <code>/podcasts</code> Location of podcasts. <code>/media</code> Location of other media."},{"location":"images/docker-airsonic-advanced/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/snd</code> Only needed to pass your host sound device to Airsonic's Java jukebox player."},{"location":"images/docker-airsonic-advanced/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-airsonic-advanced/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-airsonic-advanced/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-airsonic-advanced/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-airsonic-advanced/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-airsonic-advanced/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it airsonic-advanced /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f airsonic-advanced\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic-advanced\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic-advanced:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-airsonic-advanced/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-airsonic-advanced/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull airsonic-advanced\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d airsonic-advanced\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-airsonic-advanced/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/airsonic-advanced:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop airsonic-advanced\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm airsonic-advanced\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-airsonic-advanced/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-airsonic-advanced/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-airsonic-advanced.git\ncd docker-airsonic-advanced\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/airsonic-advanced:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-airsonic-advanced/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>30.05.23: - Rebase to Alpine 3.18.</li> <li>11.02.23: - Rebase to Alpine 3.17.</li> <li>23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>25.07.22: - Add vorbis-tools.</li> <li>02.01.22: - Initial Release.</li> </ul>"},{"location":"images/docker-altus/","title":"altus","text":""},{"location":"images/docker-altus/#linuxserveraltus","title":"linuxserver/altus","text":"<p>Altus is an Electron-based WhatsApp client with themes and multiple account support.</p> <p></p>"},{"location":"images/docker-altus/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/altus:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-altus/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-altus/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-altus/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code>"},{"location":"images/docker-altus/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-altus/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-altus/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-altus/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n altus:\n image: lscr.io/linuxserver/altus:latest\n container_name: altus\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-altus/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=altus \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/altus:latest\n</code></pre>"},{"location":"images/docker-altus/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-altus/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Altus desktop gui. <code>3001</code> Altus desktop gui HTTPS."},{"location":"images/docker-altus/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-altus/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-altus/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> Required for electron apps to fucntion properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-altus/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-altus/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-altus/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-altus/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-altus/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it altus /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f altus\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' altus\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/altus:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-altus/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-altus/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull altus\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d altus\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-altus/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/altus:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop altus\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm altus\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-altus/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-altus/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-altus.git\ncd docker-altus\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/altus:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-altus/#versions","title":"Versions","text":"<ul> <li>29.01.24: - Structural changes for v5.</li> <li>07.12.23: - Initial release.</li> </ul>"},{"location":"images/docker-apprise-api/","title":"apprise-api","text":""},{"location":"images/docker-apprise-api/#linuxserverapprise-api","title":"linuxserver/apprise-api","text":"<p>Apprise-api Takes advantage of Apprise through your network with a user-friendly API.</p> <ul> <li>Send notifications to more then 65+ services.</li> <li>An incredibly lightweight gateway to Apprise.</li> <li>A production ready micro-service at your disposal.</li> </ul> <p>Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.</p> <p></p>"},{"location":"images/docker-apprise-api/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/apprise-api:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-apprise-api/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-apprise-api/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n apprise-api:\n image: lscr.io/linuxserver/apprise-api:latest\n container_name: apprise-api\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/apprise-api/config:/config\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-apprise-api/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=apprise-api \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8000:8000 \\\n -v /path/to/apprise-api/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/apprise-api:latest\n</code></pre>"},{"location":"images/docker-apprise-api/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-apprise-api/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> Port for apprise's interface and API."},{"location":"images/docker-apprise-api/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-apprise-api/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-apprise-api/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-apprise-api/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-apprise-api/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-apprise-api/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-apprise-api/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-apprise-api/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it apprise-api /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f apprise-api\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' apprise-api\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/apprise-api:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-apprise-api/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-apprise-api/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull apprise-api\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d apprise-api\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-apprise-api/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/apprise-api:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop apprise-api\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm apprise-api\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-apprise-api/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-apprise-api/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-apprise-api.git\ncd docker-apprise-api\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/apprise-api:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-apprise-api/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>10.07.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>11.02.23: - Rebase to Alpine 3.17.</li> <li>17.10.22: - Rebase to alpine 3.16, migrate to S6V3</li> <li>28.02.21: - Rebase to alpine 3.15.</li> <li>03.11.21: - Increase uWSGI buffer size to 32kb.</li> <li>16.05.21: - Add linuxserver wheel index.</li> <li>26.02.21: - Initial Release.</li> </ul>"},{"location":"images/docker-audacity/","title":"audacity","text":""},{"location":"images/docker-audacity/#linuxserveraudacity","title":"linuxserver/audacity","text":"<p>Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.</p> <p></p>"},{"location":"images/docker-audacity/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/audacity:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-audacity/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-audacity/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-audacity/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-audacity/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-audacity/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-audacity/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-audacity/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-audacity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n audacity:\n image: lscr.io/linuxserver/audacity:latest\n container_name: audacity\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-audacity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=audacity \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/audacity:latest\n</code></pre>"},{"location":"images/docker-audacity/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-audacity/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Audacity desktop gui. <code>3001</code> Audacity desktop gui HTTPS."},{"location":"images/docker-audacity/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-audacity/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and images"},{"location":"images/docker-audacity/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-audacity/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-audacity/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-audacity/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-audacity/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-audacity/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it audacity /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f audacity\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' audacity\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/audacity:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-audacity/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-audacity/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull audacity\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d audacity\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-audacity/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/audacity:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop audacity\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm audacity\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-audacity/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-audacity/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-audacity.git\ncd docker-audacity\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/audacity:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-audacity/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars, ingest proper PWA icon, and pre-extract appimage.</li> <li>05.05.23: - Start Audacity in full screen.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>13.12.22: - Rebase to Jammy.</li> <li>14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates.</li> <li>07.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-babybuddy/","title":"babybuddy","text":""},{"location":"images/docker-babybuddy/#linuxserverbabybuddy","title":"linuxserver/babybuddy","text":"<p>Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.</p> <p></p>"},{"location":"images/docker-babybuddy/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/babybuddy:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-babybuddy/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8000</code> (or whichever host port is mapped in docker arguments). The default user/pass are <code>admin:admin</code>.</p> <p>By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs.</p>"},{"location":"images/docker-babybuddy/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-babybuddy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n babybuddy:\n image: lscr.io/linuxserver/babybuddy:latest\n container_name: babybuddy\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com\n volumes:\n - /path/to/babybuddy/config:/config\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-babybuddy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=babybuddy \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com \\\n -p 8000:8000 \\\n -v /path/to/babybuddy/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/babybuddy:latest\n</code></pre>"},{"location":"images/docker-babybuddy/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-babybuddy/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> the port for the web ui"},{"location":"images/docker-babybuddy/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com</code> Add any address you'd like to access babybuddy at (comma separated, no spaces)"},{"location":"images/docker-babybuddy/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-babybuddy/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-babybuddy/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-babybuddy/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-babybuddy/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-babybuddy/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-babybuddy/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it babybuddy /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f babybuddy\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' babybuddy\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/babybuddy:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-babybuddy/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-babybuddy/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull babybuddy\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d babybuddy\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-babybuddy/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/babybuddy:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop babybuddy\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm babybuddy\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-babybuddy/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-babybuddy/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-babybuddy.git\ncd docker-babybuddy\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/babybuddy:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-babybuddy/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>05.07.23: - Add standard HTTP/HTTPS listen ports 80 and 443, keeping 8000 for backwards compatibility.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>16.01.23: - Rebase to Alpine 3.17.</li> <li>23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs (see changes announcement).</li> <li>28.05.22: - Add missing PUID/PGID vars to readme.</li> <li>03.04.22: - Rebase to alpine-nginx baseimage. Add <code>CSRF_TRUSTED_ORIGINS</code> env var.</li> <li>11.12.21: - Add py3-mysqlclient for mysql/mariadb.</li> <li>14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml).</li> <li>25.07.21: - Add libpq for postgresql.</li> <li>08.07.21: - Fix pip install issue.</li> <li>05.07.21: - Update Gunicorn parameters to prevent <code>WORKER_TIMEOUT</code> issue.</li> <li>22.06.21: - Initial release.</li> </ul>"},{"location":"images/docker-bambustudio/","title":"bambustudio","text":""},{"location":"images/docker-bambustudio/#linuxserverbambustudio","title":"linuxserver/bambustudio","text":"<p>Bambu Studio Bambu Studio is an open-source, cutting-edge, feature-rich slicing software. It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphical interface, bringing users an incredibly smooth printing experience.</p> <p></p>"},{"location":"images/docker-bambustudio/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/bambustudio:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-bambustudio/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-bambustudio/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-bambustudio/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-bambustudio/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-bambustudio/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-bambustudio/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-bambustudio/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-bambustudio/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n bambustudio:\n image: lscr.io/linuxserver/bambustudio:latest\n container_name: bambustudio\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-bambustudio/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=bambustudio \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/bambustudio:latest\n</code></pre>"},{"location":"images/docker-bambustudio/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-bambustudio/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Bambu Studio desktop gui. <code>3001</code> Bambu Studio desktop gui HTTPS."},{"location":"images/docker-bambustudio/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-bambustudio/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-bambustudio/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-bambustudio/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-bambustudio/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-bambustudio/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-bambustudio/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-bambustudio/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it bambustudio /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f bambustudio\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bambustudio\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bambustudio:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-bambustudio/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-bambustudio/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull bambustudio\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d bambustudio\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bambustudio/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/bambustudio:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop bambustudio\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm bambustudio\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bambustudio/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-bambustudio/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-bambustudio.git\ncd docker-bambustudio\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/bambustudio:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-bambustudio/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars.</li> <li>08.02.24: - Fix printer camera by ingesting Fedora Appimage, Add program icon for PWA ingestion.</li> <li>15.11.23: - Initial release.</li> </ul>"},{"location":"images/docker-base-alpine-example/","title":"Docker base alpine example","text":""},{"location":"images/docker-base-alpine-example/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum Linuserver.io forum <p>A custom base image built with Alpine linux and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-base-ubuntu-example/","title":"Docker base ubuntu example","text":""},{"location":"images/docker-base-ubuntu-example/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum Linuserver.io forum <p>A custom base image built with Ubuntu cloud image and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-alpine-nginx/","title":"baseimage-alpine-nginx","text":""},{"location":"images/docker-baseimage-alpine-nginx/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Alpine linux, nginx and S6 overlay..</p> <p>Featuring :-</p> <ul> <li>weekly updates</li> <li>security updates</li> </ul> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"images/docker-baseimage-alpine/","title":"baseimage-alpine","text":""},{"location":"images/docker-baseimage-alpine/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC libera at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Alpine linux and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-arch/","title":"baseimage-arch","text":""},{"location":"images/docker-baseimage-arch/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Alpine linux and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-debian/","title":"baseimage-debian","text":""},{"location":"images/docker-baseimage-debian/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Debian baseimage and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-fedora/","title":"baseimage-fedora","text":""},{"location":"images/docker-baseimage-fedora/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Alpine linux and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-kasmvnc/","title":"baseimage-kasmvnc","text":""},{"location":"images/docker-baseimage-kasmvnc/#kasmvnc-base-images-from-linuxserver","title":"KasmVNC Base Images from LinuxServer","text":"<p>The purpose of these images is to provide a full featured web native Linux desktop experience for any Linux application or desktop environment. These images replace our old base images at Rdesktop Web for greatly increased performance, fidelity, and feature set. They ship with passwordless sudo to allow easy package installation, testing, and customization. By default they have no logic to mount out anything but the users home directory, meaning on image updates anything outside of <code>/config</code> will be lost.</p> <p>These images contain the following services: </p> <ul> <li>KasmVNC - The core technology for interacting with a containerized desktop from a web browser.</li> <li>Kclient - NodeJS Iframe wrapper for KasmVNC providing audio and file access.</li> <li>NGINX - Used to serve the mix of KasmVNC and Kclient with the appropriate headers and provide basic auth.</li> <li>Docker - Can be used for interacting with a mounted in Docker socket or if the container is run in privileged mode will start a DinD setup.</li> <li>PulseAudio - Sound subsystem used to capture audio from the active desktop session and send it to the browser via the Kclient helper application.</li> </ul>"},{"location":"images/docker-baseimage-kasmvnc/#options","title":"Options","text":"<p>Authentication for these containers is included as a convenience and to keep in sync with the previous xrdp containers they replace. We use bash to substitute in settings user/password and some strings might break that. In general this authentication mechanism should be used to keep the kids out not the internet</p> <p>If you are looking for a robust secure application gateway please check out SWAG. </p> <p>All application settings are passed via environment variables:</p> Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use DISABLE_DRI When using privilged mode or mounting in a video card, do not attempt to use it for DRI3 acceleration in KasmVNC DISABLE_IPV6 If set to true or any value this will disable IPv6 LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> 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) NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-baseimage-kasmvnc/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables(Alpine):</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-baseimage-kasmvnc/#available-distros","title":"Available Distros","text":"<p>All base images are built for x86_64 and aarch64 platforms.</p> Distro Current Tag Alpine alpine319 Arch arch Debian debianbullseye Debian debianbookworm Fedora fedora39 Ubuntu ubuntujammy"},{"location":"images/docker-baseimage-kasmvnc/#i-like-to-read-documentation","title":"I like to read documentation","text":""},{"location":"images/docker-baseimage-kasmvnc/#building-images","title":"Building images","text":""},{"location":"images/docker-baseimage-kasmvnc/#application-containers","title":"Application containers","text":"<p>Included in these base images is a simple Openbox DE and the accompanying logic needed to launch a single application. Lets look at the bare minimum needed to create an application container starting with a Dockerfile: </p> <pre><code>FROM ghcr.io/linuxserver/baseimage-kasmvnc:alpine318\nRUN apk add --no-cache firefox\nCOPY /root /\n</code></pre> <p>And we can define the application to start using: </p> <pre><code>mkdir -p root/defaults\necho \"firefox\" &gt; root/defaults/autostart\n</code></pre> <p>Resulting in a folder that looks like this: </p> <pre><code>\u251c\u2500\u2500 Dockerfile\n\u2514\u2500\u2500 root\n \u2514\u2500\u2500 defaults\n \u2514\u2500\u2500 autostart\n</code></pre> <p>Now build and test:</p> <pre><code>docker build -t firefox .\ndocker run --rm -it -p 3000:3000 firefox bash\n</code></pre> <p>On http://localhost:3000 you should be presented with a Firefox web browser interface.</p> <p>This similar setup can be used to embed any Linux Desktop application in a web accesible container.</p> <p>If building images it is important to note that many application will not work inside of Docker without <code>--security-opt seccomp=unconfined</code>, they may have launch flags to not use syscalls blocked by Docker like with chromium based applications and <code>--no-sandbox</code>. In general do not expect every application will simply work like a native Linux installation without some modifications</p>"},{"location":"images/docker-baseimage-kasmvnc/#in-container-application-launching","title":"In container application launching","text":"<p>Also included in the init logic is the ability to define application launchers. As the user has the ability to close the application or if they want to open multiple instances of it this can be useful. Here is an example of a menu definition file for Firefox:</p> <pre><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n&lt;openbox_menu xmlns=\"http://openbox.org/3.4/menu\"&gt;\n&lt;menu id=\"root-menu\" label=\"MENU\"&gt;\n&lt;item label=\"xterm\" icon=\"/usr/share/pixmaps/xterm-color_48x48.xpm\"&gt;&lt;action name=\"Execute\"&gt;&lt;command&gt;/usr/bin/xterm&lt;/command&gt;&lt;/action&gt;&lt;/item&gt;\n&lt;item label=\"FireFox\" icon=\"/usr/share/icons/hicolor/48x48/apps/firefox.png\"&gt;&lt;action name=\"Execute\"&gt;&lt;command&gt;/usr/bin/firefox&lt;/command&gt;&lt;/action&gt;&lt;/item&gt;\n&lt;/menu&gt;\n&lt;/openbox_menu&gt;\n</code></pre> <p>Simply create this file and add it to your defaults folder as <code>menu.xml</code>: </p> <pre><code>\u251c\u2500\u2500 Dockerfile\n\u2514\u2500\u2500 root\n \u2514\u2500\u2500 defaults\n \u2514\u2500\u2500 autostart\n \u2514\u2500\u2500 menu.xml\n</code></pre> <p>This allows users to right click the desktop background to launch the application.</p>"},{"location":"images/docker-baseimage-kasmvnc/#full-desktop-environments","title":"Full Desktop environments","text":"<p>When building an application container we are leveraging the Openbox DE to handle window management, but it is also possible to completely replace the DE that is launched on container init using the <code>startwm.sh</code> script, located again in defaults: </p> <pre><code>\u251c\u2500\u2500 Dockerfile\n\u2514\u2500\u2500 root\n \u2514\u2500\u2500 defaults\n \u2514\u2500\u2500 startwm.sh\n</code></pre> <p>If included in the build logic it will be launched in place of Openbox. Examples for this kind of configuration can be found in our Webtop repository</p>"},{"location":"images/docker-baseimage-kasmvnc/#kasm-workspaces-compatibility","title":"Kasm Workspaces compatibility","text":"<p>Included in these base images are binary blobs <code>/kasmbins</code> and a special init process <code>/kasminit</code> to maintain compatibility with Kasm Workspaces, If using this base image as reccomended with the <code>startwm.sh</code> or <code>autostart</code> entrypoints. They will be able to be used on that platform without issue.</p>"},{"location":"images/docker-baseimage-kasmvnc/#docker-in-docker-dind","title":"Docker in Docker (DinD)","text":"<p>These base images include an installation of Docker that can be used in two ways. The simple method is simply leveraging the Docker/Docker Compose cli bins to manage the host level Docker installation by mounting in <code>-v /var/run/docker.sock:/var/run/docker.sock</code>. </p> <p>The base images can also run an isolated in container DinD setup simply by passing <code>--privileged</code> to the container when launching. If for any reason the application needs privilege but Docker is not wanted the <code>-e START_DOCKER=false</code> can be set at runtime or in the Dockerfile. In container Docker (DinD) will most likely use the fuse-overlayfs driver for storage which is not as fast as native overlay2. To increase perormance the <code>/var/lib/docker/</code> directory in the container can be mounted out to a Linux host and will use overlay2. Keep in mind Docker runs as root and the contents of this directory will not respect the PUID/PGID environment variables available on all LinuxServer.io containers.</p>"},{"location":"images/docker-baseimage-kasmvnc/#dri3-gpu-acceleration","title":"DRI3 GPU Acceleration","text":"<p>For accelerated apps or games, render devices can be mounted into the container and leveraged by applications using: </p> <p><code>--device /dev/dri:/dev/dri</code></p> <p>This feature only supports Open Source GPU drivers:</p> Driver Description Intel i965 and i915 drivers for Intel iGPU chipsets AMD AMDGPU, Radeon, and ATI drivers for AMD dedicated or APU chipsets NVIDIA nouveau2 drivers only, closed source NVIDIA drivers lack DRI3 support <p>The <code>DRINODE</code> environment variable can be used to point to a specific GPU. Up to date information can be found here</p>"},{"location":"images/docker-baseimage-kasmvnc/#display-compositing-desktop-effects","title":"Display Compositing (desktop effects)","text":"<p>When using this image in tandem with a supported video card, compositing will function albeit with a performance hit when syncing the frames with pixmaps for the applications using it. This can greatly increase app compatibility if the application in question requires compositing, but requires a real GPU to be mounted into the container. By default we disable compositing at a DE level for performance reasons on our downstream images, but it can be enabled by the user and programs using compositing will still function even if the DE has it disabled in its settings. When building desktop images be sure you understand that with it enabled by default only users that have a compatible GPU mounted in will be able to use your image.</p>"},{"location":"images/docker-baseimage-kasmvnc/#lossless","title":"Lossless","text":"<p>These images support all the native KasmVNC encoding methods including a true 24 bit RGB lossless mode using the Quite OK Image Format. This mode will use all the bandwidth you give it so just keep that in mind for remote sessions. This mode also might require special configuration depending on how you are accessing the container. Lossless will only work over http (default port 3000) on localhost, when accessing remotely or even over a local network you need to use https (default port 3001) to support SharedArrayBuffer. This is needed to leverage a fast memory pipeline in the browser during the threaded WebAssembly based decoding. This can be enabled in the sidebar under settings&gt;stream quality&gt;lossless.</p> <p>If putting this container behind a proxy of some kind some headers will need to be set to again support SharedArrayBuffers here is a default NGINX configuration format: </p> <pre><code>add_header 'Cross-Origin-Embedder-Policy' 'require-corp';\nadd_header 'Cross-Origin-Opener-Policy' 'same-origin';\nadd_header 'Cross-Origin-Resource-Policy' 'same-site';\n</code></pre> <p>More information here</p> <p>The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</p>"},{"location":"images/docker-baseimage-rdesktop/","title":"baseimage-rdesktop","text":""},{"location":"images/docker-baseimage-rdesktop/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu linux and xrdp</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-baseimage-ubuntu/","title":"baseimage-ubuntu","text":""},{"location":"images/docker-baseimage-ubuntu/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Forum LinuxServer.io forum <p>A custom base image built with Ubuntu cloud image and S6 overlay..</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-bazarr/","title":"bazarr","text":""},{"location":"images/docker-bazarr/#linuxserverbazarr","title":"linuxserver/bazarr","text":"<p>Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.</p> <p></p>"},{"location":"images/docker-bazarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/bazarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-bazarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases from Bazarr development \u2705 Pre-releases from Bazarr"},{"location":"images/docker-bazarr/#application-setup","title":"Application Setup","text":"<ul> <li>Once running the URL will be <code>http://&lt;host-ip&gt;:6767</code>.</li> <li>You must complete all the setup parameters in the webui before you can save the config.</li> </ul>"},{"location":"images/docker-bazarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-bazarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n bazarr:\n image: lscr.io/linuxserver/bazarr:latest\n container_name: bazarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/bazarr/config:/config\n - /path/to/movies:/movies #optional\n - /path/to/tv:/tv #optional\n ports:\n - 6767:6767\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-bazarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=bazarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 6767:6767 \\\n -v /path/to/bazarr/config:/config \\\n -v /path/to/movies:/movies `#optional` \\\n -v /path/to/tv:/tv `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/bazarr:latest\n</code></pre>"},{"location":"images/docker-bazarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-bazarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>6767</code> Allows HTTP access to the internal webserver."},{"location":"images/docker-bazarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-bazarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/movies</code> Location of your movies <code>/tv</code> Location of your TV Shows"},{"location":"images/docker-bazarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-bazarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-bazarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-bazarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-bazarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-bazarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it bazarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f bazarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bazarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bazarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-bazarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-bazarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull bazarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d bazarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bazarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/bazarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop bazarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm bazarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bazarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-bazarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-bazarr.git\ncd docker-bazarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/bazarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-bazarr/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>19.09.23: - Install unrar from linuxserver repo.</li> <li>11.08.23: - Rebase to Alpine 3.18.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>26.02.23: - Add dependencies for postgres support. Add mediainfo.</li> <li>23.01.23: - Rebase master branch to Alpine 3.17.</li> <li>11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.</li> <li>15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel.</li> <li>25.10.21: - Rebase to alpine 3.14. Fix numpy wheel.</li> <li>22.10.21: - Added openblas package to prevent numpy error.</li> <li>16.05.21: - Use wheel index.</li> <li>19.04.21: - Install from release zip.</li> <li>07.04.21: - Move app to /app/bazarr/bin, add <code>package_info</code>.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>23.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>13.05.20: - Add donation links for Bazarr to Github sponsors button and container log.</li> <li>08.04.20: - Removed /movies and /tv volumes from Dockerfiles.</li> <li>28.12.19: - Upgrade to Python 3.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>13.06.19: - Add env variable for setting umask.</li> <li>12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe.</li> <li>17.04.19: - Add default UTC timezone if user does not set it.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.09.18: - Initial release.</li> </ul>"},{"location":"images/docker-beets/","title":"beets","text":""},{"location":"images/docker-beets/#linuxserverbeets","title":"linuxserver/beets","text":"<p>Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.</p> <p></p>"},{"location":"images/docker-beets/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/beets:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-beets/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Beets Releases nightly \u2705 Built against head of Beets git, generally considered unstable but a likely choice for power users of the application."},{"location":"images/docker-beets/#application-setup","title":"Application Setup","text":"<p>Edit the config file in /config</p> <p>To edit the config from within the container use <code>beet config -e</code></p> <p>For a command prompt as user abc <code>docker exec -it -u abc beets bash</code></p> <p>See Beets for more info.</p> <p>Contains beets-extrafiles plugin, configuration details</p>"},{"location":"images/docker-beets/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-beets/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n beets:\n image: lscr.io/linuxserver/beets:latest\n container_name: beets\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/beets/config:/config\n - /path/to/music/library:/music\n - /path/to/ingest:/downloads\n ports:\n - 8337:8337\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-beets/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=beets \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8337:8337 \\\n -v /path/to/beets/config:/config \\\n -v /path/to/music/library:/music \\\n -v /path/to/ingest:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/beets:latest\n</code></pre>"},{"location":"images/docker-beets/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-beets/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8337</code> Application WebUI"},{"location":"images/docker-beets/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-beets/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/music</code> Music library <code>/downloads</code> Non processed music"},{"location":"images/docker-beets/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-beets/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-beets/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-beets/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-beets/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-beets/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it beets /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f beets\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' beets\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/beets:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-beets/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-beets/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull beets\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d beets\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-beets/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/beets:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop beets\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm beets\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-beets/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-beets/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-beets.git\ncd docker-beets\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/beets:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-beets/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.08.23: - Rebase to Alpine 3.18, pin Pillow to 9.5.0.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>25.03.23: - Add requests_oauthlib required for beatport plugin.</li> <li>24.02.23: - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin.</li> <li>15.01.22: - Rebasing to alpine 3.15.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>12.05.19: - Add flac and mp3val binaries required for badfiles plugin.</li> <li>12.04.19: - Rebase to Alpine 3.9.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag.</li> <li>01.03.19: - Switch to python3.</li> <li>07.02.19: - Add fftw-dev build dependency for chromaprint.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast.</li> <li>12.08.18: - Add requests pip package.</li> <li>04.03.18: - Upgrade mp3gain to 1.6.1.</li> <li>02.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>27.12.17: - Add beautifulsoup4 pip package.</li> <li>06.12.17: - Rebase to alpine linux 3.7.</li> <li>25.05.17: - Rebase to alpine linux 3.6.</li> <li>06.02.17: - Rebase to alpine linux 3.5.</li> <li>16.01.17: - Add packages required for replaygain.</li> <li>24.12.16: - Add beets-copyartifacts plugin.</li> <li>07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib</li> <li>14.10.16: - Add version layer information.</li> <li>01.10.16: - Add nano and editor variable to allow editing of the config from the container command line.</li> <li>30.09.16: - Fix umask.</li> <li>24.09.16: - Rebase to alpine linux.</li> <li>10.09.16: - Add layer badges to README.</li> <li>05.01.16: - Change ffpmeg repository, other version crashes container</li> <li>06.11.15: - Initial Release</li> <li>29.11.15: - Take out term setting, causing issues with key entry for some users</li> </ul>"},{"location":"images/docker-blender/","title":"blender","text":""},{"location":"images/docker-blender/#linuxserverblender","title":"linuxserver/blender","text":"<p>Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience</p> <p></p>"},{"location":"images/docker-blender/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/blender:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-blender/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-blender/#hardware-acceleration","title":"Hardware Acceleration","text":"<p>This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container.</p>"},{"location":"images/docker-blender/#intelatiamd","title":"Intel/ATI/AMD","text":"<p>To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. <pre><code>--device /dev/dri:/dev/dri\n</code></pre> We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-blender/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-blender/#arm-devices","title":"Arm Devices","text":"<p>Arm devices can run this image, but generally should not mount in /dev/dri. The OpenGL ES version is not high enough to run Blender. The program can run on these platforms though, leveraging CPU LLVMPipe rendering.</p> <p>Due to lack of arm64 binaries from the upstream project, our arm64 image installs the latest version from the ubuntu repo, which is usually behind and thus the version the image is tagged with does not match the version contained.</p>"},{"location":"images/docker-blender/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-blender/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-blender/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-blender/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-blender/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-blender/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-blender/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n blender:\n image: lscr.io/linuxserver/blender:latest\n container_name: blender\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-blender/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=blender \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/blender:latest\n</code></pre>"},{"location":"images/docker-blender/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-blender/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Blender desktop gui <code>3001</code> Blender desktop gui HTTPS"},{"location":"images/docker-blender/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBFOLDER=/</code> Specify a subfolder to use with reverse proxies, IE <code>/subfolder/</code>"},{"location":"images/docker-blender/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-blender/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, this may be required depending on your Docker and storage configuration."},{"location":"images/docker-blender/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-blender/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-blender/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-blender/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-blender/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it blender /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f blender\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' blender\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/blender:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-blender/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-blender/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull blender\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d blender\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-blender/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/blender:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop blender\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm blender\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-blender/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-blender/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-blender.git\ncd docker-blender\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/blender:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-blender/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>13.12.22: - Rebase to Jammy, migrate to s6v3.</li> <li>06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind.</li> <li>12.03.22: - Initial Release.</li> </ul>"},{"location":"images/docker-boinc/","title":"boinc","text":""},{"location":"images/docker-boinc/#linuxserverboinc","title":"linuxserver/boinc","text":"<p>BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.</p> <p></p>"},{"location":"images/docker-boinc/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/boinc:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-boinc/#application-setup","title":"Application Setup","text":"<p>This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at <code>http://your-ip:8080</code> or <code>https://your-ip:8181</code>.</p> <p>By default, there is no password set for the main gui. Optional environment variable <code>PASSWORD</code> will allow setting a password for the user <code>abc</code>.</p> <p>It is recommended to switch to <code>Advanced View</code> in the top menu, because the <code>Computing Preferences</code> don't seem to be displayed in <code>Simple View</code>.</p> <p>Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them.</p>"},{"location":"images/docker-boinc/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-boinc/#intel","title":"Intel","text":"<p>Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: <code>--device=/dev/dri:/dev/dri</code> We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-boinc/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.</p>"},{"location":"images/docker-boinc/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-boinc/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 8080. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 8181. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-boinc/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-boinc/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-boinc/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 8181 needs to be used. If using a reverse proxy to port 8080 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-boinc/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-boinc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n boinc:\n image: lscr.io/linuxserver/boinc:latest\n container_name: boinc\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PASSWORD= #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8080:8080\n - 8181:8181\n devices:\n - /dev/dri:/dev/dri #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-boinc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=boinc \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PASSWORD= `#optional` \\\n -p 8080:8080 \\\n -p 8181:8181 \\\n -v /path/to/data:/config \\\n --device /dev/dri:/dev/dri `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/boinc:latest\n</code></pre>"},{"location":"images/docker-boinc/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-boinc/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Boinc desktop gui. <code>8181</code> Boinc desktop gui HTTPS."},{"location":"images/docker-boinc/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PASSWORD=</code> Optionally set a password for the gui."},{"location":"images/docker-boinc/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where BOINC should store its database and config."},{"location":"images/docker-boinc/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Only needed if you want to use your Intel GPU (vaapi)."},{"location":"images/docker-boinc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker."},{"location":"images/docker-boinc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-boinc/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-boinc/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-boinc/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-boinc/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it boinc /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f boinc\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' boinc\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/boinc:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-boinc/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-boinc/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull boinc\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d boinc\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-boinc/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/boinc:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop boinc\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm boinc\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-boinc/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-boinc/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-boinc.git\ncd docker-boinc\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/boinc:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-boinc/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>03.04.23: - Rebase to KasmVNC base image. Deprecate armhf build as the new base does not support it. Add bzip2 and xz-utils.</li> <li>14.11.22: - Fix opencl driver.</li> <li>18.09.22: - Rebase to jammy.</li> <li>24.02.22: - Rebase to focal.</li> <li>31.01.22: - Improve device permissions setting verbosity.</li> <li>23.03.21: - Rebase to rdesktop-web baseimage. Deprecate <code>GUAC_USER</code> and <code>GUAC_PASS</code> env vars. Existing users can set the new var <code>PASSWORD</code> for the user <code>abc</code>.</li> <li>01.04.20: - Install boinc from ppa.</li> <li>17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image.</li> <li>16.03.20: - Clean up old pid files.</li> <li>15.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-booksonic-air/","title":"booksonic-air","text":""},{"location":"images/docker-booksonic-air/#linuxserverbooksonic-air","title":"linuxserver/booksonic-air","text":"<p>Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.</p> <p></p>"},{"location":"images/docker-booksonic-air/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/booksonic-air:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-booksonic-air/#application-setup","title":"Application Setup","text":"<p>While this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin</p>"},{"location":"images/docker-booksonic-air/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-booksonic-air/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n booksonic-air:\n image: lscr.io/linuxserver/booksonic-air:latest\n container_name: booksonic-air\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CONTEXT_PATH=url-base #optional\n volumes:\n - /path/to/booksonic-air/config:/config\n - /path/to/audiobooks:/audiobooks\n - /path/to/podcasts:/podcasts\n - /path/to/othermedia:/othermedia\n ports:\n - 4040:4040\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-booksonic-air/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=booksonic-air \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CONTEXT_PATH=url-base `#optional` \\\n -p 4040:4040 \\\n -v /path/to/booksonic-air/config:/config \\\n -v /path/to/audiobooks:/audiobooks \\\n -v /path/to/podcasts:/podcasts \\\n -v /path/to/othermedia:/othermedia \\\n --restart unless-stopped \\\n lscr.io/linuxserver/booksonic-air:latest\n</code></pre>"},{"location":"images/docker-booksonic-air/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-booksonic-air/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4040</code> Application WebUI"},{"location":"images/docker-booksonic-air/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CONTEXT_PATH=url-base</code> Base url for use with reverse proxies etc."},{"location":"images/docker-booksonic-air/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files. <code>/audiobooks</code> Audiobooks. <code>/podcasts</code> Podcasts. <code>/othermedia</code> Other media."},{"location":"images/docker-booksonic-air/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-booksonic-air/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-booksonic-air/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-booksonic-air/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-booksonic-air/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-booksonic-air/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it booksonic-air /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f booksonic-air\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic-air\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic-air:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-booksonic-air/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-booksonic-air/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull booksonic-air\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d booksonic-air\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-booksonic-air/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/booksonic-air:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop booksonic-air\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm booksonic-air\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-booksonic-air/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-booksonic-air/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-booksonic-air.git\ncd docker-booksonic-air\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/booksonic-air:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-booksonic-air/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>10.07.23: - Rebase to Alpine 3.18.</li> <li>25.12.22: - Rebase to Alpine 3.17, migrate to s6v3, bump jre to 11, deprecate armhf.</li> <li>18.04.22: - Rebase to Alpine 3.15.</li> <li>15.09.20: - Initial Release.</li> </ul>"},{"location":"images/docker-bookstack/","title":"bookstack","text":""},{"location":"images/docker-bookstack/#linuxserverbookstack","title":"linuxserver/bookstack","text":"<p>Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.</p> <p>Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.</p> <p>For more information on BookStack visit their website and check it out: https://www.bookstackapp.com</p> <p></p>"},{"location":"images/docker-bookstack/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/bookstack:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-bookstack/#application-setup","title":"Application Setup","text":"<p>The default username is admin@admin.com with the password of password, access the container at http://dockerhost:6875.</p> <p>This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/.</p> <p>If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the <code>APP_URL</code> environment variable is set to your external domain, or it will not work.</p> <p>Documentation for BookStack can be found at https://www.bookstackapp.com/docs/.</p>"},{"location":"images/docker-bookstack/#bookstack-file-directory-paths","title":"BookStack File &amp; Directory Paths","text":"<p>This container ensures certain BookStack application files &amp; folders, such as user file upload folders, are retained within the <code>/config</code> folder so that they are persistent &amp; accessible when the <code>/config</code> container path is bound as a volume. There may be cases, when following the BookStack documentation, that you'll need to know how these files and folders are used relative to a non-container BookStack installation.</p> <p>Below is a mapping of container <code>/config</code> paths to those relative within a BookStack install directory:</p> <ul> <li>/config container path =&gt; BookStack relative path</li> <li><code>/config/www/.env</code> =&gt; <code>.env</code></li> <li><code>/config/www/laravel.log</code> =&gt; <code>storage/logs/laravel.log</code></li> <li><code>/config/www/backups/</code> =&gt; <code>storage/backups/</code></li> <li><code>/config/www/files/</code> =&gt; <code>storage/uploads/files/</code></li> <li><code>/config/www/images/</code> =&gt; <code>storage/uploads/images/</code></li> <li><code>/config/www/themes/</code> =&gt; <code>themes/</code></li> <li><code>/config/www/uploads/</code> =&gt; <code>public/uploads/</code></li> </ul>"},{"location":"images/docker-bookstack/#advanced-users-full-control-over-the-env-file","title":"Advanced Users (full control over the .env file)","text":"<p>If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.</p> <p>When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.</p>"},{"location":"images/docker-bookstack/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-bookstack/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2\"\nservices:\n bookstack:\n image: lscr.io/linuxserver/bookstack\n container_name: bookstack\n environment:\n - PUID=1000\n - PGID=1000\n - APP_URL=https://bookstack.example.com\n - DB_HOST=bookstack_db\n - DB_PORT=3306\n - DB_USER=bookstack\n - DB_PASS=&lt;yourdbpass&gt;\n - DB_DATABASE=bookstackapp\n volumes:\n - ./bookstack_app_data:/config\n ports:\n - 6875:80\n restart: unless-stopped\n depends_on:\n - bookstack_db\n bookstack_db:\n image: lscr.io/linuxserver/mariadb\n container_name: bookstack_db\n environment:\n - PUID=1000\n - PGID=1000\n - MYSQL_ROOT_PASSWORD=&lt;yourdbpass&gt;\n - TZ=Europe/London\n - MYSQL_DATABASE=bookstackapp\n - MYSQL_USER=bookstack\n - MYSQL_PASSWORD=&lt;yourdbpass&gt;\n volumes:\n - ./bookstack_db_data:/config\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-bookstack/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=bookstack \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e APP_URL=yourbaseurl \\\n -e DB_HOST=yourdbhost \\\n -e DB_PORT=yourdbport \\\n -e DB_USER=yourdbuser \\\n -e DB_PASS=yourdbpass \\\n -e DB_DATABASE=bookstackapp \\\n -e QUEUE_CONNECTION= `#optional` \\\n -p 6875:80 \\\n -v /path/to/bookstack/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/bookstack:latest\n</code></pre>"},{"location":"images/docker-bookstack/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-bookstack/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> will map the container's port 80 to port 6875 on the host"},{"location":"images/docker-bookstack/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>APP_URL=yourbaseurl</code> for specifying the IP:port or URL your application will be accessed on (ie. <code>http://192.168.1.1:6875</code> or <code>https://bookstack.mydomain.com</code> <code>DB_HOST=yourdbhost</code> for specifying the database host <code>DB_PORT=yourdbport</code> for specifying the database port if not default 3306 <code>DB_USER=yourdbuser</code> for specifying the database user <code>DB_PASS=yourdbpass</code> for specifying the database password (minimum 4 characters &amp; non-alphanumeric passwords must be properly escaped.) <code>DB_DATABASE=bookstackapp</code> for specifying the database to be used <code>QUEUE_CONNECTION=</code> Set to <code>database</code> to enable async actions like sending email or triggering webhooks. See documentation."},{"location":"images/docker-bookstack/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-bookstack/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-bookstack/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-bookstack/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-bookstack/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-bookstack/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-bookstack/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it bookstack /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f bookstack\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bookstack\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bookstack:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-bookstack/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-bookstack/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull bookstack\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d bookstack\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bookstack/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/bookstack:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop bookstack\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm bookstack\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-bookstack/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-bookstack/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-bookstack.git\ncd docker-bookstack\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/bookstack:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-bookstack/#versions","title":"Versions","text":"<ul> <li>25.01.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>31.10.23: - Further sanitize sed replace.</li> <li>07.06.23: - Add mariadb-client for bookstack-system-cli support.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>01.03.23: - Add php iconv.</li> <li>19.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>16.01.23: - Wrap <code>.env</code> values in quotes.</li> <li>05.01.23: - Fix db password setting (sed escape <code>&amp;</code>).</li> <li>21.12.22: - Update db info in .env file when env vars are updated.</li> <li>10.10.22: - Remove password escape logic which caused problems for a small subset of users.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>14.03.22: - Add symlinks for theme support.</li> <li>11.07.21: - Rebase to Alpine 3.14.</li> <li>12.01.21: - Remove unused requirement, as of release 0.31.0.</li> <li>17.12.20: - Make APP_URL var required (upstream changes).</li> <li>17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>26.07.19: - Use old version of tidyhtml pending upstream fixes.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>14.06.19: - Add wkhtmltopdf to image for PDF rendering.</li> <li>20.04.19: - Rebase to Alpine 3.9, add MySQL init logic.</li> <li>22.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>20.01.19: - Added php7-curl</li> <li>04.11.18: - Added php7-ldap</li> <li>15.10.18: - Changed functionality for advanced users</li> <li>08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files</li> <li>23.09.28: - Updates pre-release</li> <li>02.07.18: - Initial Release.</li> </ul>"},{"location":"images/docker-budge/","title":"budge","text":""},{"location":"images/docker-budge/#linuxserverbudge","title":"linuxserver/budge","text":"<p>budge is an open source 'budgeting with envelopes' personal finance app.</p> <p></p>"},{"location":"images/docker-budge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/budge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-budge/#application-setup","title":"Application Setup","text":"<p>Access the web gui at http://SERVERIP:PORT</p>"},{"location":"images/docker-budge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-budge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n budge:\n image: lscr.io/linuxserver/budge:latest\n container_name: budge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/budge/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-budge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=budge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/budge/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/budge:latest\n</code></pre>"},{"location":"images/docker-budge/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-budge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-budge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-budge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-budge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-budge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-budge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-budge/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-budge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-budge/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it budge /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f budge\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' budge\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/budge:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-budge/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-budge/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull budge\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d budge\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-budge/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/budge:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop budge\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm budge\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-budge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-budge/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-budge.git\ncd docker-budge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/budge:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-budge/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>06.03.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>29.11.22: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>04.15.22: - Added NPM command to run db migrations.</li> <li>02.05.22: - Initial Release.</li> </ul>"},{"location":"images/docker-build-agent/","title":"build-agent","text":""},{"location":"images/docker-build-agent/#linuxserverbuild-agent","title":"linuxserver/build-agent","text":"<p>Used as part of the LSIO build process. Not for public consumption.</p>"},{"location":"images/docker-build-agent/#running","title":"Running","text":"<pre><code>services:\n build-agent:\n image: lscr.io/linuxserver/build-agent:latest\n privileged: true\n container_name: build-agent\n environment:\n - TZ=London/Europe\n - 'PUBLIC_KEY=&lt;jenkins public key&gt;'\n - PUID=1000\n - PGID=1000\n volumes:\n - ./docker-data:/config\n ports:\n - 2222:2222\n restart: unless-stopped\n</code></pre> <p>For x86_64 machines, run <code>docker run --rm --privileged multiarch/qemu-user-static --reset -p yes</code> on the host to enable qemu before bringing any build agent containers up.</p> <ul> <li>{ date: \"16.01.24:\", desc: \"Add yq.\" }</li> <li>{ date: \"30.04.23:\", desc: \"Initial Release.\" }</li> </ul>"},{"location":"images/docker-calibre-web/","title":"calibre-web","text":""},{"location":"images/docker-calibre-web/#linuxservercalibre-web","title":"linuxserver/calibre-web","text":"<p>Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.</p> <p>This software is a fork of library and licensed under the GPL v3 License.</p> <p></p>"},{"location":"images/docker-calibre-web/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/calibre-web:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-calibre-web/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Releases of Calibre-Web nightly \u2705 Commits to the master branch of Calibre-Web"},{"location":"images/docker-calibre-web/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>http://your-ip:8083</code></p> <p>On the initial setup screen, enter <code>/books</code> as your calibre library location.</p> <p>Default admin login: Username: admin Password: admin123</p> <p>If you lock yourself out or forget a password, you will need to specify the app.db similar to this: <code>docker exec -it calibre-web python3 /app/calibre-web/cps.py -p /config/app.db -s &lt;user&gt;:&lt;pass&gt;</code> If you fail to specify the proper db, it will appear to succeed, but it will not work.</p> <p>Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of <code>/usr/bin/unrar</code></p> <p>64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to <code>/usr/bin/ebook-convert</code></p> <p>This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to <code>/usr/bin/kepubify</code></p>"},{"location":"images/docker-calibre-web/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-calibre-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n calibre-web:\n image: lscr.io/linuxserver/calibre-web:latest\n container_name: calibre-web\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DOCKER_MODS=linuxserver/mods:universal-calibre #optional\n - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional\n volumes:\n - /path/to/data:/config\n - /path/to/calibre/library:/books\n ports:\n - 8083:8083\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-calibre-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=calibre-web \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DOCKER_MODS=linuxserver/mods:universal-calibre `#optional` \\\n -e OAUTHLIB_RELAX_TOKEN_SCOPE=1 `#optional` \\\n -p 8083:8083 \\\n -v /path/to/data:/config \\\n -v /path/to/calibre/library:/books \\\n --restart unless-stopped \\\n lscr.io/linuxserver/calibre-web:latest\n</code></pre>"},{"location":"images/docker-calibre-web/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-calibre-web/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8083</code> WebUI"},{"location":"images/docker-calibre-web/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DOCKER_MODS=linuxserver/mods:universal-calibre</code> #optional &amp; x86-64 only Adds the ability to perform ebook conversion <code>OAUTHLIB_RELAX_TOKEN_SCOPE=1</code> Optionally set this to allow Google OAUTH to work"},{"location":"images/docker-calibre-web/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where calibre-web stores the internal database and config. <code>/books</code> Where your preexisting calibre database is located."},{"location":"images/docker-calibre-web/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-calibre-web/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-calibre-web/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-calibre-web/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-calibre-web/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-calibre-web/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it calibre-web /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f calibre-web\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre-web\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre-web:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre-web/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-calibre-web/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull calibre-web\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d calibre-web\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre-web/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/calibre-web:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop calibre-web\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm calibre-web\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre-web/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-calibre-web/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-calibre-web.git\ncd docker-calibre-web\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/calibre-web:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-calibre-web/#versions","title":"Versions","text":"<ul> <li>17.10.23: - Remove some packages that are required by the calibre mod but not the base container.</li> <li>07.10.23: - Install unrar from linuxserver repo. Switch to Python virtual environment.</li> <li>13.04.23: - Deprecate armhf.</li> <li>27.03.23: - Add cmake as build dep for Levenshtein.</li> <li>27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev.</li> <li>20.12.22: - Improve init script and prevent harmless error.</li> <li>19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies.</li> <li>04.11.21: - Update pip arguments to ignore distro installed packages.</li> <li>24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support.</li> <li>17.05.21: - Add linuxserver wheel index.</li> <li>10.02.21: - Add libxrandr2</li> <li>25.01.21: - Add nightly tag</li> <li>19.01.21: - Add python3-pkg-resources</li> <li>13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.</li> <li>12.10.20: - Add libxi6</li> <li>12.07.20: - Add kepubify for arm64v8</li> <li>05.06.20: - Add kepubify for x86-64 and arm32v7</li> <li>06.05.20: - Add libxslt1.1 and update ImageMagick policy</li> <li>19.01.20: - Adding LDAP libs.</li> <li>13.10.19: - Migrate to Python3.</li> <li>01.08.19: - Add libxcomposite1.</li> <li>13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar.</li> <li>02.06.19: - Rebase to Ubuntu Bionic &amp; add Gdrive support.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>03.01.19: - Remove guest user from default app.db.</li> <li>16.08.18: - Rebase to alpine 3.8.</li> <li>03.07.18: - New build pushed, all versions below <code>67</code> have vulnerability.</li> <li>05.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>06.12.17: - Rebase to alpine 3.7.</li> <li>27.11.17: - Use cpu core counting routine to speed up build time.</li> <li>24.07.17: - Curl version for imagemagick.</li> <li>17.07.17: - Initial release.</li> </ul>"},{"location":"images/docker-calibre/","title":"calibre","text":""},{"location":"images/docker-calibre/#linuxservercalibre","title":"linuxserver/calibre","text":"<p>Calibre is a powerful and easy to use e-book manager. Users say it's outstanding and a must-have. It'll allow you to do nearly everything and it takes things a step beyond normal e-book software. It's also completely free and open source and great for both casual users and computer experts.</p> <p></p>"},{"location":"images/docker-calibre/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/calibre:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-calibre/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Latest Calibre releases v4 \u2705 Calibre v4 releases (x86_64 only)"},{"location":"images/docker-calibre/#application-setup","title":"Application Setup","text":"<p>This image sets up the calibre desktop app and makes its interface available via KasmVNC server in the browser. The interface is available at <code>http://your-ip:8080</code> or <code>https://your-ip:8181</code>.</p> <p>By default, there is no password set for the main gui. Optional environment variable <code>PASSWORD</code> will allow setting a password for the user <code>abc</code>, via http auth.</p> <p>Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to <code>8081</code> although it will then be available at the host mapped port for external access.</p>"},{"location":"images/docker-calibre/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-calibre/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 8080. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 8181. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-calibre/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-calibre/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-calibre/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 8181 needs to be used. If using a reverse proxy to port 8080 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-calibre/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-calibre/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n calibre:\n image: lscr.io/linuxserver/calibre:latest\n container_name: calibre\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PASSWORD= #optional\n - CLI_ARGS= #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8080:8080\n - 8181:8181\n - 8081:8081\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-calibre/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=calibre \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PASSWORD= `#optional` \\\n -e CLI_ARGS= `#optional` \\\n -p 8080:8080 \\\n -p 8181:8181 \\\n -p 8081:8081 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/calibre:latest\n</code></pre>"},{"location":"images/docker-calibre/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-calibre/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Calibre desktop gui. <code>8181</code> Calibre desktop gui HTTPS. <code>8081</code> Calibre webserver gui."},{"location":"images/docker-calibre/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PASSWORD=</code> Optionally set a password for the gui. <code>CLI_ARGS=</code> Optionally pass cli start arguments to calibre."},{"location":"images/docker-calibre/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where calibre should store its database and library."},{"location":"images/docker-calibre/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker."},{"location":"images/docker-calibre/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-calibre/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-calibre/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-calibre/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-calibre/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it calibre /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f calibre\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-calibre/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull calibre\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d calibre\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/calibre:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop calibre\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm calibre\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calibre/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-calibre/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-calibre.git\ncd docker-calibre\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/calibre:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-calibre/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>31.01.24: - Fix fullscreen on start.</li> <li>17.11.23: - Install libxcb-cursor0 for v7 support.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>19.10.22: - Set the window title to <code>Calibre</code>. Remove websocat as it is now handled properly in the baseimage.</li> <li>18.10.22: - Deprecate Arch branch.</li> <li>07.10.22: - Start calibre window maximized.</li> <li>16.09.22: - Rebase to jammy.</li> <li>24.07.22: - Add arm64 build for master branch.</li> <li>11.07.22: - Update dependencies for Calibre 6.</li> <li>28.05.22: - Rebase to focal.</li> <li>31.03.22: - Fix umask.</li> <li>28.02.22: - Add speech support to bionic image.</li> <li>05.01.22: - Add arch branch for arm platforms.</li> <li>20.04.21: - Fix the HOME folder.</li> <li>19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables.</li> <li>18.04.21: - Start calibre on container start rather than gui connect.</li> <li>15.04.21: - Rebase to rdesktop-web baseimage. Deprecate <code>GUAC_USER</code> and <code>GUAC_PASS</code> env vars. Existing users can set the new var <code>PASSWORD</code> for the user <code>abc</code>.</li> <li>25.09.20: - Switch to python3, add various new dependencies for calibre 5.0.</li> <li>10.05.19: - Add new env var <code>CLI_ARGS</code> to pass start arguments to calibre.</li> <li>18.03.19: - Let Calibre access environment variables, add optional umask setting.</li> <li>23.10.19: - Remove reccomended deps and zenity for character compatibility.</li> <li>18.10.19: - Add python-xdg.</li> <li>08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding.</li> <li>04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4.</li> <li>08.08.19: - Add zenity for international character support in dialog boxes.</li> <li>12.07.19: - Download binary from calibre website instead of github.</li> <li>29.04.19: - Initial release.</li> </ul>"},{"location":"images/docker-calligra/","title":"calligra","text":""},{"location":"images/docker-calligra/#linuxservercalligra","title":"linuxserver/calligra","text":"<p>Calligra is an office and graphic art suite by KDE. It is available for desktop PCs, tablet computers, and smartphones. It contains applications for word processing, spreadsheets, presentation, vector graphics, and editing databases.</p> <p></p>"},{"location":"images/docker-calligra/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/calligra:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-calligra/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-calligra/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-calligra/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-calligra/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-calligra/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-calligra/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-calligra/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-calligra/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n calligra:\n image: lscr.io/linuxserver/calligra:latest\n container_name: calligra\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-calligra/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=calligra \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/calligra:latest\n</code></pre>"},{"location":"images/docker-calligra/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-calligra/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Calligra desktop gui. <code>3001</code> Calligra desktop gui HTTPS."},{"location":"images/docker-calligra/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-calligra/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-calligra/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-calligra/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-calligra/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-calligra/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-calligra/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-calligra/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it calligra /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f calligra\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calligra\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calligra:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-calligra/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-calligra/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull calligra\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d calligra\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calligra/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/calligra:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop calligra\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm calligra\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-calligra/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-calligra/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-calligra.git\ncd docker-calligra\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/calligra:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-calligra/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>07.12.23: - Initial Release.</li> </ul>"},{"location":"images/docker-changedetection.io/","title":"changedetection.io","text":""},{"location":"images/docker-changedetection.io/#linuxserverchangedetectionio","title":"linuxserver/changedetection.io","text":"<p>Changedetection.io provides free, open-source web page monitoring, notification and change detection.</p> <p></p>"},{"location":"images/docker-changedetection.io/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/changedetection.io:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-changedetection.io/#application-setup","title":"Application Setup","text":"<p>Webui is accessible at http://SERVERIP:PORT</p> <p>Please note that as of version 0.45.16 this image contains the Playwright content fetcher.</p> <p>For more info read the wiki.</p>"},{"location":"images/docker-changedetection.io/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-changedetection.io/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n changedetection.io:\n image: lscr.io/linuxserver/changedetection.io:latest\n container_name: changedetection\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - BASE_URL= #optional\n - PLAYWRIGHT_DRIVER_URL= #optional\n volumes:\n - /path/to/changedetection/config:/config\n ports:\n - 5000:5000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-changedetection.io/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=changedetection.io \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e BASE_URL= `#optional` \\\n -e PLAYWRIGHT_DRIVER_URL= `#optional` \\\n -p 5000:5000 \\\n -v /path/to/changedetection.io/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/changedetection.io:latest\n</code></pre>"},{"location":"images/docker-changedetection.io/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-changedetection.io/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5000</code> WebUI"},{"location":"images/docker-changedetection.io/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>BASE_URL=</code> Specify the full URL (including protocol) when running behind a reverse proxy <code>PLAYWRIGHT_DRIVER_URL=</code> Specify the full URL to your chrome driver instance. See the wiki for details."},{"location":"images/docker-changedetection.io/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-changedetection.io/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-changedetection.io/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-changedetection.io/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-changedetection.io/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-changedetection.io/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-changedetection.io/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it changedetection.io /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f changedetection.io\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' changedetection.io\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/changedetection.io:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-changedetection.io/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-changedetection.io/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull changedetection.io\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d changedetection.io\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-changedetection.io/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/changedetection.io:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop changedetection.io\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm changedetection.io\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-changedetection.io/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-changedetection.io/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-changedetection.io.git\ncd docker-changedetection.io\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/changedetection.io:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-changedetection.io/#versions","title":"Versions","text":"<ul> <li>09.03.24: - Build Playwright from source because Microsoft's build and packaging process is awful.</li> <li>08.03.24: - Build Playwright-python from source, add libjpeg.</li> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>10.08.23: - Add poppler-utils for pdf conversion tools.</li> <li>11.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>09.10.22: - Add make as build dep to fix pip jq build on armhf.</li> <li>07.08.22: - Initial release.</li> </ul>"},{"location":"images/docker-chromium/","title":"chromium","text":""},{"location":"images/docker-chromium/#linuxserverchromium","title":"linuxserver/chromium","text":"<p>Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.</p> <p></p>"},{"location":"images/docker-chromium/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/chromium:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-chromium/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-chromium/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-chromium/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-chromium/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-chromium/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-chromium/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-chromium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n chromium:\n image: lscr.io/linuxserver/chromium:latest\n container_name: chromium\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CHROME_CLI=https://www.linuxserver.io/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-chromium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=chromium \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CHROME_CLI=https://www.linuxserver.io/ `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/chromium:latest\n</code></pre>"},{"location":"images/docker-chromium/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-chromium/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Chromium desktop gui. <code>3001</code> HTTPS Chromium desktop gui."},{"location":"images/docker-chromium/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CHROME_CLI=https://www.linuxserver.io/</code> Specify one or multiple Chromium CLI flags, this string will be passed to the application in full."},{"location":"images/docker-chromium/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-chromium/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for any modern website to function like youtube. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Chromium runs in no-sandbox test mode without it."},{"location":"images/docker-chromium/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-chromium/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-chromium/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-chromium/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-chromium/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it chromium /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f chromium\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chromium\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chromium:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-chromium/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-chromium/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull chromium\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d chromium\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-chromium/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/chromium:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop chromium\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm chromium\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-chromium/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-chromium/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-chromium.git\ncd docker-chromium\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/chromium:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-chromium/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>08.01.24: - Fix re-launch issue for chromium by purging temp files on launch.</li> <li>29.12.23: - Rebase to Debian Bookworm.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>01.04.23: - Preserve arguments passed to Chromium and restructure to use wrapper.</li> <li>18.03.23: - Initial release.</li> </ul>"},{"location":"images/docker-ci/","title":"ci","text":""},{"location":"images/docker-ci/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at <code>#linuxserver.io</code> more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast"},{"location":"images/docker-ci/#linuxserverci","title":"linuxserver/ci","text":"<p>This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports</p> <p>The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built.</p>"},{"location":"images/docker-ci/#usage","title":"Usage","text":"<p>The container can be run locally, but it is meant to be integrated into the LinuxServer build process:</p> <pre><code>sudo docker run --rm -i \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\n-v /host/path:/ci/output:rw `#Optional, will contain all the files the container creates.` \\\n-e IMAGE=\"linuxserver/&lt;dockerimage&gt;\" \\\n-e TAGS=\"&lt;single tag or array seperated by |&gt;\" \\\n-e META_TAG=&lt;manifest main dockerhub tag&gt; \\\n-e BASE=&lt;alpine or debian based distro&gt; \\\n-e SECRET_KEY=&lt;S3 secret&gt; \\\n-e ACCESS_KEY=&lt;S3 key&gt; \\\n-e DOCKER_ENV=\"&lt;optional, Array of env vars seperated by | IE test=test|test2=test2 or single var. Defaults to ''&gt;\" \\\n-e WEB_AUTH=\"&lt;optional, format user:passord. Defaults to 'user:password'&gt;\" \\\n-e WEB_PATH=\"&lt;optional, format /yourpath&gt;. Defaults to ''.\" \\\n-e S3_REGION=&lt;optional, custom S3 Region. Defaults to 'us-east-1'&gt; \\\n-e S3_BUCKET=&lt;optional, custom S3 Bucket. Defaults to 'ci-tests.linuxserver.io'&gt; \\\n-e WEB_SCREENSHOT_DELAY=&lt;optional, time in seconds to delay before taking screenshot. Defaults to '30'&gt;\n-e WEB_SCREENSHOT=&lt;optional, set to false if not a web app. Defaults to 'false'&gt; \\\n-e DELAY_START=&lt;optional, time in seconds to delay before taking screenshot. Defaults to '5'&gt; \\\n-e PORT=&lt;optional, port web application listens on internal docker port. Defaults to '80'&gt; \\\n-e SSL=&lt;optional , use ssl for the screenshot true/false. Defaults to 'false'&gt; \\\n-e CI_S6_VERBOSITY=&lt;optional, Updates the S6_VERBOSITY env. Defaults to '2'&gt; \\\n-e DOCKER_LOGS_DELAY=&lt;optional, How long to wait in seconds while tailing the container logs. Defaults to '300'&gt; \\\n-e DRY_RUN=&lt;optional, Set to 'true' when you don't want to upload files to S3 when testing&gt;\n-t lsiodev/ci:latest \\\npython3 test_build.py\n</code></pre> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-code-server/","title":"code-server","text":""},{"location":"images/docker-code-server/#linuxservercode-server","title":"linuxserver/code-server","text":"<p>Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.</p> <p></p>"},{"location":"images/docker-code-server/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/code-server:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-code-server/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>http://&lt;your-ip&gt;:8443</code>. For github integration, drop your ssh key in to <code>/config/.ssh</code>. Then open a terminal from the top menu and set your github username and email via the following commands</p> <pre><code>git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n</code></pre>"},{"location":"images/docker-code-server/#hashed-code-server-password","title":"Hashed code-server password","text":"<p>How to create the hashed password.</p>"},{"location":"images/docker-code-server/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-code-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n code-server:\n image: lscr.io/linuxserver/code-server:latest\n container_name: code-server\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PASSWORD=password #optional\n - HASHED_PASSWORD= #optional\n - SUDO_PASSWORD=password #optional\n - SUDO_PASSWORD_HASH= #optional\n - PROXY_DOMAIN=code-server.my.domain #optional\n - DEFAULT_WORKSPACE=/config/workspace #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 8443:8443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-code-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=code-server \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PASSWORD=password `#optional` \\\n -e HASHED_PASSWORD= `#optional` \\\n -e SUDO_PASSWORD=password `#optional` \\\n -e SUDO_PASSWORD_HASH= `#optional` \\\n -e PROXY_DOMAIN=code-server.my.domain `#optional` \\\n -e DEFAULT_WORKSPACE=/config/workspace `#optional` \\\n -p 8443:8443 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/code-server:latest\n</code></pre>"},{"location":"images/docker-code-server/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-code-server/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8443</code> web gui"},{"location":"images/docker-code-server/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PASSWORD=password</code> Optional web gui password, if <code>PASSWORD</code> or <code>HASHED_PASSWORD</code> is not provided, there will be no auth. <code>HASHED_PASSWORD=</code> Optional web gui password, overrides <code>PASSWORD</code>, instructions on how to create it is below. <code>SUDO_PASSWORD=password</code> If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. <code>SUDO_PASSWORD_HASH=</code> Optionally set sudo password via hash (takes priority over <code>SUDO_PASSWORD</code> var). Format is <code>$type$salt$hashed</code>. <code>PROXY_DOMAIN=code-server.my.domain</code> If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation <code>DEFAULT_WORKSPACE=/config/workspace</code> If this optional variable is set, code-server will open this directory by default"},{"location":"images/docker-code-server/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-code-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-code-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-code-server/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-code-server/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-code-server/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-code-server/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it code-server /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f code-server\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' code-server\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/code-server:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-code-server/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-code-server/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull code-server\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d code-server\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-code-server/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/code-server:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop code-server\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm code-server\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-code-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-code-server/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-code-server.git\ncd docker-code-server\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/code-server:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-code-server/#versions","title":"Versions","text":"<ul> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>05.10.22: - Install recommended deps to maintain parity with the older images.</li> <li>29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip <code>/config/workspace</code> contents.</li> <li>20.02.22: - Install using the official tarballs.</li> <li>29.12.21: - Add <code>install-extension</code> as a helper for mods to install extensions.</li> <li>06.12.21: - Add <code>DEFAULT_WORKSPACE</code> env var.</li> <li>29.11.21: - Rebase to Ubuntu focal.</li> <li>16.09.21: - Fix slow <code>chown</code> on large workspace (contents of workspace folder no longer chowned).</li> <li>11.07.21: - Bump node to 14 to fix builds</li> <li>08.05.21: - Fix doc link</li> <li>04.02.20: - Allow setting gui password via hash using env var <code>HASHED_PASSWORD</code>.</li> <li>23.12.20: - Allow setting sudo password via hash using env var <code>SUDO_PASSWORD_HASH</code>.</li> <li>29.05.20: - Add --domain-proxy support.</li> <li>21.05.20: - Shrink images, install via yarn, fix arm32v7 build.</li> <li>18.05.20: - Switch to multi-arch images, install via npm.</li> <li>29.04.20: - Update start arguments.</li> <li>01.04.20: - Structural changes required for v3.</li> <li>17.01.20: - Fix artifact url retrieval from github.</li> <li>24.10.19: - Upgrade to v2 builds.</li> <li>28.09.19: - Update project logo.</li> <li>21.09.19: - Add development builds/tag.</li> <li>09.07.19: - Add optional sudo access.</li> <li>01.07.19: - Add nano.</li> <li>24.06.19: - Initial Release.</li> </ul>"},{"location":"images/docker-cops/","title":"cops","text":""},{"location":"images/docker-cops/#linuxservercops","title":"linuxserver/cops","text":"<p>Cops by S\u00e9bastien Lucas, now maintained by MikesPub, stands for Calibre OPDS (and HTML) Php Server.</p> <p>COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices.</p> <p>Changes in your Calibre library are reflected immediately in your COPS pages.</p> <p>See : COPS's home for more details.</p> <p>Don't forget to check the Wiki.</p>"},{"location":"images/docker-cops/#why-taken-from-the-authors-site","title":"Why? (taken from the author's site)","text":"<p>In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.</p> <p>That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).</p> <p>I initially thought of Calibre2OPDS but as it generate static file no search was possible.</p> <p>Later I added an simple HTML catalog that should be usable on my Kobo.</p> <p>So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code.</p> <p>If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.</p> <p></p>"},{"location":"images/docker-cops/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/cops:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-cops/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>http://&lt;docker host ip&gt;:80</code>. For connecting via OPDS on a mobile device use <code>http://&lt;docker host ip&gt;:80/feed.php</code>. It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above).</p> <p>The linuxserver version gives you access to <code>config_local.php</code> in <code>/config</code> to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.</p>"},{"location":"images/docker-cops/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-cops/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n cops:\n image: lscr.io/linuxserver/cops:latest\n container_name: cops\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/cops/config:/config\n - /path/to/data:/books\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-cops/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=cops \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/cops/config:/config \\\n -v /path/to/data:/books \\\n --restart unless-stopped \\\n lscr.io/linuxserver/cops:latest\n</code></pre>"},{"location":"images/docker-cops/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-cops/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> HTTP WebUI <code>443</code> HTTPS WebUI"},{"location":"images/docker-cops/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-cops/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> COPS Application Data. <code>/books</code> Calibre metadata.db location."},{"location":"images/docker-cops/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-cops/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-cops/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-cops/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-cops/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-cops/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it cops /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f cops\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cops\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cops:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-cops/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-cops/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull cops\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d cops\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-cops/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/cops:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop cops\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm cops\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-cops/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-cops/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-cops.git\ncd docker-cops\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/cops:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-cops/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>25.12.23: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>11.08.23: - Undeprecate and add new branch with mikespub fork which is actively maintained.</li> <li>15.05.23: - Deprecate due to upstream dev abandonment of project.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>19.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>22.11.20: - Pin composer version to 1.10.17.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>27.02.19: - Upgrade packages during install to prevent mismatch with baseimage.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>14.01.19: - Add multiarch and pipeline logic.</li> <li>21.08.18: - Rebase to alpine 3.8.</li> <li>02.07.18: - Add php7-ctype dependency.</li> <li>08.01.18: - Rebase to alpine 3.7.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>03.04.17: - Add composer packages, reduce layers.</li> <li>02.04.17: - Updated to version 1.1.0.</li> <li>05.02.17: - Updated to Alpine 3.5 &amp; PHP7.</li> <li>24.10.16: - Updated to implement user based config.</li> <li>24.10.16: - Updated to version 1.0.1.</li> <li>14.10.16: - Add version layer information.</li> <li>28.09.16: - Add php5-zlib.</li> <li>11.09.16: - Add layer badges to README.</li> <li>29.08.16: - Add php5-opcache.</li> <li>28.08.16: - Add badges to README.</li> <li>12.08.16: - Initial Release.</li> </ul>"},{"location":"images/docker-cura/","title":"cura","text":""},{"location":"images/docker-cura/#linuxservercura","title":"linuxserver/cura","text":"<p>UltiMaker Cura is free, easy-to-use 3D printing software trusted by millions of users. Fine-tune your 3D model with 400+ settings for the best slicing and printing results.</p> <p></p>"},{"location":"images/docker-cura/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/cura:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-cura/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-cura/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-cura/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-cura/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-cura/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-cura/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-cura/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-cura/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n cura:\n image: lscr.io/linuxserver/cura:latest\n container_name: cura\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-cura/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=cura \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/cura:latest\n</code></pre>"},{"location":"images/docker-cura/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-cura/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Cura desktop gui. <code>3001</code> Cura desktop gui HTTPS."},{"location":"images/docker-cura/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-cura/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-cura/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-cura/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-cura/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-cura/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-cura/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-cura/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it cura /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f cura\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cura\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cura:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-cura/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-cura/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull cura\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d cura\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-cura/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/cura:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop cura\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm cura\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-cura/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-cura/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-cura.git\ncd docker-cura\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/cura:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-cura/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>15.11.23: - Initial release.</li> </ul>"},{"location":"images/docker-daapd/","title":"daapd","text":""},{"location":"images/docker-daapd/#linuxserverdaapd","title":"linuxserver/daapd","text":"<p>Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.</p> <p></p>"},{"location":"images/docker-daapd/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/daapd:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-daapd/#application-setup","title":"Application Setup","text":"<p>Map your music folder, open up iTunes on the same LAN to see your music there.</p> <p>The web interface is available at <code>http://&lt;your ip&gt;:3689</code></p> <p>For further setup options of remotes etc, check out the daapd website, Owntone.</p>"},{"location":"images/docker-daapd/#enable-spotify-connect-server","title":"Enable spotify connect server","text":"<p>Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts):</p> <pre><code>mkfifo &lt;music_folder&gt;/spotify\n</code></pre> <p>The spotify connect server should show up as the 'forked-daapd' device in your Spotify application.</p> <p>It is recommended to set the <code>pipe_autostart</code> option to <code>true</code> in your forked-daapd config.</p>"},{"location":"images/docker-daapd/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-daapd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n daapd:\n image: lscr.io/linuxserver/daapd:latest\n container_name: daapd\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/daapd/data:/config\n - /path/to/music:/music\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-daapd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=daapd \\\n --net=host \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/daapd/data:/config \\\n -v /path/to/music:/music \\\n --restart unless-stopped \\\n lscr.io/linuxserver/daapd:latest\n</code></pre>"},{"location":"images/docker-daapd/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-daapd/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-daapd/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Shares host networking with container."},{"location":"images/docker-daapd/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-daapd/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where daapd server stores its config and dbase files. <code>/music</code> Map to your music folder."},{"location":"images/docker-daapd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-daapd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-daapd/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-daapd/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-daapd/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-daapd/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it daapd /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f daapd\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' daapd\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/daapd:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-daapd/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-daapd/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull daapd\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d daapd\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-daapd/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/daapd:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop daapd\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm daapd\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-daapd/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-daapd/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-daapd.git\ncd docker-daapd\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/daapd:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-daapd/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>25.08.23: - Rebase to Alpine 3.18, remove abandoned libspotify libs.</li> <li>05.07.23: - Deprecate armhf. As announced here</li> <li>23.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>31.05.22: - Make sure the user has access to the audio device.</li> <li>31.05.22: - Add new deps, flex and bison.</li> <li>12.02.22: - Rebase to Alpine 3.15.</li> <li>14.09.21: - Enabled librespot. Disabled spotify on ARMv7</li> <li>10.07.21: - Change of paths to work with the new package name, OwnTone.</li> <li>02.04.21: - Update upstream repo, again.</li> <li>30.03.21: - Update upstream repo.</li> <li>06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>14.01.19: - Add pipeline logic and multi arch.</li> <li>20.08.18: - Rebase to alpine linux 3.8.</li> <li>09.06.18: - Use buildstage and update dependencies.</li> <li>05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26.</li> <li>25.02.18: - Query version before pull and build latest release.</li> <li>03.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>07.12.17: - Rebase to alpine linux 3.7.</li> <li>03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes.</li> <li>26.05.17: - Rebase to alpine linux 3.6.</li> <li>06.02.17: - Rebase to alpine linux 3.5.</li> <li>10.01.17: - Bump to 24.2.</li> <li>14.10.16: - Add version layer information.</li> <li>17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository.</li> <li>28.02.16: - Add chromecast support, bump dependency versions.</li> <li>04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set.</li> <li>17.12.15: - Add in spotify support.</li> <li>25.11.15: - Initial Release.</li> </ul>"},{"location":"images/docker-darktable/","title":"darktable","text":""},{"location":"images/docker-darktable/#linuxserverdarktable","title":"linuxserver/darktable","text":"<p>darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.</p> <p></p>"},{"location":"images/docker-darktable/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/darktable:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-darktable/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-darktable/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-darktable/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-darktable/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-darktable/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=noto-fonts-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-darktable/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-darktable/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-darktable/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n darktable:\n image: lscr.io/linuxserver/darktable:latest\n container_name: darktable\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-darktable/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=darktable \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/darktable:latest\n</code></pre>"},{"location":"images/docker-darktable/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-darktable/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Darktable desktop gui. <code>3001</code> Darktable desktop gui HTTPS."},{"location":"images/docker-darktable/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-darktable/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and images"},{"location":"images/docker-darktable/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-darktable/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-darktable/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-darktable/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-darktable/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-darktable/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it darktable /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f darktable\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' darktable\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/darktable:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-darktable/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-darktable/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull darktable\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d darktable\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-darktable/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/darktable:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop darktable\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm darktable\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-darktable/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-darktable/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-darktable.git\ncd docker-darktable\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/darktable:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-darktable/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>21.01.24: - Rebase to Arch as Alpine not longer offers aarch64.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>31.12.21: - Rebase to Alpine 3.15.</li> <li>01.10.21: - Rebase to Alpine 3.14.</li> <li>07.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-davos/","title":"davos","text":""},{"location":"images/docker-davos/#linuxserverdavos","title":"linuxserver/davos","text":"<p>Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.</p> <p></p>"},{"location":"images/docker-davos/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/davos:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-davos/#application-setup","title":"Application Setup","text":"<p>The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page.</p>"},{"location":"images/docker-davos/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-davos/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n davos:\n image: lscr.io/linuxserver/davos:latest\n container_name: davos\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/davos/data:/config\n - /path/to/downloads/folder:/download\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-davos/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=davos \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/davos/data:/config \\\n -v /path/to/downloads/folder:/download \\\n --restart unless-stopped \\\n lscr.io/linuxserver/davos:latest\n</code></pre>"},{"location":"images/docker-davos/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-davos/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> This is the default port that davos runs under"},{"location":"images/docker-davos/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-davos/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> davos's config location. This is where it stores its database file and logs. <code>/download</code> davos's file download location"},{"location":"images/docker-davos/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-davos/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-davos/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-davos/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-davos/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-davos/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it davos /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f davos\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' davos\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/davos:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-davos/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-davos/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull davos\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d davos\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-davos/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/davos:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop davos\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm davos\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-davos/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-davos/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-davos.git\ncd docker-davos\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/davos:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-davos/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>15.01.22: - Rebasing to alpine 3.15.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.03.19: - Updating runtime deps due to change in OpenJRE.</li> <li>08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>18.11.16: - Initial Release.</li> </ul>"},{"location":"images/docker-ddclient/","title":"ddclient","text":""},{"location":"images/docker-ddclient/#linuxserverddclient","title":"linuxserver/ddclient","text":"<p>Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.</p> <p></p>"},{"location":"images/docker-ddclient/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ddclient:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ddclient/#application-setup","title":"Application Setup","text":"<p>Edit the <code>ddclient.conf</code> file found in your <code>/config</code> volume (also see official ddclient documentation). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config.</p>"},{"location":"images/docker-ddclient/#get-dynamic-ip-from-fritzbox","title":"Get dynamic IP from Fritz.Box","text":"<p>If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to <code>/config/ddclient.conf</code>: <pre><code>use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox\n</code></pre></p>"},{"location":"images/docker-ddclient/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ddclient/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ddclient:\n image: lscr.io/linuxserver/ddclient:latest\n container_name: ddclient\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/ddclient/config:/config\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ddclient/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ddclient \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/ddclient/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ddclient:latest\n</code></pre>"},{"location":"images/docker-ddclient/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ddclient/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-ddclient/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-ddclient/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-ddclient/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ddclient/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ddclient/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ddclient/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-ddclient/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ddclient/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ddclient /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ddclient\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ddclient\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ddclient:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ddclient/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ddclient/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ddclient\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ddclient\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ddclient/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ddclient:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ddclient\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ddclient\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ddclient/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ddclient/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ddclient.git\ncd docker-ddclient\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ddclient:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ddclient/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.08.23: - Rebase to Alpine 3.18.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>20.10.22: - Update build instructions for 3.10.0. Update default <code>ddclient.conf</code>.</li> <li>15.01.22: - Rebase to Alpine 3.15</li> <li>15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo</li> <li>08.03.21: - Added bind-tools to provide nsupdate</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>08.02.20: - Ingest from Github.</li> <li>06.02.19: - Fix permissions.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>10.03.19: - Add perl-io-socket-inet6 for ipv6 support.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>22.08.18: - Rebase to alpine 3.8.</li> <li>10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line <code>server=www.cloudflare.com</code> from your <code>ddclient.conf</code>.</li> <li>07.12.17: - Rebase to alpine 3.7.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>10.02.17: - Rebase to alpine 3.5.</li> <li>26.11.16: - Update README to new standard and add icon and other small details.</li> <li>29.08.16: - Initial release.</li> </ul>"},{"location":"images/docker-deluge/","title":"deluge","text":""},{"location":"images/docker-deluge/#linuxserverdeluge","title":"linuxserver/deluge","text":"<p>Deluge is a lightweight, Free Software, cross-platform BitTorrent client.</p> <ul> <li>Full Encryption</li> <li>WebUI</li> <li>Plugin System</li> <li>Much more...</li> </ul> <p></p>"},{"location":"images/docker-deluge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/deluge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-deluge/#application-setup","title":"Application Setup","text":"<p>The admin interface is available at <code>http://SERVER-IP:8112</code> with a default user/password of admin/deluge.</p> <p>To change the password (recommended) log in to the web interface and go to Preferences-&gt;Interface-&gt;Password.</p> <p>Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences-&gt;Network, otherwise random ports will be used.</p>"},{"location":"images/docker-deluge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-deluge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n deluge:\n image: lscr.io/linuxserver/deluge:latest\n container_name: deluge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DELUGE_LOGLEVEL=error #optional\n volumes:\n - /path/to/deluge/config:/config\n - /path/to/your/downloads:/downloads\n ports:\n - 8112:8112\n - 6881:6881\n - 6881:6881/udp\n - 58846:58846 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-deluge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=deluge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DELUGE_LOGLEVEL=error `#optional` \\\n -p 8112:8112 \\\n -p 6881:6881 \\\n -p 6881:6881/udp \\\n -p 58846:58846 `#optional` \\\n -v /path/to/deluge/config:/config \\\n -v /path/to/your/downloads:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/deluge:latest\n</code></pre>"},{"location":"images/docker-deluge/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-deluge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8112</code> Port for webui <code>6881</code> Inbound torrent traffic (See App Setup) <code>6881/udp</code> Inbound torrent traffic (See App Setup) <code>58846</code> Default deluged port for thin client connectivity"},{"location":"images/docker-deluge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DELUGE_LOGLEVEL=error</code> set the loglevel output when running Deluge, default is info for deluged and warning for delgued-web"},{"location":"images/docker-deluge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> deluge configs <code>/downloads</code> torrent download directory"},{"location":"images/docker-deluge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-deluge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-deluge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-deluge/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-deluge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-deluge/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it deluge /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f deluge\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' deluge\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/deluge:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-deluge/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-deluge/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull deluge\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d deluge\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-deluge/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/deluge:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop deluge\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm deluge\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-deluge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-deluge/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-deluge.git\ncd docker-deluge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/deluge:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-deluge/#versions","title":"Versions","text":"<ul> <li>26.12.23: - Replace source for GeoIP database.</li> <li>07.12.23: - Add optional port 58846 to readme for thin client connectivity.</li> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>30.06.23: - Bump unrar to 6.2.8, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>29.11.22: - Restore geoip using py3-geoip as an interim measure.</li> <li>24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2.</li> <li>22.11.22: - Update GeoIP URL for new IPFS domain.</li> <li>29.08.22: - Rebase to Alpine Edge again to follow latest releases.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>16.06.22: - Rebase to Alpine 3.16 from edge.</li> <li>22.02.22: - Rebase to Alpine, config on first startup, add GeoIP.</li> <li>15.01.22: - Rebase to Focal.</li> <li>07.06.21: - Remove host networking from readme examples</li> <li>23.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>09.05.19: - Add python3 requests and future modules.</li> <li>24.08.19: - Add ability to set LogLevel for Deluge.</li> <li>09.06.19: - Update to 2.x using deluge ppa.</li> <li>02.05.19: - Install full version of 7zip.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>15.11.18: - Add deluge-console.</li> <li>11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic.</li> <li>09.04.18: - update to libressl2.7-libssl.</li> <li>29.03.18: - Rebase to alpine edge.</li> <li>07.12.17: - Rebase to alpine 3.7.</li> <li>20.11.17: - Change libressl2.6-libssl repo.</li> <li>01.07.17: - Add curl package.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>29.04.17: - Add variable for user defined umask.</li> <li>28.04.17: - update to libressl2.5-libssl.</li> <li>28.12.16: - Rebase to alpine 3.5 baseimage.</li> <li>17.11.16: - Rebase to edge baseimage.</li> <li>13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs</li> <li>30.09.16: - Fix umask.</li> <li>09.09.16: - Add layer badges to README.</li> <li>30.08.16: - Use pip packages for some critical dependencies.</li> <li>28.08.16: - Add badges to README.</li> <li>15.08.16: - Rebase to alpine linux.</li> <li>09.11.15: - Add unrar and unzip</li> <li>15.10.15: - Initial Release.</li> </ul>"},{"location":"images/docker-digikam/","title":"digikam","text":""},{"location":"images/docker-digikam/#linuxserverdigikam","title":"linuxserver/digikam","text":"<p>digiKam: Professional Photo Management with the Power of Open Source</p> <p></p>"},{"location":"images/docker-digikam/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/digikam:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-digikam/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-digikam/#mysql-internal","title":"Mysql Internal","text":"<p>When using mysql internal mode for the database you will need to click on \"Find\" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open.</p> <p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-digikam/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-digikam/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-digikam/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-digikam/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=noto-fonts-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-digikam/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-digikam/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-digikam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n digikam:\n image: lscr.io/linuxserver/digikam:latest\n container_name: digikam\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000 #optional\n - 3001:3001 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-digikam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=digikam \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -p 3000:3000 `#optional` \\\n -p 3001:3001 `#optional` \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/digikam:latest\n</code></pre>"},{"location":"images/docker-digikam/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-digikam/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> digiKam desktop gui <code>3001</code> digiKam desktop gui HTTPS"},{"location":"images/docker-digikam/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBFOLDER=/</code> Specify a subfolder to use with reverse proxies, IE <code>/subfolder/</code>"},{"location":"images/docker-digikam/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores database."},{"location":"images/docker-digikam/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-digikam/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-digikam/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-digikam/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-digikam/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-digikam/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it digikam /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f digikam\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' digikam\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/digikam:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-digikam/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-digikam/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull digikam\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d digikam\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-digikam/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/digikam:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop digikam\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm digikam\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-digikam/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-digikam/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-digikam.git\ncd docker-digikam\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/digikam:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-digikam/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>05.09.23: - Add openexr dependency.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>20.01.23: - Added breeze-icons package for icon support.</li> <li>21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward.</li> <li>20.10.22: - Migrate to s6v3.</li> <li>07.03.22: - Add Exiftool and firefox for image exports.</li> <li>20.02.22: - Add MariaDB, expand documentation.</li> <li>15.02.22: - Rebase to Arch.</li> <li>27.12.21: - Rebase to focal to resolve dependency issues.</li> <li>27.03.21: - Download link fixed.</li> <li>20.05.20: - Initial release.</li> </ul>"},{"location":"images/docker-dillinger/","title":"dillinger","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"images/docker-dillinger/#linuxserverdillinger","title":"linuxserver/dillinger","text":"<p>Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.</p> <p></p>"},{"location":"images/docker-dillinger/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/dillinger:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-dillinger/#application-setup","title":"Application Setup","text":"<p>Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.</p>"},{"location":"images/docker-dillinger/#pdf-export","title":"PDF Export","text":"<p>If you need PDF export functionality you need to run the container with a custom seccomp profile because otherwise the headless Chrome instance it uses won't have sufficient permissions.</p> <p>Download the <code>pdf-export.json</code> from this repo onto your docker host and start the container with <code>--security-opt seccomp=/path/to/pdf-export.json</code>. If you're using compose the format is:</p> <pre><code> security_opt:\n - seccomp=/path/to/pdf-export.json\n</code></pre> <p>The original source for this seccomp profile is here.</p>"},{"location":"images/docker-dillinger/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n dillinger:\n image: lscr.io/linuxserver/dillinger:latest\n container_name: dillinger\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/configs:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-dillinger/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=dillinger \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/configs:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/dillinger:latest\n</code></pre>"},{"location":"images/docker-dillinger/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-dillinger/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> The port for the Dillinger web interface"},{"location":"images/docker-dillinger/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-dillinger/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Dillinger plugin config files"},{"location":"images/docker-dillinger/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-dillinger/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-dillinger/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-dillinger/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-dillinger/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-dillinger/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it dillinger /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f dillinger\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-dillinger/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-dillinger/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull dillinger\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d dillinger\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-dillinger/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/dillinger:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop dillinger\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm dillinger\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-dillinger/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-dillinger/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-dillinger.git\ncd docker-dillinger\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/dillinger:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-dillinger/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Deprecate image.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>19.04.22: - Rebase to Alpine.</li> <li>31.05.19: - Initial Release.</li> </ul>"},{"location":"images/docker-diskover/","title":"diskover","text":""},{"location":"images/docker-diskover/#linuxserverdiskover","title":"linuxserver/diskover","text":"<p>diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.</p> <p></p>"},{"location":"images/docker-diskover/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/diskover:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-diskover/#application-setup","title":"Application Setup","text":"<p>This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information.</p> <p>The default username is diskover with the password of darkdata, access the container at <code>http://&lt;host-ip&gt;/</code>. The UI may be unusable until a valid index has been created.</p> <p>The default diskover-web Constants.php file located at <code>/config/diskover-web.conf.d/Constants.php</code> will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * <code>const ES_HOST = 'elasticsearch';</code> * <code>const ES_PORT = 9200;</code></p> <p>The application doesn't start an index by default. A crontab is created inside of the <code>/config</code> directory and can be set up to run automated indexes of <code>/data</code>. Changes to this crontab file require a restart to apply. You can also manually run an index by executing <code>/app/diskover/diskover.py</code> either in interactive or detached mode:</p> <ul> <li><code>docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data</code> Will run an index in the background</li> <li><code>docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data</code> Will run an index in the foreground</li> </ul>"},{"location":"images/docker-diskover/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-diskover/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>version: '2'\nservices:\n diskover:\n image: lscr.io/linuxserver/diskover\n container_name: diskover\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=America/New_York\n - ES_HOST=elasticsearch\n - ES_PORT=9200\n volumes:\n - /path/to/diskover/config:/config\n - /path/to/diskover/data:/data\n ports:\n - 80:80\n mem_limit: 4096m\n restart: unless-stopped\n depends_on:\n - elasticsearch\n elasticsearch:\n container_name: elasticsearch\n image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2\n environment:\n - discovery.type=single-node\n - xpack.security.enabled=true\n - bootstrap.memory_lock=true\n - \"ES_JAVA_OPTS=-Xms1g -Xmx1g\"\n ulimits:\n memlock:\n soft: -1\n hard: -1\n volumes:\n - /path/to/esdata:/usr/share/elasticsearch/data\n ports:\n - 9200:9200\n depends_on:\n - elasticsearch-helper\n restart: unless-stopped\n elasticsearch-helper:\n image: alpine\n command: sh -c \"sysctl -w vm.max_map_count=262144\"\n privileged: true\n</code></pre>"},{"location":"images/docker-diskover/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=diskover \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e ES_HOST=elasticsearch \\\n -e ES_PORT=9200 \\\n -e ES_USER=elastic \\\n -e ES_PASS=changeme \\\n -p 80:80 \\\n -v /path/to/diskover/config:/config \\\n -v /path/to/diskover/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/diskover:latest\n</code></pre>"},{"location":"images/docker-diskover/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-diskover/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> diskover Web UI"},{"location":"images/docker-diskover/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>ES_HOST=elasticsearch</code> ElasticSearch host (optional) <code>ES_PORT=9200</code> ElasticSearch port (optional) <code>ES_USER=elastic</code> ElasticSearch username (optional) <code>ES_PASS=changeme</code> ElasticSearch password (optional)"},{"location":"images/docker-diskover/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Default mount point to crawl"},{"location":"images/docker-diskover/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-diskover/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-diskover/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-diskover/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-diskover/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-diskover/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it diskover /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f diskover\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' diskover\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/diskover:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-diskover/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-diskover/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull diskover\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d diskover\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-diskover/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/diskover:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop diskover\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm diskover\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-diskover/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-diskover/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-diskover.git\ncd docker-diskover\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/diskover:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-diskover/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>06.03.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>02.03.23: - Set permissions on crontabs during init.</li> <li>20.08.22: - Rebasing to alpine 3.17 with php8.1. Restructure nginx configs (see changes announcement).</li> <li>25.02.22: - Add php7-sqlite3 to support rc4 release.</li> <li>03.11.21: - Added more support for potential config files.</li> <li>31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover</li> <li>11.10.21: - Updated to diskover-community v2.</li> <li>19.11.20: - Fix pip packages.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>12.04.19: - Rebase to Alpine 3.9.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>01.11.18: - Initial Release.</li> </ul>"},{"location":"images/docker-doc-builder/","title":"linuxserver/doc-builder","text":"<p>Expects to run as part of the LSIO CI process. Not for public consumption.</p> <p>**Running against remote: **</p> <pre><code>docker run --rm \\\n -e CONTAINER_NAME=${CONTAINER_NAME} \\\n -v ${TEMPDIR}:/ansible/readme \\\n linuxserver/doc-builder:latest\n</code></pre> <p>**Running locally: **</p> <p>If you need to test functionality just navigate to the folder with the readme-vars.yml and run:</p> <pre><code>docker run --rm \\\n -v $(pwd):/tmp \\\n -e LOCAL=true \\\n linuxserver/doc-builder:latest\n</code></pre> <p>The output will be in a GENERATED.md in your current working directory.</p> <p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-dokuwiki/","title":"dokuwiki","text":""},{"location":"images/docker-dokuwiki/#linuxserverdokuwiki","title":"linuxserver/dokuwiki","text":"<p>Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.</p> <p></p>"},{"location":"images/docker-dokuwiki/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/dokuwiki:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-dokuwiki/#application-setup","title":"Application Setup","text":"<p>Upon first install go to <code>http://$IP:$PORT/install.php</code> once you have completed the setup, restart the container, login as admin and set \"Use nice URLs\" in the <code>admin/Configuration Settings</code> panel to <code>.htaccess</code> and tick <code>Use slash as namespace separator in URLs</code> to enable nice URLs you will find the webui at <code>http://$IP:$PORT/</code>, for more info see Dokuwiki</p>"},{"location":"images/docker-dokuwiki/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-dokuwiki/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n dokuwiki:\n image: lscr.io/linuxserver/dokuwiki:latest\n container_name: dokuwiki\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/dokuwiki/config:/config\n ports:\n - 80:80\n - 443:443 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-dokuwiki/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=dokuwiki \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 `#optional` \\\n -v /path/to/dokuwiki/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/dokuwiki:latest\n</code></pre>"},{"location":"images/docker-dokuwiki/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-dokuwiki/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Application HTTP Port <code>443</code> #optional Application HTTPS Port"},{"location":"images/docker-dokuwiki/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-dokuwiki/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-dokuwiki/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-dokuwiki/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-dokuwiki/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-dokuwiki/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-dokuwiki/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-dokuwiki/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it dokuwiki /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f dokuwiki\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dokuwiki\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dokuwiki:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-dokuwiki/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-dokuwiki/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull dokuwiki\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d dokuwiki\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-dokuwiki/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/dokuwiki:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop dokuwiki\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm dokuwiki\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-dokuwiki/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-dokuwiki/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-dokuwiki.git\ncd docker-dokuwiki\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/dokuwiki:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-dokuwiki/#versions","title":"Versions","text":"<ul> <li>23.01.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.12.23: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>21.07.23: - Update built-in plugins on container update.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template.</li> <li>15.04.21: - Add <code>vendor</code> folder to deny list.</li> <li>21.02.21: - Store search index outside of container, set absolute (default) path for <code>savedir</code>.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>28.09.20: - Add php7-pdo_sqlite and php7-sqlite3.</li> <li>23.09.20: - Fix php-local.ini bug introduced in the prior PR.</li> <li>14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>01.12.19: - Add php7-ldap package to support LDAP authentication.</li> <li>28.05.19: - Initial Release.</li> </ul>"},{"location":"images/docker-domoticz/","title":"domoticz","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"images/docker-domoticz/#linuxserverdomoticz","title":"linuxserver/domoticz","text":"<p>Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.</p> <p></p>"},{"location":"images/docker-domoticz/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/domoticz:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-domoticz/#application-setup","title":"Application Setup","text":"<p>To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup &gt; Hardware. The user manual is available at www.domoticz.com</p>"},{"location":"images/docker-domoticz/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-domoticz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n domoticz:\n image: lscr.io/linuxserver/domoticz:latest\n container_name: domoticz\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - WEBROOT=domoticz #optional\n - \"DBASE=&lt;path to database&gt;\" #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8080:8080\n - 6144:6144\n - 1443:1443\n devices:\n - path to device:path to device\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-domoticz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=domoticz \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e WEBROOT=domoticz `#optional` \\\n -e DBASE=\"&lt;path to database&gt;\" `#optional` \\\n -p 8080:8080 \\\n -p 6144:6144 \\\n -p 1443:1443 \\\n -v /path/to/data:/config \\\n --device path to device:path to device \\\n --restart unless-stopped \\\n lscr.io/linuxserver/domoticz:latest\n</code></pre>"},{"location":"images/docker-domoticz/#passing-through-usb-devices","title":"Passing Through USB Devices","text":"<p>To get full use of Domoticz, you probably have a USB device you want to pass through. To figure out which device to pass through, you have to connect the device and look in dmesg for the device node created. Issue the command 'dmesg | tail' after you connected your device and you should see something like below.</p> <p><pre><code>usb 1-1.2: new full-speed USB device number 7 using ehci-pci\nftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected\nusb 1-1.2: Detected FT232RL\nusb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0\n</code></pre> As you can see above, the device node created is ttyUSB0. It does not say where, but it's almost always in /dev/. The correct tag for passing through this USB device is '--device /dev/ttyUSB0:/dev/ttyUSB0'</p>"},{"location":"images/docker-domoticz/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-domoticz/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> WebUI <code>6144</code> Domoticz communication port. <code>1443</code> Domoticz communication port."},{"location":"images/docker-domoticz/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>WEBROOT=domoticz</code> Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying. <code>DBASE=&lt;path to database&gt;</code> Sets path to database. Do not set unless you know what this does."},{"location":"images/docker-domoticz/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Domoticz stores config files and data."},{"location":"images/docker-domoticz/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>path to device</code> For passing through USB devices."},{"location":"images/docker-domoticz/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-domoticz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-domoticz/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-domoticz/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-domoticz/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-domoticz/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it domoticz /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f domoticz\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' domoticz\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/domoticz:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-domoticz/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-domoticz/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull domoticz\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d domoticz\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-domoticz/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/domoticz:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop domoticz\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm domoticz\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-domoticz/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"<ul> <li> <p>Pull the latest image at its tag and replace it with the same env variables in one run:</p> <pre><code>docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once domoticz\n</code></pre> </li> <li> <p>You can also remove the old dangling images: <code>docker image prune</code></p> </li> </ul> <p>Warning</p> <p>We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p>"},{"location":"images/docker-domoticz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-domoticz/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-domoticz.git\ncd docker-domoticz\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/domoticz:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-domoticz/#versions","title":"Versions","text":"<ul> <li>29.11.23: - Deprecate.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>20.02.23: - Migrate to s6v3.</li> <li>15.10.22: - Remove deprecated legacy stable branches.</li> <li>05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path.</li> <li>26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.</li> <li>24.11.19: - Change to using domoticz builtin Lua and MQTT.</li> <li>03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo.</li> <li>28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons.</li> <li>12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9.</li> <li>30.03.19: - Add env variable to set webroot.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>19.02.19: - Fix branch for version logic.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>02.07.18: - Add openssh package.</li> <li>01.07.18: - Fix backup/restore in webgui.</li> <li>03.04.18: - Add dependencies for BroadlinkRM2 plugin.</li> <li>20.01.18: - Move telldus core to repo to prevent build fail when source site goes down.</li> <li>18.01.18: - Remove logging to syslog in the run command to prevent double logging.</li> <li>04.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>08.12.17: - Rebase to alpine 3.7.</li> <li>26.11.17: - Use cpu core counting routine to speed up build time.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>26.02.17: - Add curl and replace openssl with libressl.</li> <li>11.02.17: - Update README.</li> <li>03.01.17: - Initial Release.</li> </ul>"},{"location":"images/docker-doplarr/","title":"doplarr","text":""},{"location":"images/docker-doplarr/#linuxserverdoplarr","title":"linuxserver/doplarr","text":"<p>Doplarr is an *arr request bot for Discord.\"</p> <p></p>"},{"location":"images/docker-doplarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/doplarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-doplarr/#application-setup","title":"Application Setup","text":"<p>Start by following the Discord setup instructions from Doplarr's readme.</p> <p>NOTE: The <code>DISCORD__TOKEN</code> environment variable is required to run the container!</p> <ul> <li>If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank.</li> <li>If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank.</li> </ul> <p>Extra java options can be passed with the JAVA_OPTS environment variable, eg <code>-e JAVA_OPTS=\"-Xmx256m -Xms256m\"</code>.</p> <p>Review and adjust any Optional Settings from Doplarr's readme.</p>"},{"location":"images/docker-doplarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-doplarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n doplarr:\n image: lscr.io/linuxserver/doplarr:latest\n container_name: doplarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DISCORD__TOKEN=\n - OVERSEERR__API=\n - OVERSEERR__URL=http://localhost:5055\n - RADARR__API=\n - RADARR__URL=http://localhost:7878\n - SONARR__API=\n - SONARR__URL=http://localhost:8989\n - DISCORD__MAX_RESULTS=25 #optional\n - DISCORD__REQUESTED_MSG_STYLE=:plain #optional\n - SONARR__QUALITY_PROFILE= #optional\n - RADARR__QUALITY_PROFILE= #optional\n - SONARR__ROOTFOLDER= #optional\n - RADARR__ROOTFOLDER= #optional\n - SONARR__LANGUAGE_PROFILE= #optional\n - OVERSEERR__DEFAULT_ID= #optional\n - PARTIAL_SEASONS=true #optional\n - LOG_LEVEL=:info #optional\n - JAVA_OPTS= #optional\n volumes:\n - /path/to/doplarr/config:/config\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-doplarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=doplarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DISCORD__TOKEN= \\\n -e OVERSEERR__API= \\\n -e OVERSEERR__URL=http://localhost:5055 \\\n -e RADARR__API= \\\n -e RADARR__URL=http://localhost:7878 \\\n -e SONARR__API= \\\n -e SONARR__URL=http://localhost:8989 \\\n -e DISCORD__MAX_RESULTS=25 `#optional` \\\n -e DISCORD__REQUESTED_MSG_STYLE=:plain `#optional` \\\n -e SONARR__QUALITY_PROFILE= `#optional` \\\n -e RADARR__QUALITY_PROFILE= `#optional` \\\n -e SONARR__ROOTFOLDER= `#optional` \\\n -e RADARR__ROOTFOLDER= `#optional` \\\n -e SONARR__LANGUAGE_PROFILE= `#optional` \\\n -e OVERSEERR__DEFAULT_ID= `#optional` \\\n -e PARTIAL_SEASONS=true `#optional` \\\n -e LOG_LEVEL=:info `#optional` \\\n -e JAVA_OPTS= `#optional` \\\n -v /path/to/doplarr/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/doplarr:latest\n</code></pre>"},{"location":"images/docker-doplarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-doplarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-doplarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DISCORD__TOKEN=</code> Specify your discord bot token. <code>OVERSEERR__API=</code> Specify your Overseerr API key. Leave blank if using Radarr/Sonarr. <code>OVERSEERR__URL=http://localhost:5055</code> Specify your Overseerr URL. Leave blank if using Radarr/Sonarr. <code>RADARR__API=</code> Specify your Radarr API key. Leave blank if using Overseerr. <code>RADARR__URL=http://localhost:7878</code> Specify your Radarr URL. Leave blank if using Overseerr. <code>SONARR__API=</code> Specify your Sonarr API key. Leave blank if using Overseerr. <code>SONARR__URL=http://localhost:8989</code> Specify your Sonarr URL. Leave blank if using Overseerr. <code>DISCORD__MAX_RESULTS=25</code> Sets the maximum size of the search results selection <code>DISCORD__REQUESTED_MSG_STYLE=:plain</code> Sets the style of the request alert message. One of <code>:plain</code> <code>:embed</code> <code>:none</code> <code>SONARR__QUALITY_PROFILE=</code> The name of the quality profile to use by default for Sonarr <code>RADARR__QUALITY_PROFILE=</code> The name of the quality profile to use by default for Radarr <code>SONARR__ROOTFOLDER=</code> The root folder to use by default for Sonarr <code>RADARR__ROOTFOLDER=</code> The root folder to use by default for Radarr <code>SONARR__LANGUAGE_PROFILE=</code> The name of the language profile to use by default for Sonarr <code>OVERSEERR__DEFAULT_ID=</code> The Overseerr user id to use by default if there is no associated discord account for the requester <code>PARTIAL_SEASONS=true</code> Sets whether users can request partial seasons. <code>LOG_LEVEL=:info</code> The log level for the logging backend. This can be changed for debugging purposes. One of trace <code>:debug</code> <code>:info</code> <code>:warn</code> <code>:error</code> <code>:fatal</code> <code>:report</code> <code>JAVA_OPTS=</code> For passing additional java options."},{"location":"images/docker-doplarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-doplarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-doplarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-doplarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-doplarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-doplarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-doplarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it doplarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f doplarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doplarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doplarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-doplarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-doplarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull doplarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d doplarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-doplarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/doplarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop doplarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm doplarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-doplarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-doplarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-doplarr.git\ncd docker-doplarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/doplarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-doplarr/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.05.23: - Rebase to Alpine 3.18.</li> <li>18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17.</li> <li>01.05.22: - Remove <code>DISCORD__ROLE_ID</code> environment variable, see Permissions Configuration.</li> <li>30.01.22: - Variable adjustments.</li> <li>30.01.22: - Initial Release.</li> </ul>"},{"location":"images/docker-doublecommander/","title":"doublecommander","text":""},{"location":"images/docker-doublecommander/#linuxserverdoublecommander","title":"linuxserver/doublecommander","text":"<p>Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.</p> <p></p>"},{"location":"images/docker-doublecommander/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/doublecommander:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-doublecommander/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-doublecommander/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-doublecommander/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-doublecommander/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-doublecommander/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-doublecommander/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-doublecommander/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-doublecommander/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n doublecommander:\n image: lscr.io/linuxserver/doublecommander:latest\n container_name: doublecommander\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n - /path/to/data:/data\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-doublecommander/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=doublecommander \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/doublecommander:latest\n</code></pre>"},{"location":"images/docker-doublecommander/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-doublecommander/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Double Commander desktop gui. <code>3001</code> Double Commander desktop gui HTTPS."},{"location":"images/docker-doublecommander/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-doublecommander/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings. <code>/data</code> Host data directories, mount as many as needed."},{"location":"images/docker-doublecommander/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-doublecommander/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-doublecommander/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-doublecommander/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-doublecommander/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-doublecommander/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it doublecommander /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f doublecommander\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doublecommander\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doublecommander:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-doublecommander/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-doublecommander/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull doublecommander\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d doublecommander\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-doublecommander/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/doublecommander:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop doublecommander\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm doublecommander\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-doublecommander/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-doublecommander/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-doublecommander.git\ncd docker-doublecommander\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/doublecommander:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-doublecommander/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon, rebase to bookworm.</li> <li>05.07.23: - Deprecate armhf. As announced here</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>16.09.22: - Migrate to s6v3.</li> <li>15.02.21: - Rebase to Ubuntu Jammy.</li> <li>14.12.21: - Rebase to Ubuntu focal.</li> <li>25.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-duckdns/","title":"duckdns","text":""},{"location":"images/docker-duckdns/#linuxserverduckdns","title":"linuxserver/duckdns","text":"<p>Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.</p> <p></p>"},{"location":"images/docker-duckdns/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/duckdns:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-duckdns/#application-setup","title":"Application Setup","text":"<ul> <li>Go to the duckdns website, register your subdomain(s) and retrieve your token</li> <li>Create a container with your subdomain(s) and token. If you own user.duckdns.org, you put <code>SUBDOMAINS=user</code> you would NOT put a sub subdomain like overseerr from overseerr.user.ducksdns.org</li> <li>It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)</li> </ul>"},{"location":"images/docker-duckdns/#notice-regarding-automatic-detection","title":"Notice regarding automatic detection","text":"<p>Using the <code>UPDATE_IP</code> variable whatever its value (<code>ipv4</code>, <code>ipv6</code> or <code>both</code>) uses external Cloudflare whoami service to detect public IP addresses. Be aware that using this variable will query a third-party service other than DuckDNS.</p> <p>Omitting the <code>UPDATE_IP</code> variable uses DuckDNS for detection and only supports IPv4.</p>"},{"location":"images/docker-duckdns/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-duckdns/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n duckdns:\n image: lscr.io/linuxserver/duckdns:latest\n container_name: duckdns\n network_mode: host #optional\n environment:\n - PUID=1000 #optional\n - PGID=1000 #optional\n - TZ=Etc/UTC #optional\n - SUBDOMAINS=subdomain1,subdomain2\n - TOKEN=token\n - UPDATE_IP=ipv4 #optional\n - LOG_FILE=false #optional\n volumes:\n - /path/to/duckdns/config:/config #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-duckdns/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=duckdns \\\n --net=host `#optional` \\\n -e PUID=1000 `#optional` \\\n -e PGID=1000 `#optional` \\\n -e TZ=Etc/UTC `#optional` \\\n -e SUBDOMAINS=subdomain1,subdomain2 \\\n -e TOKEN=token \\\n -e UPDATE_IP=ipv4 `#optional` \\\n -e LOG_FILE=false `#optional` \\\n -v /path/to/duckdns/config:/config `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/duckdns:latest\n</code></pre>"},{"location":"images/docker-duckdns/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-duckdns/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-duckdns/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Use host networking for IPv6 detection"},{"location":"images/docker-duckdns/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBDOMAINS=subdomain1,subdomain2</code> multiple subdomains allowed, comma separated, no spaces, if your domain is user.duckdns.org you put user, not a sub-subdomain <code>TOKEN=token</code> DuckDNS token <code>UPDATE_IP=ipv4</code> Set to <code>ipv6</code> or <code>ipv4</code> to update only your public IPv4/6 address. Set to <code>both</code> to update IPv6 and IPv4 address. This variable makes use of a third-party service. Omitting this variable uses DuckDNS for detection and only supports IPv4. <code>both</code> and <code>ipv6</code> modes needs host networking. <code>LOG_FILE=false</code> Set to <code>true</code> to log to file (also need to map /config)."},{"location":"images/docker-duckdns/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-duckdns/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-duckdns/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-duckdns/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-duckdns/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre> <p>You only need to set the PUID and PGID variables if you are mounting the /config folder</p>"},{"location":"images/docker-duckdns/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-duckdns/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it duckdns /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f duckdns\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duckdns\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duckdns:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-duckdns/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-duckdns/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull duckdns\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d duckdns\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-duckdns/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/duckdns:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop duckdns\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm duckdns\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-duckdns/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-duckdns/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-duckdns.git\ncd docker-duckdns\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/duckdns:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-duckdns/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>14.10.23: - Rework shell script for case insensitivity and update readme to be more clear.</li> <li>13.10.23: - Add support for public IPv6 address update using Cloudflare.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>02.03.23: - Rework shell scripts and cron logic.</li> <li>13.02.23: - Rebase to alpine 3.17.</li> <li>23.09.22: - Rebase to alpine 3.16 and s6v3.</li> <li>19.09.22: - Rebase to alpine 3.15.</li> <li>17.05.22: - Don't allow insecure connections and add timeout.</li> <li>17.05.22: - Add random jitter to update time.</li> <li>23.02.22: - Append to log file instead of overwriting every time.</li> <li>03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>13.04.20: - Add donation links for DuckDNS.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>24.09.19: - Fix perms on github and remove chmod that can stall the container.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>08.02.19: - Update readme with optional parameters.</li> <li>10.12.18: - Fix docker compose example.</li> <li>15.10.18: - Multi-arch image.</li> <li>22.08.18: - Rebase to alpine 3.8.</li> <li>08.12.17: - Rebase to alpine 3.7.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>09.02.17: - Rebase to alpine 3.5.</li> <li>17.11.16: - Initial release.</li> </ul>"},{"location":"images/docker-duplicati/","title":"duplicati","text":""},{"location":"images/docker-duplicati/#linuxserverduplicati","title":"linuxserver/duplicati","text":"<p>Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive &amp; S3, Google Drive, box.com, Mega, hubiC and many others.</p> <p></p>"},{"location":"images/docker-duplicati/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/duplicati:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-duplicati/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Beta releases of Duplicati development \u2705 Canary releases of Duplicati"},{"location":"images/docker-duplicati/#application-setup","title":"Application Setup","text":"<p>The webui is at <code>&lt;your ip&gt;:8200</code> , create backup jobs etc via the webui, for local backups select <code>/backups</code> as the destination. For more information see Duplicati.</p>"},{"location":"images/docker-duplicati/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-duplicati/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n duplicati:\n image: lscr.io/linuxserver/duplicati:latest\n container_name: duplicati\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CLI_ARGS= #optional\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/backups:/backups\n - /path/to/source:/source\n ports:\n - 8200:8200\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-duplicati/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=duplicati \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CLI_ARGS= `#optional` \\\n -p 8200:8200 \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/backups:/backups \\\n -v /path/to/source:/source \\\n --restart unless-stopped \\\n lscr.io/linuxserver/duplicati:latest\n</code></pre>"},{"location":"images/docker-duplicati/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-duplicati/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8200</code> http gui"},{"location":"images/docker-duplicati/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CLI_ARGS=</code> Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-duplicati/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/backups</code> Path to store local backups. <code>/source</code> Path to source for files to backup."},{"location":"images/docker-duplicati/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-duplicati/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-duplicati/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-duplicati/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-duplicati/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-duplicati/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it duplicati /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f duplicati\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duplicati\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duplicati:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-duplicati/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-duplicati/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull duplicati\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d duplicati\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-duplicati/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/duplicati:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop duplicati\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm duplicati\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-duplicati/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-duplicati/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-duplicati.git\ncd docker-duplicati\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/duplicati:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-duplicati/#versions","title":"Versions","text":"<ul> <li>15.02.23: - Deprecate armhf.</li> <li>03.08.22: - Deprecate armhf.</li> <li>25.04.22: - Rebase to mono:focal.</li> <li>01.08.19: - Rebase to Linuxserver LTS mono version.</li> <li>16.07.19: - Allow for additional command line arguments in an environment variable.</li> <li>28.06.19: - Rebase to bionic.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>28.02.19: - Allow access from all hostnames, clarify info on image tags.</li> <li>13.01.19: - Use jq instead of awk in dockerfiles.</li> <li>11.01.19: - Multi-arch image.</li> <li>09.12.17: - Fix continuation lines.</li> <li>31.08.17: - Build only beta or release versions (thanks deasmi).</li> <li>24.04.17: - Initial release.</li> </ul>"},{"location":"images/docker-emby/","title":"emby","text":""},{"location":"images/docker-emby/#linuxserveremby","title":"linuxserver/emby","text":"<p>Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.</p> <p></p>"},{"location":"images/docker-emby/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/emby:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-emby/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable emby releases beta \u2705 Beta emby releases"},{"location":"images/docker-emby/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>http://&lt;your-ip&gt;:8096</code></p> <p>Emby has very complete and verbose documentation located here .</p>"},{"location":"images/docker-emby/#hardware-acceleration-enhancements","title":"Hardware Acceleration Enhancements","text":"<p>This section lists the enhancements we have made for hardware acceleration in this image specifically.</p>"},{"location":"images/docker-emby/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"<p>Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their <code>/dev/vcsm</code> and <code>/dev/vchiq</code> video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:</p> <pre><code>--device=/dev/vcsm:/dev/vcsm\n--device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n</code></pre>"},{"location":"images/docker-emby/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"<p>Hardware acceleration users for Raspberry Pi V4L2 will need to mount their <code>/dev/video1X</code> devices inside of the container by passing the following options when running or creating the container:</p> <pre><code>--device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n</code></pre>"},{"location":"images/docker-emby/#hardware-acceleration","title":"Hardware Acceleration","text":"<p>Many desktop applications need access to a GPU to function properly and even some Desktop Environments have compositor effects that will not function without a GPU. However this is not a hard requirement and all base images will function without a video device mounted into the container.</p>"},{"location":"images/docker-emby/#intelatiamd","title":"Intel/ATI/AMD","text":"<p>To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.</p> <pre><code>--device=/dev/dri:/dev/dri\n</code></pre> <p>We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-emby/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-container-toolkit</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-container-toolkit is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-emby/#arm-devices","title":"Arm Devices","text":"<p>Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable <code>dtoverlay=vc4-fkms-v3d</code> in your usercfg.txt.</p>"},{"location":"images/docker-emby/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-emby/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n emby:\n image: lscr.io/linuxserver/emby:latest\n container_name: emby\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/library:/config\n - /path/to/tvshows:/data/tvshows\n - /path/to/movies:/data/movies\n - /opt/vc/lib:/opt/vc/lib #optional\n ports:\n - 8096:8096\n - 8920:8920 #optional\n devices:\n - /dev/dri:/dev/dri #optional\n - /dev/vchiq:/dev/vchiq #optional\n - /dev/video10:/dev/video10 #optional\n - /dev/video11:/dev/video11 #optional\n - /dev/video12:/dev/video12 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-emby/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=emby \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8096:8096 \\\n -p 8920:8920 `#optional` \\\n -v /path/to/library:/config \\\n -v /path/to/tvshows:/data/tvshows \\\n -v /path/to/movies:/data/movies \\\n -v /opt/vc/lib:/opt/vc/lib `#optional` \\\n --device /dev/dri:/dev/dri `#optional` \\\n --device /dev/vchiq:/dev/vchiq `#optional` \\\n --device /dev/video10:/dev/video10 `#optional` \\\n --device /dev/video11:/dev/video11 `#optional` \\\n --device /dev/video12:/dev/video12 `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/emby:latest\n</code></pre>"},{"location":"images/docker-emby/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-emby/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8096</code> Http webUI. <code>8920</code> Https webUI (you need to setup your own certificate)."},{"location":"images/docker-emby/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-emby/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Emby data storage location. This can grow very large, 50gb+ is likely for a large collection. <code>/data/tvshows</code> Media goes here. Add as many as needed e.g. <code>/data/movies</code>, <code>/data/tv</code>, etc. <code>/data/movies</code> Media goes here. Add as many as needed e.g. <code>/data/movies</code>, <code>/data/tv</code>, etc. <code>/opt/vc/lib</code> Path for Raspberry Pi OpenMAX libs optional."},{"location":"images/docker-emby/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi). <code>/dev/vchiq</code> Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio). <code>/dev/video10</code> Only needed if you want to use your Raspberry Pi V4L2 video encoding. <code>/dev/video11</code> Only needed if you want to use your Raspberry Pi V4L2 video encoding. <code>/dev/video12</code> Only needed if you want to use your Raspberry Pi V4L2 video encoding."},{"location":"images/docker-emby/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-emby/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-emby/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-emby/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-emby/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-emby/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it emby /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f emby\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emby\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emby:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-emby/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-emby/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull emby\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d emby\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-emby/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/emby:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop emby\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm emby\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-emby/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-emby/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-emby.git\ncd docker-emby\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/emby:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-emby/#versions","title":"Versions","text":"<ul> <li>12.02.24: - Use universal hardware acceleration blurb</li> <li>19.01.24: - Fix tonemapping so it's done with hw acceleration.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>08.06.23: - Fix package extraction so it doesn't change /tmp perms.</li> <li>31.05.23: - Use upstream deb packages instead of rpm.</li> <li>26.09.22: - Update chown behavior.</li> <li>18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy.</li> <li>19.05.21: - Structural changes upstream.</li> <li>17.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode.</li> <li>21.12.20: - Rebase to Focal, see here for troubleshooting armhf.</li> <li>03.11.20: - Fix issue with missing samba folder.</li> <li>13.11.20: - Fix issue with samba and ffmpeg.</li> <li>03.07.20: - Add support for amd vaapi hw transcode.</li> <li>29.02.20: - Add v4l2 support on Raspberry Pi.</li> <li>26.02.20: - Add openmax support on Raspberry Pi.</li> <li>15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates).</li> <li>02.10.19: - Improve permission fixing for render and dvb devices.</li> <li>13.08.19: - Add umask environment variable.</li> <li>24.06.19: - Fix typos in readme.</li> <li>30.05.19: - Initial release.</li> </ul>"},{"location":"images/docker-embystat/","title":"embystat","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p>Embystat (upstream project) is no longer actively developed.</p>"},{"location":"images/docker-embystat/#linuxserverembystat","title":"linuxserver/embystat","text":"<p>Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.</p> <p></p>"},{"location":"images/docker-embystat/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/embystat:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-embystat/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:6555</code>. Follow the setup wizard on initial install. Then configure the required services.</p>"},{"location":"images/docker-embystat/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-embystat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n embystat:\n image: lscr.io/linuxserver/embystat:latest\n container_name: embystat\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 6555:6555\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-embystat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=embystat \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 6555:6555 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/embystat:latest\n</code></pre>"},{"location":"images/docker-embystat/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-embystat/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>6555</code> web gui"},{"location":"images/docker-embystat/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-embystat/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-embystat/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-embystat/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-embystat/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-embystat/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-embystat/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-embystat/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it embystat /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f embystat\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' embystat\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/embystat:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-embystat/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-embystat/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull embystat\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d embystat\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-embystat/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/embystat:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop embystat\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm embystat\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-embystat/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"<ul> <li> <p>Pull the latest image at its tag and replace it with the same env variables in one run:</p> <pre><code>docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once embystat\n</code></pre> </li> <li> <p>You can also remove the old dangling images: <code>docker image prune</code></p> </li> </ul> <p>Warning</p> <p>We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p>"},{"location":"images/docker-embystat/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-embystat/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-embystat.git\ncd docker-embystat\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/embystat:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-embystat/#versions","title":"Versions","text":"<ul> <li>25.10.23: - Deprecate image due to upstream app no longer being in active development per this update.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>11.06.22: - Rebase to focal, update disable updates flag.</li> <li>08.04.20: - Structural changes for beta18.</li> <li>04.12.19: - Disable in app updates.</li> <li>12.11.19: - Multi-arch builds.</li> <li>10.09.19: - Initial Release.</li> </ul>"},{"location":"images/docker-emulatorjs/","title":"emulatorjs","text":""},{"location":"images/docker-emulatorjs/#linuxserveremulatorjs","title":"linuxserver/emulatorjs","text":"<p>Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.</p> <p></p>"},{"location":"images/docker-emulatorjs/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/emulatorjs:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-emulatorjs/#application-setup","title":"Application Setup","text":"<p>The Backend can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> </ul> <p>The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your <code>/data</code> mount. From there add roms to the respective <code>roms</code> directories and follow the on screen instructions to add them to your web frontend running on port 80.</p> <p>I understand there may be some confusion as to project naming, but when this project (linuxserver/emulatorjs) started it was meant to be a simple frontend for self hosting folks to use the at the time deobfuscated code of https://www.emulatorjs.com/ that ethanaobrien was working on. Since then EmulatorJS has evolved into it's own amazing project based on Libretro cores that have been highly optimized to function for web. This project mostly contains custom built libretro cores found here. So in general despite the naming of this project and the logo this is just a docker container with a web based backend for generating a useable self hosted emulation website and is in no way affiliated with EmulatorJS.</p> <p>This container (outside of the profile functionality) only generates a static set of files that can be hosted on any web provider even object storage. Everything runs in the client's browser and there are no dependencies on this container. To extract/copy this website it is at the path <code>/emulatorjs/frontend</code> inside the container. If you are happy with the catalouge you have created and no longer want to run stuff like the IPFS backend or want to upload these files to some other hosting provider you can simply copy the contents of that directory and kill off this container. This container can also be started without IPFS once you collection is set using the environment variable <code>-e DISABLE_IPFS=true</code>.</p>"},{"location":"images/docker-emulatorjs/#read-only-rom-mounts","title":"Read Only Rom Mounts","text":"<p>Mounting in existing rom directories Read Only can be achieved by using a special root path <code>/roms</code>, For example for NES:</p> <p><code>-v /path/to/nes/roms:/roms/nes:ro</code></p> <p>The folder names for systems are: * 3do * arcade * atari2600 * atari5200 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws</p>"},{"location":"images/docker-emulatorjs/#compatible-and-tested-browsers","title":"Compatible and Tested Browsers","text":"<p>Chromium Based Browsers- This is the golden standard whether desktop or on mobile (Android) Chrome/Chromium/Brave/Edge should always be used. They have the best performance when it comes to WebAssembly.</p> <p>Firefox- This will work (at reduced performance though) without tested controller support.</p> <p>Safari iOS- Safari performs well and has controller support though in recent updates the amount of ram available to a single tab (~265MB) makes it impossible to run n64 emulation or anything CD based. Do not use WKWebView applications like Chrome or Firefox on iOS they will not be detected properly in the client software. Your best bet in iOS is to add the web page to your home screen from Safari and launch from there to get a full screen interface.</p> <p>Edge Xbox Series X/S- This also performs well and was the basis of this project though recent console updates have knocked the ram available to a single tab from 1GB to 128MB making it impossible to run CD based games or n64.</p>"},{"location":"images/docker-emulatorjs/#navigation-basics","title":"Navigation Basics","text":"<p>Retroarch Menu- The Retroarch menu can be accessed using F1 on keyboard, start/select/R1/L1 at the same time on controller, or pressing the button in the top left in touch mode.</p> <p>Fast Scrolling- Items in the menu can be scrolled by letter by using PgUp/PgDn on the keyboard or the R1/L1 buttons on controller. In touch mode scrolling can be sped up by touching and dragging (while holding) either up or down.</p> <p>For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a \"back\" action in the browser. (official name \"view button\" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name \"menu button\" the three lines)</p>"},{"location":"images/docker-emulatorjs/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-emulatorjs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n emulatorjs:\n image: lscr.io/linuxserver/emulatorjs:latest\n container_name: emulatorjs\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n volumes:\n - /path/to/config:/config\n - /path/to/data:/data\n ports:\n - 3000:3000\n - 80:80\n - 4001:4001 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-emulatorjs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=emulatorjs \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -p 3000:3000 \\\n -p 80:80 \\\n -p 4001:4001 `#optional` \\\n -v /path/to/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/emulatorjs:latest\n</code></pre>"},{"location":"images/docker-emulatorjs/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-emulatorjs/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Rom/artwork management interface, used to generate/manage config files and download artwork <code>80</code> Emulation frontend containing static web files used to browse and launch games <code>4001</code> IPFS peering port, if you want to participate in the P2P network to distribute frontend artwork please forward this to the Internet"},{"location":"images/docker-emulatorjs/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBFOLDER=/</code> Specify a subfolder for reverse proxies IE '/FOLDER/'"},{"location":"images/docker-emulatorjs/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Path to store user profiles <code>/data</code> Path to store roms/artwork"},{"location":"images/docker-emulatorjs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-emulatorjs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-emulatorjs/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-emulatorjs/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-emulatorjs/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-emulatorjs/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it emulatorjs /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f emulatorjs\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emulatorjs\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emulatorjs:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-emulatorjs/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-emulatorjs/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull emulatorjs\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d emulatorjs\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-emulatorjs/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/emulatorjs:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop emulatorjs\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm emulatorjs\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-emulatorjs/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-emulatorjs/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-emulatorjs.git\ncd docker-emulatorjs\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/emulatorjs:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-emulatorjs/#versions","title":"Versions","text":"<ul> <li>28.01.24: - Skip IPFS config if DISABLE_IPFS is set as env variable.</li> <li>27.01.24: - Add atari5200 support.</li> <li>24.01.24: - Pin node back on aarch64 as well for compatibility.</li> <li>23.01.24: - Add logic to symlink out RO rom directories to support upgrades.</li> <li>14.01.24: - Update remaining cores for melonds and yabause threaded to fix audio issues.</li> <li>11.01.24: - Use Node 16 on x86 image to restore metadata uploads in backend, update psx core to current.</li> <li>07.01.24: - Update to use new Mupen64 plus core by default.</li> <li>06.01.24: - Update many emulators to fix audio issues and use latest codebases.</li> <li>29.12.23: - Rebase to Alpine 3.19, add option to launch without IPFS.</li> <li>09.08.23: - Rebase to Alpine 3.18, migrate to s6v3.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>24.11.22: - Update IPFS links for chdman.</li> <li>04.04.22: - Ingest pre-built chdman bins during build time.</li> <li>23.02.22: - Update ingestion point for emulatorjs bins.</li> <li>25.01.22: - Allow users to mount in existing rom directories.</li> <li>14.01.22: - Add profile paths and rebase to Alpine 3.15.</li> <li>04.01.22: - Add headers needed for Threaded emulators.</li> <li>29.11.21: - Add wasm mime type to NGINX.</li> <li>26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores.</li> <li>19.11.21: - Pin retroarch version.</li> <li>14.11.21: - Update default cores to ingest.</li> <li>23.10.21: - Initial release.</li> </ul>"},{"location":"images/docker-endlessh/","title":"endlessh","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p> <p>We recommend looking at an alternative implementation such as: https://github.com/shizunge/endlessh-go/</p>"},{"location":"images/docker-endlessh/#linuxserverendlessh","title":"linuxserver/endlessh","text":"<p>Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.</p> <p></p>"},{"location":"images/docker-endlessh/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/endlessh:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-endlessh/#application-setup","title":"Application Setup","text":"<p>The app listens on the port mapped for ssh connections. To log to file, set the environment variable <code>LOGFILE</code> to <code>true</code> and map a volume for <code>/config</code>. The logs will be under <code>/config/logs/endlessh</code>.</p>"},{"location":"images/docker-endlessh/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n endlessh:\n image: lscr.io/linuxserver/endlessh:latest\n container_name: endlessh\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MSDELAY=10000 #optional\n - MAXLINES=32 #optional\n - MAXCLIENTS=4096 #optional\n - LOGFILE=false #optional\n - BINDFAMILY= #optional\n volumes:\n - /path/to/endlessh/appdata:/config #optional\n ports:\n - 22:2222\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-endlessh/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=endlessh \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MSDELAY=10000 `#optional` \\\n -e MAXLINES=32 `#optional` \\\n -e MAXCLIENTS=4096 `#optional` \\\n -e LOGFILE=false `#optional` \\\n -e BINDFAMILY= `#optional` \\\n -p 22:2222 \\\n -v /path/to/endlessh/appdata:/config `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/endlessh:latest\n</code></pre>"},{"location":"images/docker-endlessh/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-endlessh/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>2222</code> ssh port"},{"location":"images/docker-endlessh/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MSDELAY=10000</code> The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. <code>MAXLINES=32</code> The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes. <code>MAXCLIENTS=4096</code> Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. <code>LOGFILE=false</code> By default, the app logs to container log. If this is set to <code>true</code>, the log will be output to file under <code>/config/logs/endlessh</code> (<code>/config</code> needs to be mapped). <code>BINDFAMILY=</code> By default, the app binds to IPv4 and IPv6 addresses. Set it to <code>4</code> or <code>6</code> to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both."},{"location":"images/docker-endlessh/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Required if <code>LOGFILE</code> is set to <code>true</code>."},{"location":"images/docker-endlessh/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-endlessh/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-endlessh/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-endlessh/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-endlessh/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-endlessh/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it endlessh /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f endlessh\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-endlessh/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-endlessh/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull endlessh\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d endlessh\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-endlessh/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/endlessh:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop endlessh\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm endlessh\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-endlessh/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-endlessh/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-endlessh.git\ncd docker-endlessh\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/endlessh:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-endlessh/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Deprecate image.</li> <li>12.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>23.09.22: - Migrate to s6v3.</li> <li>20.07.22: - Rebase to Alpine 3.16.</li> <li>16.04.22: - Rebase to Alpine 3.15.</li> <li>07.10.21: - Fix typo on MAXLINES var.</li> <li>08.06.21: - Add BINDFAMILY option.</li> <li>16.04.21: - Initial Release.</li> </ul>"},{"location":"images/docker-fail2ban/","title":"fail2ban","text":""},{"location":"images/docker-fail2ban/#linuxserverfail2ban","title":"linuxserver/fail2ban","text":"<p>Fail2ban is a daemon to ban hosts that cause multiple authentication errors.</p> <p></p>"},{"location":"images/docker-fail2ban/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/fail2ban:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-fail2ban/#application-setup","title":"Application Setup","text":"<p>This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the <code>chain</code> to <code>INPUT</code> in the jail for that application.</p>"},{"location":"images/docker-fail2ban/#configuration-files","title":"Configuration Files","text":"<p>On first run, the container will create a number of folders and files in <code>/config</code>. The default configurations for fail2ban are all disabled by default.</p> <p>Please refer to the Configuration README, which can be viewed in our repository, or in your config folder at <code>/config/fail2ban/README.md</code>.</p>"},{"location":"images/docker-fail2ban/#remote-logs","title":"Remote Logs","text":"<p>All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended.</p> <p>The <code>/remotelogs</code> path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath <code>/remotelogs</code>, ex: - <code>/remotelogs/nginx/</code> would mount a folder containing the nginx logs to the container</p>"},{"location":"images/docker-fail2ban/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-fail2ban/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n fail2ban:\n image: lscr.io/linuxserver/fail2ban:latest\n container_name: fail2ban\n cap_add:\n - NET_ADMIN\n - NET_RAW\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - VERBOSITY=-vv #optional\n volumes:\n - /path/to/fail2ban/config:/config\n - /var/log:/var/log:ro\n - /path/to/airsonic/log:/remotelogs/airsonic:ro #optional\n - /path/to/apache2/log:/remotelogs/apache2:ro #optional\n - /path/to/authelia/log:/remotelogs/authelia:ro #optional\n - /path/to/emby/log:/remotelogs/emby:ro #optional\n - /path/to/filebrowser/log:/remotelogs/filebrowser:ro #optional\n - /path/to/homeassistant/log:/remotelogs/homeassistant:ro #optional\n - /path/to/lighttpd/log:/remotelogs/lighttpd:ro #optional\n - /path/to/nextcloud/log:/remotelogs/nextcloud:ro #optional\n - /path/to/nginx/log:/remotelogs/nginx:ro #optional\n - /path/to/nzbget/log:/remotelogs/nzbget:ro #optional\n - /path/to/overseerr/log:/remotelogs/overseerr:ro #optional\n - /path/to/prowlarr/log:/remotelogs/prowlarr:ro #optional\n - /path/to/radarr/log:/remotelogs/radarr:ro #optional\n - /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro #optional\n - /path/to/sonarr/log:/remotelogs/sonarr:ro #optional\n - /path/to/unificontroller/log:/remotelogs/unificontroller:ro #optional\n - /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-fail2ban/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=fail2ban \\\n --net=host \\\n --cap-add=NET_ADMIN \\\n --cap-add=NET_RAW \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e VERBOSITY=-vv `#optional` \\\n -v /path/to/fail2ban/config:/config \\\n -v /var/log:/var/log:ro \\\n -v /path/to/airsonic/log:/remotelogs/airsonic:ro `#optional` \\\n -v /path/to/apache2/log:/remotelogs/apache2:ro `#optional` \\\n -v /path/to/authelia/log:/remotelogs/authelia:ro `#optional` \\\n -v /path/to/emby/log:/remotelogs/emby:ro `#optional` \\\n -v /path/to/filebrowser/log:/remotelogs/filebrowser:ro `#optional` \\\n -v /path/to/homeassistant/log:/remotelogs/homeassistant:ro `#optional` \\\n -v /path/to/lighttpd/log:/remotelogs/lighttpd:ro `#optional` \\\n -v /path/to/nextcloud/log:/remotelogs/nextcloud:ro `#optional` \\\n -v /path/to/nginx/log:/remotelogs/nginx:ro `#optional` \\\n -v /path/to/nzbget/log:/remotelogs/nzbget:ro `#optional` \\\n -v /path/to/overseerr/log:/remotelogs/overseerr:ro `#optional` \\\n -v /path/to/prowlarr/log:/remotelogs/prowlarr:ro `#optional` \\\n -v /path/to/radarr/log:/remotelogs/radarr:ro `#optional` \\\n -v /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro `#optional` \\\n -v /path/to/sonarr/log:/remotelogs/sonarr:ro `#optional` \\\n -v /path/to/unificontroller/log:/remotelogs/unificontroller:ro `#optional` \\\n -v /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/fail2ban:latest\n</code></pre>"},{"location":"images/docker-fail2ban/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-fail2ban/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-fail2ban/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Shares host networking with container."},{"location":"images/docker-fail2ban/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>VERBOSITY=-vv</code> Set the container log verbosity. Valid options are -v, -vv, -vvv, -vvvv, or leaving the value blank or not setting the variable."},{"location":"images/docker-fail2ban/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/var/log:ro</code> Host logs. Mounted as Read Only. <code>/remotelogs/airsonic:ro</code> Optional path to airsonic log folder. Mounted as Read Only. <code>/remotelogs/apache2:ro</code> Optional path to apache2 log folder. Mounted as Read Only. <code>/remotelogs/authelia:ro</code> Optional path to authelia log folder. Mounted as Read Only. <code>/remotelogs/emby:ro</code> Optional path to emby log folder. Mounted as Read Only. <code>/remotelogs/filebrowser:ro</code> Optional path to filebrowser log folder. Mounted as Read Only. <code>/remotelogs/homeassistant:ro</code> Optional path to homeassistant log folder. Mounted as Read Only. <code>/remotelogs/lighttpd:ro</code> Optional path to lighttpd log folder. Mounted as Read Only. <code>/remotelogs/nextcloud:ro</code> Optional path to nextcloud log folder. Mounted as Read Only. <code>/remotelogs/nginx:ro</code> Optional path to nginx log folder. Mounted as Read Only. <code>/remotelogs/nzbget:ro</code> Optional path to nzbget log folder. Mounted as Read Only. <code>/remotelogs/overseerr:ro</code> Optional path to overseerr log folder. Mounted as Read Only. <code>/remotelogs/prowlarr:ro</code> Optional path to prowlarr log folder. Mounted as Read Only. <code>/remotelogs/radarr:ro</code> Optional path to radarr log folder. Mounted as Read Only. <code>/remotelogs/sabnzbd:ro</code> Optional path to sabnzbd log folder. Mounted as Read Only. <code>/remotelogs/sonarr:ro</code> Optional path to sonarr log folder. Mounted as Read Only. <code>/remotelogs/unificontroller:ro</code> Optional path to unificontroller log folder. Mounted as Read Only. <code>/remotelogs/vaultwarden:ro</code> Optional path to vaultwarden log folder. Mounted as Read Only."},{"location":"images/docker-fail2ban/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-fail2ban/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-fail2ban/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-fail2ban/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-fail2ban/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-fail2ban/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-fail2ban/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it fail2ban /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f fail2ban\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fail2ban\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fail2ban:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-fail2ban/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-fail2ban/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull fail2ban\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d fail2ban\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-fail2ban/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/fail2ban:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop fail2ban\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm fail2ban\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-fail2ban/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-fail2ban/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-fail2ban.git\ncd docker-fail2ban\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/fail2ban:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-fail2ban/#versions","title":"Versions","text":"<ul> <li>05.03.24: - Rebase to Alpine 3.19.</li> <li>01.06.23: - Add optional VERBOSITY environment variable, allowing users to set the container log verbosity.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>15.12.22: - Replace unmaintained ssmtp with msmtp.</li> <li>15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading.</li> <li>25.08.22: - Update README to clarify remote log information.</li> <li>09.08.22: - Initial Release.</li> </ul>"},{"location":"images/docker-faster-whisper/","title":"faster-whisper","text":""},{"location":"images/docker-faster-whisper/#linuxserverfaster-whisper","title":"linuxserver/faster-whisper","text":"<p>Faster-whisper is a reimplementation of OpenAI's Whisper model using CTranslate2, which is a fast inference engine for Transformer models. This container provides a Wyoming protocol server for faster-whisper.</p> <p></p>"},{"location":"images/docker-faster-whisper/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/faster-whisper:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-faster-whisper/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases gpu \u2705 Releases with Nvidia GPU support"},{"location":"images/docker-faster-whisper/#application-setup","title":"Application Setup","text":"<p>For use with Home Assistant Assist, add the Wyoming integration and supply the hostname/IP and port that Whisper is running add-on.\"</p> <p>When using the <code>gpu</code> tag with Nvidia GPUs, make sure you set the container to use the <code>nvidia</code> runtime and that you have the Nvidia Container Toolkit installed on the host and that you run the container with the correct GPU(s) exposed. See the Nvidia Container Toolkit docs for more details.</p> <p>For more information see the faster-whisper docs,</p>"},{"location":"images/docker-faster-whisper/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-faster-whisper/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n faster-whisper:\n image: lscr.io/linuxserver/faster-whisper:latest\n container_name: faster-whisper\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - WHISPER_MODEL=tiny-int8\n - WHISPER_BEAM=1 #optional\n - WHISPER_LANG=en #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 10300:10300\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-faster-whisper/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=faster-whisper \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e WHISPER_MODEL=tiny-int8 \\\n -e WHISPER_BEAM=1 `#optional` \\\n -e WHISPER_LANG=en `#optional` \\\n -p 10300:10300 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/faster-whisper:latest\n</code></pre>"},{"location":"images/docker-faster-whisper/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-faster-whisper/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>10300</code> Wyoming connection port."},{"location":"images/docker-faster-whisper/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>WHISPER_MODEL=tiny-int8</code> Whisper model that will be used for transcription. From <code>tiny</code>, <code>base</code>, <code>small</code> and <code>medium</code>, all with <code>-int8</code> compressed variants <code>WHISPER_BEAM=1</code> Number of candidates to consider simultaneously during transcription. <code>WHISPER_LANG=en</code> Language that you will speak to the add-on."},{"location":"images/docker-faster-whisper/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Local path for Whisper config files."},{"location":"images/docker-faster-whisper/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-faster-whisper/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-faster-whisper/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-faster-whisper/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-faster-whisper/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-faster-whisper/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it faster-whisper /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f faster-whisper\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' faster-whisper\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/faster-whisper:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-faster-whisper/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-faster-whisper/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull faster-whisper\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d faster-whisper\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-faster-whisper/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/faster-whisper:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop faster-whisper\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm faster-whisper\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-faster-whisper/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-faster-whisper/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-faster-whisper.git\ncd docker-faster-whisper\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/faster-whisper:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-faster-whisper/#versions","title":"Versions","text":"<ul> <li>25.11.23: - Initial Release.</li> </ul>"},{"location":"images/docker-feed2toot/","title":"feed2toot","text":""},{"location":"images/docker-feed2toot/#linuxserverfeed2toot","title":"linuxserver/feed2toot","text":"<p>Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.</p> <p></p>"},{"location":"images/docker-feed2toot/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/feed2toot:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-feed2toot/#application-setup","title":"Application Setup","text":"<p>Run <code>docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /lsiopy/bin/register_feed2toot_app</code> to generate credential files (be sure to set the correct volume path and PUID/PGID values).</p> <p>Edit the feed2toot.ini in /config to configure your instance name and RSS feeds.</p> <p>See the feed2toot docs for more information.</p>"},{"location":"images/docker-feed2toot/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-feed2toot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n feed2toot:\n image: lscr.io/linuxserver/feed2toot:latest\n container_name: feed2toot\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - FEED_LIMIT=5 #optional\n volumes:\n - /path/to/feed2toot/config:/config\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-feed2toot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=feed2toot \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e FEED_LIMIT=5 `#optional` \\\n -v /path/to/feed2toot/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/feed2toot:latest\n</code></pre>"},{"location":"images/docker-feed2toot/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-feed2toot/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-feed2toot/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>FEED_LIMIT=5</code> Limit number of RSS entries published at each execution."},{"location":"images/docker-feed2toot/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-feed2toot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-feed2toot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-feed2toot/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-feed2toot/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-feed2toot/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-feed2toot/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it feed2toot /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f feed2toot\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' feed2toot\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/feed2toot:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-feed2toot/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-feed2toot/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull feed2toot\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d feed2toot\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-feed2toot/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/feed2toot:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop feed2toot\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm feed2toot\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-feed2toot/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-feed2toot/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-feed2toot.git\ncd docker-feed2toot\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/feed2toot:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-feed2toot/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>02.03.23: - Allow user customizable cron.</li> <li>22.12.22: - Rebase to alpine 3.17.</li> <li>14.11.22: - Initial Release.</li> </ul>"},{"location":"images/docker-ferdium/","title":"ferdium","text":""},{"location":"images/docker-ferdium/#linuxserverferdium","title":"linuxserver/ferdium","text":"<p>Ferdium is a desktop app that helps you organize how you use your favourite apps by combining them into one application.</p> <p></p>"},{"location":"images/docker-ferdium/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ferdium:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ferdium/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-ferdium/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-ferdium/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-ferdium/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-ferdium/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-ferdium/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-ferdium/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ferdium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ferdium:\n image: lscr.io/linuxserver/ferdium:latest\n container_name: ferdium\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ferdium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ferdium \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ferdium:latest\n</code></pre>"},{"location":"images/docker-ferdium/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ferdium/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Ferdium desktop gui. <code>3001</code> Ferdium desktop gui HTTPS."},{"location":"images/docker-ferdium/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-ferdium/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-ferdium/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> Required for electron apps to fucntion properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-ferdium/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ferdium/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ferdium/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-ferdium/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ferdium/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ferdium /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ferdium\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ferdium\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ferdium:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ferdium/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ferdium/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ferdium\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ferdium\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ferdium/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ferdium:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ferdium\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ferdium\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ferdium/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ferdium/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ferdium.git\ncd docker-ferdium\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ferdium:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ferdium/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>07.12.23: - Initial release.</li> </ul>"},{"location":"images/docker-ffmpeg/","title":"ffmpeg","text":"<p>The LinuxServer.io team brings you another container release featuring :-</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings (PGID, PUID)</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>regular security updates</li> </ul> <p>Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * Open Collective - please consider helping us by either donating or contributing to our budget</p> <p> </p> <p>FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.</p> <p></p>"},{"location":"images/docker-ffmpeg/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ffmpeg:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c arm32v7-&lt;version tag&gt;"},{"location":"images/docker-ffmpeg/#usage","title":"Usage","text":"<p>Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.</p> <p>If an input file is detected we will run FFmpeg as that user/group so the output file will match its permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below.</p>"},{"location":"images/docker-ffmpeg/#included-intel-drivers-latest-versions-compiled","title":"Included Intel Drivers (latest versions compiled):","text":"<ul> <li>iHD Driver: Supports gen8+ (default for Intel)</li> <li>i965 Driver: Supports gen5+ (for gen5-gen9.5 it can be enabled by setting env var <code>LIBVA_DRIVER_NAME=i965</code> in docker arguments)</li> <li>Libva (VAAPI): Supports gen5+ with i965 driver and gen8+ with iHD driver</li> <li>Qsv Dispatcher: OneVPL (supports both OneVPL and MSDK runtimes and should automatically switch)</li> <li>Qsv Runtime:</li> <li>OneVPL: Supports gen12+</li> <li>MSDK (libmfx): Supports gen8 - gen12</li> </ul>"},{"location":"images/docker-ffmpeg/#basic-transcode","title":"Basic Transcode","text":"<pre><code>docker run --rm -it \\\n -v $(pwd):/config \\\n linuxserver/ffmpeg \\\n -i /config/input.mkv \\\n -c:v libx264 \\\n -b:v 4M \\\n -vf scale=1280:720 \\\n -c:a copy \\\n /config/output.mkv\n</code></pre>"},{"location":"images/docker-ffmpeg/#hardware-accelerated-vaapi-click-for-more-info","title":"Hardware accelerated (VAAPI) (click for more info)","text":"<pre><code>docker run --rm -it \\\n --device=/dev/dri:/dev/dri \\\n -v $(pwd):/config \\\n linuxserver/ffmpeg \\\n -vaapi_device /dev/dri/renderD128 \\\n -i /config/input.mkv \\\n -c:v h264_vaapi \\\n -b:v 4M \\\n -vf 'format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720' \\\n -c:a copy \\\n /config/output.mkv\n</code></pre>"},{"location":"images/docker-ffmpeg/#hardware-accelerated-qsv-click-for-more-info","title":"Hardware accelerated (QSV) (click for more info)","text":"<pre><code>docker run --rm -it \\\n --device=/dev/dri:/dev/dri \\\n -v $(pwd):/config \\\n linuxserver/ffmpeg \\\n -hwaccel qsv \\\n -c:v h264_qsv \\\n -i /config/input.mkv \\\n -c:v h264_qsv \\\n -global_quality 25 \\\n /config/output.mkv\n</code></pre>"},{"location":"images/docker-ffmpeg/#nvidia-hardware-accelerated-click-for-more-info","title":"Nvidia Hardware accelerated (click for more info)","text":"<pre><code>docker run --rm -it \\\n --runtime=nvidia \\\n -v $(pwd):/config \\\n linuxserver/ffmpeg \\\n -hwaccel nvdec \\\n -i /config/input.mkv \\\n -c:v h264_nvenc \\\n -b:v 4M \\\n -vf scale=1280:720 \\\n -c:a copy \\\n /config/output.mkv\n</code></pre>"},{"location":"images/docker-ffmpeg/#vulkan-support","title":"Vulkan support","text":"<p>Vulkan support has been added to x86_64 (tested with Intel and AMD iGPU) (click for more info).</p> <pre><code>docker run --rm -it \\\n --device=/dev/dri:/dev/dri \\\n -v $(pwd):/config \\\n -e ANV_VIDEO_DECODE=1 \\\n linuxserver/ffmpeg \\\n -init_hw_device \"vulkan=vk:0\" \\\n -hwaccel vulkan \\\n -hwaccel_output_format vulkan \\\n -i /config/input.mkv \\\n -f null - -benchmark\n</code></pre> <p>Note: Vulkan supports three drivers: - ANV: To enable for Intel, set the env var <code>ANV_VIDEO_DECODE=1</code> - RADV: To enable on AMD, set the env var <code>RADV_PERFTEST=video_decode</code> - NVIDIA: To enable on Nvidia, install Nvidia Vulkan Beta drivers on the host per this article</p>"},{"location":"images/docker-ffmpeg/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic: <pre><code>git clone https://github.com/linuxserver/docker-ffmpeg.git\ncd docker-ffmpeg\ndocker build \\\n --no-cache \\\n --pull \\\n -t linuxserver/ffmpeg:latest .\n</code></pre></p> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre></p> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ffmpeg/#versions","title":"Versions","text":"<ul> <li>16.03.24: - Bump libaom, mesa, openjpeg, opus, shaderc and svtav1.</li> <li>11.02.24: - Add Zimg support.</li> <li>09.02.24: - Bump ffmpeg to 6.1.1, bump other deps.</li> <li>08.02.24: - Enable cuda-llvm, clean up rustc.</li> <li>01.02.24: - Bump Mesa to v24.</li> <li>21.01.24: - Add alsa support.</li> <li>18.01.24: - Let the wrapper pass the ffmpeg exit code to docker run. Bump various libs.</li> <li>01.01.24: - Add rav1e support. Bump libaom, fdkaac, libdrm, libvmaf, libvpl, mesa and svt-av1.</li> <li>06.12.23: - Add libplacebo and libdobi to x86_64.</li> <li>05.12.23: - Bump Mesa. Fix vdpau. Fix AMD VAAPI.</li> <li>25.11.23: - Compile Mesa from source. Add proper Vulkan support (env var <code>ENABLE_VULKAN=true</code> no longer needed)(tested with Intel).</li> <li>22.11.23: - Add shaderc and (preliminary) Vulkan support (via env var <code>ENABLE_VULKAN=true</code>) to x86_64. Bump Intel drivers and other libs.</li> <li>13.11.23: - Bump FFmpeg to 6.1.</li> <li>02.11.23: - Remove <code>--enable-small</code> from ffmpeg build options to add back some features.</li> <li>05.10.23: - Add support for SVT-AV1. Update various libraries.</li> <li>16.08.23: - Added support for WebP formats.</li> <li>11.08.23: - Add optional i965 driver for gen5+ support.</li> <li>14.06.23: - Switch to latest iHD for Intel, add qsv support.</li> <li>13.06.23: - Bump to 6.0, update shared libraries, deprecate armhf, combine bin stage.</li> <li>14.12.22: - Rebase to Jammy, bump to 5.1.2.</li> <li>19.06.22: - Rebase to Focal.</li> <li>26.08.21: - Add support for libOpenCL.</li> <li>01.07.21: - Bump to 4.4.</li> <li>17.06.20: - Bump to 4.3.</li> <li>16.06.20: - Add support for libvmaf.</li> <li>01.08.19: - Initial release.</li> </ul>"},{"location":"images/docker-filezilla/","title":"filezilla","text":""},{"location":"images/docker-filezilla/#linuxserverfilezilla","title":"linuxserver/filezilla","text":"<p>FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.</p> <p></p>"},{"location":"images/docker-filezilla/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/filezilla:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-filezilla/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-filezilla/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-filezilla/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-filezilla/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-filezilla/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-filezilla/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-filezilla/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-filezilla/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n filezilla:\n image: lscr.io/linuxserver/filezilla:latest\n container_name: filezilla\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-filezilla/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=filezilla \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/filezilla:latest\n</code></pre>"},{"location":"images/docker-filezilla/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-filezilla/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> FileZilla desktop gui. <code>3001</code> FileZilla desktop gui HTTPS."},{"location":"images/docker-filezilla/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-filezilla/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-filezilla/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-filezilla/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-filezilla/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-filezilla/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-filezilla/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-filezilla/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it filezilla /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f filezilla\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' filezilla\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/filezilla:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-filezilla/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-filezilla/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull filezilla\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d filezilla\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-filezilla/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/filezilla:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop filezilla\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm filezilla\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-filezilla/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-filezilla/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-filezilla.git\ncd docker-filezilla\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/filezilla:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-filezilla/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>02.01.24: - Rebase to Alpine 3.19.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>23.12.21: - Rebase to Alpine 3.15.</li> <li>26.09.21: - Rebase to Alpine 3.14.</li> <li>18.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-firefox/","title":"firefox","text":""},{"location":"images/docker-firefox/#linuxserverfirefox","title":"linuxserver/firefox","text":"<p>Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.</p> <p></p>"},{"location":"images/docker-firefox/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/firefox:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-firefox/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-firefox/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-firefox/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-firefox/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-firefox/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-firefox/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-firefox/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-firefox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n firefox:\n image: lscr.io/linuxserver/firefox:latest\n container_name: firefox\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - FIREFOX_CLI=https://www.linuxserver.io/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-firefox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=firefox \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e FIREFOX_CLI=https://www.linuxserver.io/ `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/firefox:latest\n</code></pre>"},{"location":"images/docker-firefox/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-firefox/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Firefox desktop gui. <code>3001</code> Firefox desktop gui HTTPS."},{"location":"images/docker-firefox/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>FIREFOX_CLI=https://www.linuxserver.io/</code> Specify one or multiple Firefox CLI flags, this string will be passed to the application in full."},{"location":"images/docker-firefox/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-firefox/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for any modern website to function like youtube. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-firefox/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-firefox/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-firefox/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-firefox/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-firefox/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it firefox /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f firefox\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' firefox\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/firefox:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-firefox/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-firefox/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull firefox\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d firefox\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-firefox/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/firefox:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop firefox\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm firefox\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-firefox/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-firefox/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-firefox.git\ncd docker-firefox\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/firefox:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-firefox/#versions","title":"Versions","text":"<ul> <li>13.02.24: - Add ability to pass CLI args to Firefox.</li> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>01.01.24: - Rebase to Alpine 3.19.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>23.12.21: - Rebase to Alpine 3.15, stop using ESR.</li> <li>26.09.21: - Rebase to Alpine 3.14.</li> <li>19.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-fleet/","title":"fleet","text":""},{"location":"images/docker-fleet/#linuxserverfleet","title":"linuxserver/fleet","text":"<p>Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.</p> <p></p>"},{"location":"images/docker-fleet/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/fleet:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-fleet/#application-setup","title":"Application Setup","text":"<p>Navigate to <code>http://your_ip_here:8080</code> to display the home page. If <code>DATABASE</code> is selected as the preferred authentication process, ensure that you set up an initial user via <code>http://your_ip_here:8080/setup</code>. Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via <code>http://your_ip_here:8080/login</code> to manage your repositories.</p>"},{"location":"images/docker-fleet/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-fleet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n fleet:\n image: lscr.io/linuxserver/fleet:latest\n container_name: fleet\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - fleet_admin_authentication_type=DATABASE\n - fleet_database_url=jdbc:mariadb://&lt;url&gt;:3306/fleet\n - fleet_database_username=fleet_user\n - fleet_database_password=dbuserpassword\n - fleet_admin_secret=randomstring #optional\n volumes:\n - /path/to/fleet/config:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-fleet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=fleet \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e fleet_admin_authentication_type=DATABASE \\\n -e fleet_database_url=jdbc:mariadb://&lt;url&gt;:3306/fleet \\\n -e fleet_database_username=fleet_user \\\n -e fleet_database_password=dbuserpassword \\\n -e fleet_admin_secret=randomstring `#optional` \\\n -p 8080:8080 \\\n -v /path/to/fleet/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/fleet:latest\n</code></pre>"},{"location":"images/docker-fleet/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-fleet/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Http port"},{"location":"images/docker-fleet/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>fleet_admin_authentication_type=DATABASE</code> A switch to define how Fleet manages user logins. If set to DATABASE, see the related optional params. Can be set to either DATABASE or PROPERTIES. <code>fleet_database_url=jdbc:mariadb://&lt;url&gt;:3306/fleet</code> The full JDBC connection string to the Fleet database <code>fleet_database_username=fleet_user</code> The username with the relevant GRANT permissions for the database <code>fleet_database_password=dbuserpassword</code> The database user's password. <code>fleet_admin_secret=randomstring</code> A string used as part of the password key derivation process."},{"location":"images/docker-fleet/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> The primary config file and rolling log files."},{"location":"images/docker-fleet/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-fleet/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-fleet/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-fleet/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-fleet/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-fleet/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it fleet /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f fleet\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fleet\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fleet:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-fleet/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-fleet/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull fleet\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d fleet\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-fleet/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/fleet:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop fleet\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm fleet\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-fleet/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-fleet/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-fleet.git\ncd docker-fleet\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/fleet:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-fleet/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>02.05.22: - Rebase to Alpine 3.15.</li> <li>13.12.21: - Add mitigations for CVE-2021-44228</li> <li>26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>02.07.19: - Rebasing to alpine 3.10.</li> <li>02.07.19: - Stop container if fleet fails.</li> <li>19.05.19: - Use new base images for arm versions.</li> <li>01.04.19: - Initial Release</li> </ul>"},{"location":"images/docker-flexget/","title":"flexget","text":""},{"location":"images/docker-flexget/#linuxserverflexget","title":"linuxserver/flexget","text":"<p>Flexget is a multipurpose automation tool for all of your media.</p> <p></p>"},{"location":"images/docker-flexget/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/flexget:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-flexget/#application-setup","title":"Application Setup","text":"<p>Default config file is /config/.flexget</p> <p>See the FlexGet website for more information.</p>"},{"location":"images/docker-flexget/#download-folders","title":"Download folders","text":"<p>We have set <code>/data</code> as an optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-flexget/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-flexget/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n flexget:\n image: lscr.io/linuxserver/flexget:latest\n container_name: flexget\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - FG_LOG_LEVEL=info\n - FG_LOG_FILE=/config/flexget.log\n - FG_CONFIG_FILE=/config/.flexget/config.yml\n - FG_WEBUI_PASSWORD=info #optional\n volumes:\n - /path/to/flexget/data:/config\n - /path/to/downloads:/data #optional\n ports:\n - 5050:5050\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-flexget/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=flexget \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e FG_LOG_LEVEL=info \\\n -e FG_LOG_FILE=/config/flexget.log \\\n -e FG_CONFIG_FILE=/config/.flexget/config.yml \\\n -e FG_WEBUI_PASSWORD=info `#optional` \\\n -p 5050:5050 \\\n -v /path/to/flexget/data:/config \\\n -v /path/to/downloads:/data `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/flexget:latest\n</code></pre>"},{"location":"images/docker-flexget/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-flexget/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5050</code> HTTP port for the WebUI."},{"location":"images/docker-flexget/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>FG_LOG_LEVEL=info</code> Set the FlexGet logging level. <code>FG_LOG_FILE=/config/flexget.log</code> Set the FlexGet log file location. <code>FG_CONFIG_FILE=/config/.flexget/config.yml</code> Set the FlexGet config file location. <code>FG_WEBUI_PASSWORD=info</code> Set the FlexGet webui password. Pay attention to Bash/YAML reserved characters."},{"location":"images/docker-flexget/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Local path for FlexGet config files. <code>/data</code> Default path for downloads."},{"location":"images/docker-flexget/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-flexget/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-flexget/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-flexget/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-flexget/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-flexget/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it flexget /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f flexget\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' flexget\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/flexget:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-flexget/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-flexget/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull flexget\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d flexget\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-flexget/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/flexget:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop flexget\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm flexget\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-flexget/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-flexget/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-flexget.git\ncd docker-flexget\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/flexget:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-flexget/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>03.07.23: - Initial Release.</li> </ul>"},{"location":"images/docker-foldingathome/","title":"foldingathome","text":""},{"location":"images/docker-foldingathome/#linuxserverfoldingathome","title":"linuxserver/foldingathome","text":"<p>Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.</p> <p></p>"},{"location":"images/docker-foldingathome/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/foldingathome:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-foldingathome/#application-setup","title":"Application Setup","text":"<p>This image sets up the Folding@home client. The interface is available at <code>http://your-ip:7396</code>.</p> <p>The built-in webserver provides very basic control (ie. GPUs are only active when set to <code>Medium</code> or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port <code>36330</code> (no password).</p> <p>There are a couple of minor issues with the webgui: - If you get an \"ERR_EMPTY_RESPONSE\" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via <code>shft-F5</code> or <code>ctrl-F5</code>.</p>"},{"location":"images/docker-foldingathome/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-foldingathome/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.</p>"},{"location":"images/docker-foldingathome/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-foldingathome/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n foldingathome:\n image: lscr.io/linuxserver/foldingathome:latest\n container_name: foldingathome\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n ports:\n - 7396:7396\n - 36330:36330 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-foldingathome/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=foldingathome \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 7396:7396 \\\n -p 36330:36330 `#optional` \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/foldingathome:latest\n</code></pre>"},{"location":"images/docker-foldingathome/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-foldingathome/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>7396</code> Folding@home web gui. <code>36330</code> Optional port for connecting remotely via FAHControl app (no password)."},{"location":"images/docker-foldingathome/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-foldingathome/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Folding@home should store its database and config."},{"location":"images/docker-foldingathome/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-foldingathome/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-foldingathome/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-foldingathome/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-foldingathome/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-foldingathome/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it foldingathome /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f foldingathome\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' foldingathome\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/foldingathome:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-foldingathome/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-foldingathome/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull foldingathome\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d foldingathome\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-foldingathome/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/foldingathome:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop foldingathome\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm foldingathome\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-foldingathome/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-foldingathome/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-foldingathome.git\ncd docker-foldingathome\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/foldingathome:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-foldingathome/#versions","title":"Versions","text":"<ul> <li>14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3.</li> <li>15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings.</li> <li>09.01.21: - Add nvidia.icd.</li> <li>14.04.20: - Add Folding@home donation links.</li> <li>20.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-freecad/","title":"freecad","text":""},{"location":"images/docker-freecad/#linuxserverfreecad","title":"linuxserver/freecad","text":"<p>FreeCAD is a general-purpose parametric 3D computer-aided design (CAD) modeler and a building information modeling (BIM) software application with finite element method (FEM) support.</p> <p></p>"},{"location":"images/docker-freecad/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/freecad:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-freecad/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul> <p>When resizing the window for this application the title bar will be offscreen, use alt+click and drag to move it (native to openbox)</p>"},{"location":"images/docker-freecad/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-freecad/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-freecad/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-freecad/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-freecad/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-freecad/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-freecad/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n freecad:\n image: lscr.io/linuxserver/freecad:latest\n container_name: freecad\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-freecad/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=freecad \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/freecad:latest\n</code></pre>"},{"location":"images/docker-freecad/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-freecad/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> FreeCAD desktop gui. <code>3001</code> FreeCAD desktop gui HTTPS."},{"location":"images/docker-freecad/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-freecad/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-freecad/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-freecad/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-freecad/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-freecad/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-freecad/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-freecad/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it freecad /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f freecad\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freecad\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freecad:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-freecad/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-freecad/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull freecad\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d freecad\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-freecad/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/freecad:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop freecad\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm freecad\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-freecad/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-freecad/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-freecad.git\ncd docker-freecad\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/freecad:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-freecad/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.12.23: - Initial release.</li> </ul>"},{"location":"images/docker-freshrss/","title":"freshrss","text":""},{"location":"images/docker-freshrss/#linuxserverfreshrss","title":"linuxserver/freshrss","text":"<p>Freshrss is a free, self-hostable aggregator for rss feeds.</p> <p></p>"},{"location":"images/docker-freshrss/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/freshrss:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-freshrss/#application-setup","title":"Application Setup","text":"<p>Access the webui set up wizard at <code>http://serverIP:port</code></p> <p>For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for \"host\" of your database server. </p> <p>Additional extensions can be dropped into <code>/config/www/freshrss/extensions</code> and will be active after container restart.</p>"},{"location":"images/docker-freshrss/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-freshrss/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n freshrss:\n image: lscr.io/linuxserver/freshrss:latest\n container_name: freshrss\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/freshrss/config:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-freshrss/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=freshrss \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -v /path/to/freshrss/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/freshrss:latest\n</code></pre>"},{"location":"images/docker-freshrss/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-freshrss/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"images/docker-freshrss/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-freshrss/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-freshrss/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-freshrss/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-freshrss/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-freshrss/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-freshrss/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-freshrss/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it freshrss /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f freshrss\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freshrss\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freshrss:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-freshrss/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-freshrss/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull freshrss\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d freshrss\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-freshrss/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/freshrss:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop freshrss\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm freshrss\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-freshrss/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-freshrss/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-freshrss.git\ncd docker-freshrss\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/freshrss:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-freshrss/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>02.03.23: - Split cron into separate init step and set crontab permissions.</li> <li>19.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>21.10.22: - Fix cron init to properly migrate existing installations to new app location.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>14.01.19: - Add multi arch and pipeline logic.</li> <li>05.09.18: - Rebase to alpine linux 3.8.</li> <li>17.03.18: - Update nginx config to resolve api not working.</li> <li>08.01.18: - Rebase to alpine linux 3.7.</li> <li>25.05.17: - Rebase to alpine linux 3.6.</li> <li>23.02.17: - Rebase to alpine linux 3.5 and nginx.</li> <li>14.10.16: - Add version layer information.</li> <li>08.10.16: - Add Sqlite support for standalone operation.</li> <li>27.09.16: - Fix for cron job.</li> <li>11.09.16: - Add layer badges to README.</li> <li>23.11.15: - Update dependencies to latest requirements.</li> <li>21.08.15: - Initial Release.</li> </ul>"},{"location":"images/docker-gimp/","title":"gimp","text":""},{"location":"images/docker-gimp/#linuxservergimp","title":"linuxserver/gimp","text":"<p>GIMP is a free and open-source raster graphics editor used for image manipulation (retouching) and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. It is extensible by means of plugins, and scriptable.</p> <p></p>"},{"location":"images/docker-gimp/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/gimp:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-gimp/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-gimp/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-gimp/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-gimp/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-gimp/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-gimp/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-gimp/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-gimp/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n gimp:\n image: lscr.io/linuxserver/gimp:latest\n container_name: gimp\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-gimp/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=gimp \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/gimp:latest\n</code></pre>"},{"location":"images/docker-gimp/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-gimp/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> GIMP desktop gui. <code>3001</code> GIMP desktop gui HTTPS."},{"location":"images/docker-gimp/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-gimp/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-gimp/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-gimp/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-gimp/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-gimp/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-gimp/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-gimp/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it gimp /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f gimp\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gimp\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/gimp:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-gimp/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-gimp/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull gimp\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d gimp\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-gimp/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/gimp:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop gimp\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm gimp\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-gimp/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-gimp/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-gimp.git\ncd docker-gimp\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/gimp:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-gimp/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>07.12.23: - Initial Release.</li> </ul>"},{"location":"images/docker-github-desktop/","title":"github-desktop","text":""},{"location":"images/docker-github-desktop/#linuxservergithub-desktop","title":"linuxserver/github-desktop","text":"<p>Github Desktop is an open source Electron-based GitHub app. It is written in TypeScript and uses React.</p> <p></p>"},{"location":"images/docker-github-desktop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/github-desktop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-github-desktop/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-github-desktop/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-github-desktop/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-github-desktop/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-github-desktop/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-github-desktop/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-github-desktop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-github-desktop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n github-desktop:\n image: lscr.io/linuxserver/github-desktop:latest\n container_name: github-desktop\n cap_add:\n - IPC_LOCK\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-github-desktop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=github-desktop \\\n --cap-add=IPC_LOCK \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/github-desktop:latest\n</code></pre>"},{"location":"images/docker-github-desktop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-github-desktop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Github Desktop gui. <code>3001</code> HTTPS Github Desktop gui."},{"location":"images/docker-github-desktop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-github-desktop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-github-desktop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for electron applications to function properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Github Desktop runs in no-sandbox mode without it."},{"location":"images/docker-github-desktop/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-github-desktop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-github-desktop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-github-desktop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-github-desktop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-github-desktop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it github-desktop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f github-desktop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' github-desktop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/github-desktop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-github-desktop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-github-desktop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull github-desktop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d github-desktop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-github-desktop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/github-desktop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop github-desktop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm github-desktop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-github-desktop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-github-desktop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-github-desktop.git\ncd docker-github-desktop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/github-desktop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-github-desktop/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>03.08.23: - Rebase to Bookworm and multi arch.</li> <li>01.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-gitqlient/","title":"gitqlient","text":""},{"location":"images/docker-gitqlient/#linuxservergitqlient","title":"linuxserver/gitqlient","text":"<p>GitQlient is a multi-platform Git client originally forked from QGit. Nowadays it goes beyond of just a fork and adds a lot of new functionality.</p> <p></p>"},{"location":"images/docker-gitqlient/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/gitqlient:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-gitqlient/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-gitqlient/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-gitqlient/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-gitqlient/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-gitqlient/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-gitqlient/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-gitqlient/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-gitqlient/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n gitqlient:\n image: lscr.io/linuxserver/gitqlient:latest\n container_name: gitqlient\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-gitqlient/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=gitqlient \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/gitqlient:latest\n</code></pre>"},{"location":"images/docker-gitqlient/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-gitqlient/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> GitQlient desktop gui. <code>3001</code> HTTPS GitQlient desktop gui."},{"location":"images/docker-gitqlient/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-gitqlient/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-gitqlient/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker"},{"location":"images/docker-gitqlient/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-gitqlient/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-gitqlient/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-gitqlient/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-gitqlient/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it gitqlient /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f gitqlient\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gitqlient\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/gitqlient:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-gitqlient/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-gitqlient/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull gitqlient\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d gitqlient\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-gitqlient/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/gitqlient:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop gitqlient\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm gitqlient\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-gitqlient/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-gitqlient/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-gitqlient.git\ncd docker-gitqlient\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/gitqlient:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-gitqlient/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>21.01.24: - Rebase to Alpine 3.19.</li> <li>02.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-grav/","title":"grav","text":""},{"location":"images/docker-grav/#linuxservergrav","title":"linuxserver/grav","text":"<p>Grav is a Fast, Simple, and Flexible, file-based Web-platform.</p> <p></p>"},{"location":"images/docker-grav/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/grav:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-grav/#application-setup","title":"Application Setup","text":"<p>For more information check out the Grav documentation. Our image includes the grav-admin plugin.</p> <p>To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. <code>docker exec -it -w /app/www/public grav bin/gpm</code></p>"},{"location":"images/docker-grav/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-grav/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n grav:\n image: lscr.io/linuxserver/grav:latest\n container_name: grav\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/grav/config:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-grav/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=grav \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -v /path/to/grav/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/grav:latest\n</code></pre>"},{"location":"images/docker-grav/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-grav/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Port for web frontend"},{"location":"images/docker-grav/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-grav/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-grav/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-grav/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-grav/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-grav/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-grav/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-grav/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it grav /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f grav\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grav\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grav:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-grav/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-grav/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull grav\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d grav\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-grav/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/grav:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop grav\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm grav\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-grav/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-grav/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-grav.git\ncd docker-grav\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/grav:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-grav/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Add brotli to nginx.</li> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>06.05.23: - Add php-ldap for LDAP support.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>11.12.22: - Rebase to Alpine 3.17, PHP 8.1.</li> <li>05.09.22: - All php to read envs passed to container.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>03.09.21: - Added support for Redis caching.</li> <li>01.07.21: - Rebase to Alpine 3.14.</li> <li>09.04.21: - Initial Release.</li> </ul>"},{"location":"images/docker-grocy/","title":"grocy","text":""},{"location":"images/docker-grocy/#linuxservergrocy","title":"linuxserver/grocy","text":"<p>Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.</p> <p>Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool</p> <p>For more information on grocy visit their website and check it out: https://grocy.info</p> <p></p>"},{"location":"images/docker-grocy/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/grocy:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-grocy/#application-setup","title":"Application Setup","text":"<p>Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin</p>"},{"location":"images/docker-grocy/#upgrading","title":"Upgrading","text":"<p>Following a container upgrade ensure that you visit the root (<code>/</code>) route (click on the logo in the left upper edge) in order to run any necessary database migrations. See https://github.com/grocy/grocy#how-to-update for more details.</p>"},{"location":"images/docker-grocy/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-grocy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n grocy:\n image: lscr.io/linuxserver/grocy:latest\n container_name: grocy\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/grocy/config:/config\n ports:\n - 9283:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-grocy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=grocy \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 9283:80 \\\n -v /path/to/grocy/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/grocy:latest\n</code></pre>"},{"location":"images/docker-grocy/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-grocy/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> will map the container's port 80 to port 9283 on the host"},{"location":"images/docker-grocy/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-grocy/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-grocy/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-grocy/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-grocy/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-grocy/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-grocy/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-grocy/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it grocy /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f grocy\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grocy\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grocy:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-grocy/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-grocy/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull grocy\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d grocy\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-grocy/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/grocy:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop grocy\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm grocy\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-grocy/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-grocy/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-grocy.git\ncd docker-grocy\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/grocy:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-grocy/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>06.03.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>19.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>22.08.21: - Rebase to Alpine 3.14 and PHP 8.</li> <li>25.07.21: - Add 'int','json' and 'zlib' PHP extensions.</li> <li>10.05.21: - Reduce image size.</li> <li>08.04.21: - Update docs to reflect jenkins builder changes.</li> <li>17.02.21: - Rebasing to alpine 3.13.</li> <li>26.01.21: - Add 'ldap' PHP extension.</li> <li>22.12.20: - Add 'ctype' PHP extension.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>22.09.19: - Add 'gd' PHP extension.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>27.12.18: - Initial Release.</li> </ul>"},{"location":"images/docker-habridge/","title":"habridge","text":""},{"location":"images/docker-habridge/#linuxserverhabridge","title":"linuxserver/habridge","text":"<p>Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API.</p> <p>In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge.</p> <p>This bridge was built to help put the Internet of Things together.</p> <p>For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki</p> <p></p>"},{"location":"images/docker-habridge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/habridge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-habridge/#application-setup","title":"Application Setup","text":"<p>To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking.</p> <p>For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki</p>"},{"location":"images/docker-habridge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-habridge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n habridge:\n image: lscr.io/linuxserver/habridge:latest\n container_name: habridge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SEC_KEY=\n volumes:\n - /path/to/habridge/config:/config\n ports:\n - 8080:8080\n - 50000:50000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-habridge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=habridge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SEC_KEY= \\\n -p 8080:8080 \\\n -p 50000:50000 \\\n -v /path/to/habridge/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/habridge:latest\n</code></pre>"},{"location":"images/docker-habridge/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-habridge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> WebUI <code>50000</code> HABridge communication port."},{"location":"images/docker-habridge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SEC_KEY=</code> Key used to secure communication."},{"location":"images/docker-habridge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where HABridge stores config files and data."},{"location":"images/docker-habridge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-habridge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-habridge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-habridge/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-habridge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-habridge/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it habridge /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f habridge\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' habridge\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/habridge:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-habridge/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-habridge/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull habridge\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d habridge\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-habridge/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/habridge:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop habridge\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm habridge\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-habridge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-habridge/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-habridge.git\ncd docker-habridge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/habridge:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-habridge/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19, bump JRE to 17.</li> <li>25.08.23: - Rebase to Alpine 3.18.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>11.12.22: - Rebasing to alpine 3.17.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>28.08.18: - Rebase to alpine 3.8.</li> <li>12.04.18: - Add workaround to bind to port 80 if needed.</li> <li>08.04.18: - Initial Release.</li> </ul>"},{"location":"images/docker-headphones/","title":"headphones","text":"<p>Warning</p> <p>This image is deprecated. We will not offer support for this image and it will not be updated.</p>"},{"location":"images/docker-headphones/#linuxserverheadphones","title":"linuxserver/headphones","text":"<p>Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole.</p> <p></p>"},{"location":"images/docker-headphones/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/headphones:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-headphones/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-headphones/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n headphones:\n image: lscr.io/linuxserver/headphones:latest\n container_name: headphones\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/downloads:/downloads\n - /path/to/music:/music\n ports:\n - 8181:8181\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-headphones/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=headphones \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8181:8181 \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/music:/music \\\n --restart unless-stopped \\\n lscr.io/linuxserver/headphones:latest\n</code></pre>"},{"location":"images/docker-headphones/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-headphones/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8181</code> Application WebUI"},{"location":"images/docker-headphones/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-headphones/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files. <code>/downloads</code> ISOs. <code>/music</code> Your music directory."},{"location":"images/docker-headphones/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-headphones/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-headphones/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-headphones/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-headphones/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-headphones/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it headphones /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f headphones\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' headphones\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/headphones:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-headphones/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-headphones/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull headphones\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d headphones\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-headphones/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/headphones:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop headphones\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm headphones\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-headphones/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"<ul> <li> <p>Pull the latest image at its tag and replace it with the same env variables in one run:</p> <pre><code>docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once headphones\n</code></pre> </li> <li> <p>You can also remove the old dangling images: <code>docker image prune</code></p> </li> </ul> <p>Warning</p> <p>We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.</p>"},{"location":"images/docker-headphones/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-headphones/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-headphones.git\ncd docker-headphones\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/headphones:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-headphones/#versions","title":"Versions","text":"<ul> <li>17.10.23: - Deprecate image.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>23.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>02.02.22: - Rebasing to alpine 3.15. Updating to Python 3.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>09.05.19: - Add default UTC timezone if user does not set it.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>18.08.18: - Rebase to alpine 3.8.</li> <li>03.04.18: - Remove forced port and update README.</li> <li>05.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>20.07.17: - Internal git pull instead of at runtime.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>28.05.17: - Add flac package to handle FLAC based .cue.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>03.05.17: - Reduce layer, replace broken source for shntool.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>23.12.16: - Fix capitalisation in README.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README, compile shntool.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>18.07.15: - Inital Release</li> </ul>"},{"location":"images/docker-healthchecks/","title":"healthchecks","text":""},{"location":"images/docker-healthchecks/#linuxserverhealthchecks","title":"linuxserver/healthchecks","text":"<p>Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.</p> <p></p>"},{"location":"images/docker-healthchecks/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/healthchecks:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-healthchecks/#application-setup","title":"Application Setup","text":"<p>Access the WebUI at :8000. For more information, check out Healthchecks. <p>See here for a complete list of available environment variables.</p>"},{"location":"images/docker-healthchecks/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-healthchecks/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n healthchecks:\n image: lscr.io/linuxserver/healthchecks:latest\n container_name: healthchecks\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SITE_ROOT=\n - SITE_NAME=\n - SUPERUSER_EMAIL=\n - SUPERUSER_PASSWORD=\n - ALLOWED_HOSTS= #optional\n - APPRISE_ENABLED=False #optional\n - CSRF_TRUSTED_ORIGINS= #optional\n - DEBUG=True #optional\n - DEFAULT_FROM_EMAIL= #optional\n - EMAIL_HOST= #optional\n - EMAIL_PORT= #optional\n - EMAIL_HOST_USER= #optional\n - EMAIL_HOST_PASSWORD= #optional\n - EMAIL_USE_TLS= #optional\n - INTEGRATIONS_ALLOW_PRIVATE_IPS= #optional\n - PING_EMAIL_DOMAIN= #optional\n - RP_ID= #optional\n - SECRET_KEY= #optional\n - SITE_LOGO_URL= #optional\n volumes:\n - /path/to/healthchecks/config:/config\n ports:\n - 8000:8000\n - 2525:2525 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-healthchecks/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=healthchecks \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SITE_ROOT= \\\n -e SITE_NAME= \\\n -e SUPERUSER_EMAIL= \\\n -e SUPERUSER_PASSWORD= \\\n -e ALLOWED_HOSTS= `#optional` \\\n -e APPRISE_ENABLED=False `#optional` \\\n -e CSRF_TRUSTED_ORIGINS= `#optional` \\\n -e DEBUG=True `#optional` \\\n -e DEFAULT_FROM_EMAIL= `#optional` \\\n -e EMAIL_HOST= `#optional` \\\n -e EMAIL_PORT= `#optional` \\\n -e EMAIL_HOST_USER= `#optional` \\\n -e EMAIL_HOST_PASSWORD= `#optional` \\\n -e EMAIL_USE_TLS= `#optional` \\\n -e INTEGRATIONS_ALLOW_PRIVATE_IPS= `#optional` \\\n -e PING_EMAIL_DOMAIN= `#optional` \\\n -e RP_ID= `#optional` \\\n -e SECRET_KEY= `#optional` \\\n -e SITE_LOGO_URL= `#optional` \\\n -p 8000:8000 \\\n -p 2525:2525 `#optional` \\\n -v /path/to/healthchecks/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/healthchecks:latest\n</code></pre>"},{"location":"images/docker-healthchecks/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-healthchecks/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> Healthchecks Web UI <code>2525</code> Port for inbound SMTP pings"},{"location":"images/docker-healthchecks/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SITE_ROOT=</code> The site's top-level URL and the port it listens to if different than 80 or 443 (e.g., https://healthchecks.example.com:8000). <code>SITE_NAME=</code> The site's name (e.g., \"Example Corp HealthChecks\"). <code>SUPERUSER_EMAIL=</code> Superuser email. <code>SUPERUSER_PASSWORD=</code> Superuser password. <code>ALLOWED_HOSTS=</code> A comma-separated list of valid hostnames for the server. Default is: <code>*</code>. <code>APPRISE_ENABLED=False</code> Set to <code>True</code> to enable the Apprise integration (https://github.com/caronc/apprise). <code>CSRF_TRUSTED_ORIGINS=</code> A list of trusted origins for unsafe requests (e.g. POST). Defaults to the value of <code>SITE_ROOT</code>. <code>DEBUG=True</code> Set to <code>False</code> to disable. Debug mode relaxes CSRF protections and increases logging verbosity but should be disabled for production instances as it will impact performance and security. <code>DEFAULT_FROM_EMAIL=</code> From email for alerts. <code>EMAIL_HOST=</code> SMTP host. <code>EMAIL_PORT=</code> SMTP port. <code>EMAIL_HOST_USER=</code> SMTP user. <code>EMAIL_HOST_PASSWORD=</code> SMTP password. <code>EMAIL_USE_TLS=</code> Use TLS for SMTP (<code>True</code> or <code>False</code>). <code>INTEGRATIONS_ALLOW_PRIVATE_IPS=</code> Defaults to False. Set to True to allow integrations to connect to private IP addresses. <code>PING_EMAIL_DOMAIN=</code> The domain to use for generating ping email addresses. Defaults to <code>localhost</code>. <code>RP_ID=</code> If using webauthn for 2FA set this to match your Healthchecks domain. Webauthn will only work over https. <code>SECRET_KEY=</code> A secret key used for cryptographic signing. Will generate a random value if one is not supplied and save it to <code>/config/local_settings.py</code>. <code>SITE_LOGO_URL=</code> Full URL to custom site logo."},{"location":"images/docker-healthchecks/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files."},{"location":"images/docker-healthchecks/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-healthchecks/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-healthchecks/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-healthchecks/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-healthchecks/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-healthchecks/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it healthchecks /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f healthchecks\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' healthchecks\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/healthchecks:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-healthchecks/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-healthchecks/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull healthchecks\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d healthchecks\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-healthchecks/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/healthchecks:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop healthchecks\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm healthchecks\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-healthchecks/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-healthchecks/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-healthchecks.git\ncd docker-healthchecks\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/healthchecks:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-healthchecks/#versions","title":"Versions","text":"<ul> <li>24.01.24: - No longer write envs to local_settings.py. Envs will take precedence over any existing values in config file. Removed <code>REGENERATE_SETTINGS</code> as it is now obsolete.</li> <li>22.01.24: - Fix CSRF handling.</li> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>31.05.23: - Rebase to Alpine 3.18. Deprecate armhf.</li> <li>22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS.</li> <li>18.10.22: - Add curl-dev to fix broken pip builds.</li> <li>11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>27.09.22: - Fix sending of Email Reports</li> <li>08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0)</li> <li>11.11.21: - Add Apprise to Docker as in v1.24.0</li> <li>10.09.21: - Fix creation of superuser</li> <li>07.08.21: - Update custom logo handling to support changes in v1.22.0</li> <li>11.07.21: - Rebase to Alpine 3.14.</li> <li>18.05.21: - Add linuxserver wheel index.</li> <li>11.01.21: - Add libffi-dev to allow building of python cryptography lib.</li> <li>19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>31.10.19: - Add postgres client and fix config for CSRF.</li> <li>23.10.19: - Allow to create superuser</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>12.04.19: - Rebase to Alpine 3.9.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>14.02.19: - Adding mysql libs needed for using a database.</li> <li>11.10.18: - adding pipeline logic and multi arching release</li> <li>15.11.17: - <code>git pull</code> is now in Dockerfile so each tagged container contains the same code version</li> <li>17.10.17: - Fixed <code>local_settings.py</code> output</li> <li>27.09.17: - Initial Release.</li> </ul>"},{"location":"images/docker-hedgedoc/","title":"hedgedoc","text":""},{"location":"images/docker-hedgedoc/#linuxserverhedgedoc","title":"linuxserver/hedgedoc","text":"<p>HedgeDoc gives you access to all your files wherever you are.</p> <p>HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.</p> <p></p>"},{"location":"images/docker-hedgedoc/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/hedgedoc:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-hedgedoc/#application-setup","title":"Application Setup","text":"<p>HedgeDoc web interface can be accessed <code>http://${IP}:3000/</code>, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT)</p> <p>Full list of HedgeDoc options</p> <p>For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.</p> <p>To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository</p>"},{"location":"images/docker-hedgedoc/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-hedgedoc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n hedgedoc:\n image: lscr.io/linuxserver/hedgedoc:latest\n container_name: hedgedoc\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - \"DB_HOST=&lt;hostname or ip&gt;\"\n - DB_PORT=3306\n - DB_USER=hedgedoc\n - \"DB_PASS=&lt;secret password&gt;\"\n - DB_NAME=hedgedoc\n - CMD_DOMAIN=localhost\n - CMD_URL_ADDPORT=false #optional\n - CMD_PROTOCOL_USESSL=false #optional\n - CMD_PORT=3000 #optional\n - CMD_ALLOW_ORIGIN=['localhost'] #optional\n volumes:\n - /path/to/hedgedoc/config:/config\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-hedgedoc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=hedgedoc \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_HOST=\"&lt;hostname or ip&gt;\" \\\n -e DB_PORT=3306 \\\n -e DB_USER=hedgedoc \\\n -e DB_PASS=\"&lt;secret password&gt;\" \\\n -e DB_NAME=hedgedoc \\\n -e CMD_DOMAIN=localhost \\\n -e CMD_URL_ADDPORT=false `#optional` \\\n -e CMD_PROTOCOL_USESSL=false `#optional` \\\n -e CMD_PORT=3000 `#optional` \\\n -e CMD_ALLOW_ORIGIN=['localhost'] `#optional` \\\n -p 3000:3000 \\\n -v /path/to/hedgedoc/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/hedgedoc:latest\n</code></pre>"},{"location":"images/docker-hedgedoc/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-hedgedoc/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Web gui port (internal port also needs to be changed if accessing at port other than 80, 443 and 3000)."},{"location":"images/docker-hedgedoc/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DB_HOST=&lt;hostname or ip&gt;</code> Host address of mysql database <code>DB_PORT=3306</code> Port to access mysql database default is 3306 <code>DB_USER=hedgedoc</code> Database user <code>DB_PASS=&lt;secret password&gt;</code> Database password <code>DB_NAME=hedgedoc</code> Database name <code>CMD_DOMAIN=localhost</code> The address the gui will be accessed at (ie. <code>192.168.1.1</code> or <code>hedgedoc.domain.com</code>). <code>CMD_URL_ADDPORT=false</code> Set to <code>true</code> if using a port other than <code>80</code> or <code>443</code>. <code>CMD_PROTOCOL_USESSL=false</code> Set to <code>true</code> if accessing over https via reverse proxy. <code>CMD_PORT=3000</code> If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. <code>CMD_PORT=5000</code>) and change the port mapping accordingly (5000:5000). <code>CMD_ALLOW_ORIGIN=['localhost']</code> Comma-separated list of allowed hostnames"},{"location":"images/docker-hedgedoc/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-hedgedoc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-hedgedoc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-hedgedoc/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-hedgedoc/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-hedgedoc/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-hedgedoc/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it hedgedoc /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f hedgedoc\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hedgedoc\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hedgedoc:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-hedgedoc/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-hedgedoc/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull hedgedoc\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d hedgedoc\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-hedgedoc/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/hedgedoc:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop hedgedoc\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm hedgedoc\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-hedgedoc/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-hedgedoc/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-hedgedoc.git\ncd docker-hedgedoc\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/hedgedoc:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-hedgedoc/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>18.06.23: - Rebase to Alpine 3.18, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>10.04.22: - Use python3 to build node sqlite3.</li> <li>10.02.22: - Rebase to Alpine 3.15.</li> <li>09.02.22: - Add optional var <code>CMD_PORT</code> that is needed for accessing at port other than 80, 443 and 3000.</li> <li>09.12.21: - Add optional var <code>CMD_PROTOCOL_USESSL</code> that is needed for reverse proxy.</li> <li>07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent.</li> <li>15.10.21: - Add required env var <code>CMD_DOMAIN</code>.</li> <li>05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public.</li> <li>03.05.21: - Remove deprecated sequalizerc step.</li> <li>22.12.20: - Initial release</li> </ul>"},{"location":"images/docker-heimdall/","title":"heimdall","text":""},{"location":"images/docker-heimdall/#linuxserverheimdall","title":"linuxserver/heimdall","text":"<p>Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way.</p> <p>Simplicity is the key to Heimdall.</p> <p>Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.</p> <p></p>"},{"location":"images/docker-heimdall/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/heimdall:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-heimdall/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Heimdall releases. development \u2705 Latest commit from the github 2.x branch."},{"location":"images/docker-heimdall/#application-setup","title":"Application Setup","text":"<p>Access the web gui at http://SERVERIP:PORT</p>"},{"location":"images/docker-heimdall/#adding-password-protection","title":"Adding password protection","text":"<p>This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file <code>docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd &lt;username&gt;</code>. Replace with a username of your choice and you will be asked to enter a password. Uncomment the <code>basic auth</code> lines in <code>/config/nginx/site-confs/default.conf</code> and restart the container."},{"location":"images/docker-heimdall/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-heimdall/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n heimdall:\n image: lscr.io/linuxserver/heimdall:latest\n container_name: heimdall\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/heimdall/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-heimdall/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=heimdall \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/heimdall/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/heimdall:latest\n</code></pre>"},{"location":"images/docker-heimdall/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-heimdall/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-heimdall/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-heimdall/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-heimdall/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-heimdall/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-heimdall/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-heimdall/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-heimdall/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-heimdall/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it heimdall /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f heimdall\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' heimdall\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/heimdall:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-heimdall/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-heimdall/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull heimdall\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d heimdall\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-heimdall/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/heimdall:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop heimdall\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm heimdall\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-heimdall/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-heimdall/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-heimdall.git\ncd docker-heimdall\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/heimdall:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-heimdall/#versions","title":"Versions","text":"<ul> <li>07.03.24: - Enable the opcache and disable file revalidation.</li> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>04.11.22: - Build commits to upstream branch 2.x for the <code>development</code> tag.</li> <li>13.03.21: - Make searchproviders.yaml user configurable.</li> <li>10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel.</li> <li>10.02.21: - Rebasing to alpine 3.13.</li> <li>17.08.20: - Add php7-curl.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>17.01.20: - Use nginx from baseimage.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>16.07.19: - Save laravel.log to /config/log/heimdall.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>01.04.19: - Fix permission detect logic.</li> <li>26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>15.03.19: - Clarify docker image tags in readme.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.18: - Generate random app key in .env for new installs.</li> <li>20.11.18: - Upgrade baseimage packages during build.</li> <li>04.11.18: - Add php7-zip.</li> <li>31.10.18: - Add queue service.</li> <li>17.10.18: - Symlink avatars folder.</li> <li>16.10.18: - Updated fastcgi_params for user login support.</li> <li>07.10.18: - Symlink <code>.env</code> rather than copy. It now resides under <code>/config/www</code></li> <li>30.09.18: - Multi-arch image. Move <code>.env</code> to <code>/config</code>.</li> <li>05.09.18: - Rebase to alpine linux 3.8.</li> <li>06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place</li> <li>12.02.18: - Initial Release.</li> </ul>"},{"location":"images/docker-hishtory-server/","title":"hishtory-server","text":""},{"location":"images/docker-hishtory-server/#linuxserverhishtory-server","title":"linuxserver/hishtory-server","text":"<p>hiSHtory is a better shell history. It stores your shell history in context (what directory you ran the command in, whether it succeeded or failed, how long it took, etc). This is all stored locally and end-to-end encrypted for syncing to to all your other computers.</p> <p></p>"},{"location":"images/docker-hishtory-server/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/hishtory-server:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-hishtory-server/#application-setup","title":"Application Setup","text":"<p>After you have installed hishtory on your machine, add <code>export HISHTORY_SERVER=http://1.2.3.4:8080</code> (with your server details) to your shellrc. Then run <code>hishtory init</code> (or <code>hishtory init ${SECRET_KEY}</code>) to initialise hishtory against your local server.</p> <p>See the project readme for more details.</p>"},{"location":"images/docker-hishtory-server/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-hishtory-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n hishtory-server:\n image: lscr.io/linuxserver/hishtory-server:latest\n container_name: hishtory-server\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - HISHTORY_POSTGRES_DB=postgresql://${HISHTORY_DB_USER}:${HISHTORY_DB_PASS}@hishtory-db:5432/hishtory?sslmode=disable #optional\n - HISHTORY_SQLITE_DB=/config/hishtory.db #optional\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-hishtory-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=hishtory-server \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e HISHTORY_POSTGRES_DB=postgresql://${HISHTORY_DB_USER}:${HISHTORY_DB_PASS}@hishtory-db:5432/hishtory?sslmode=disable `#optional` \\\n -e HISHTORY_SQLITE_DB=/config/hishtory.db `#optional` \\\n -p 8080:8080 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/hishtory-server:latest\n</code></pre>"},{"location":"images/docker-hishtory-server/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-hishtory-server/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> API port"},{"location":"images/docker-hishtory-server/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>HISHTORY_POSTGRES_DB=postgresql://${HISHTORY_DB_USER}:${HISHTORY_DB_PASS}@hishtory-db:5432/hishtory?sslmode=disable</code> Postgres DB Connection URI. Special characters must be URL encoded. <code>HISHTORY_SQLITE_DB=/config/hishtory.db</code> SQLite database path. Needs to be a mounted volume for persistence. Don't set at the same time as HISHTORY_POSTGRES_DB."},{"location":"images/docker-hishtory-server/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-hishtory-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-hishtory-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-hishtory-server/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-hishtory-server/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-hishtory-server/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-hishtory-server/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it hishtory-server /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f hishtory-server\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hishtory-server\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hishtory-server:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-hishtory-server/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-hishtory-server/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull hishtory-server\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d hishtory-server\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-hishtory-server/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/hishtory-server:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop hishtory-server\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm hishtory-server\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-hishtory-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-hishtory-server/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-hishtory-server.git\ncd docker-hishtory-server\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/hishtory-server:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-hishtory-server/#versions","title":"Versions","text":"<ul> <li>31.01.24: - Rebase to Alpine 3.19.</li> <li>19.05.23: - Initial Release.</li> </ul>"},{"location":"images/docker-homeassistant/","title":"homeassistant","text":""},{"location":"images/docker-homeassistant/#linuxserverhomeassistant","title":"linuxserver/homeassistant","text":"<p>Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.</p> <p></p>"},{"location":"images/docker-homeassistant/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/homeassistant:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-homeassistant/#application-setup","title":"Application Setup","text":"<p>This image is based on Home Assistant Core.</p> <p>The Webui can be found at <code>http://your-ip:8123</code>. Follow the wizard to set up Home Assistant.</p>"},{"location":"images/docker-homeassistant/#host-vs-bridge","title":"Host vs. Bridge","text":"<p>Home Assistant can discover and automatically configure zeroconf/mDNS and UPnP devices on your network. In order for this to work you must create the container with <code>--net=host</code>.</p>"},{"location":"images/docker-homeassistant/#accessing-bluetooth-device","title":"Accessing Bluetooth Device","text":"<p>In order to provide HA with access to the host's Bluetooth device, one needs to install BlueZ on the host, add the capabilities <code>NET_ADMIN</code> and <code>NET_RAW</code> to the container, and map dbus as a volume as shown in the below examples.</p>"},{"location":"images/docker-homeassistant/#docker-cli","title":"Docker Cli:","text":"<pre><code>--cap-add=NET_ADMIN --cap-add=NET_RAW -v /var/run/dbus:/var/run/dbus:ro\n</code></pre>"},{"location":"images/docker-homeassistant/#docker-compose","title":"Docker Compose:","text":"<pre><code> cap_add:\n - NET_ADMIN\n - NET_RAW\n volumes:\n - /var/run/dbus:/var/run/dbus:ro\n</code></pre>"},{"location":"images/docker-homeassistant/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-homeassistant/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n homeassistant:\n image: lscr.io/linuxserver/homeassistant:latest\n container_name: homeassistant\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n ports:\n - 8123:8123 #optional\n devices:\n - /path/to/device:/path/to/device #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-homeassistant/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=homeassistant \\\n --net=host \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8123:8123 `#optional` \\\n -v /path/to/data:/config \\\n --device /path/to/device:/path/to/device `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/homeassistant:latest\n</code></pre>"},{"location":"images/docker-homeassistant/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-homeassistant/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8123</code> Application WebUI, only use this if you are not using host mode."},{"location":"images/docker-homeassistant/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Shares host networking with container. Required for some devices to be discovered by Home Assistant."},{"location":"images/docker-homeassistant/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-homeassistant/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Home Assistant config storage path."},{"location":"images/docker-homeassistant/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/path/to/device</code> For passing through USB, serial or gpio devices."},{"location":"images/docker-homeassistant/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-homeassistant/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-homeassistant/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-homeassistant/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-homeassistant/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-homeassistant/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it homeassistant /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f homeassistant\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' homeassistant\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/homeassistant:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-homeassistant/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-homeassistant/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull homeassistant\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d homeassistant\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-homeassistant/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/homeassistant:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop homeassistant\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm homeassistant\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-homeassistant/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-homeassistant/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-homeassistant.git\ncd docker-homeassistant\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/homeassistant:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-homeassistant/#versions","title":"Versions","text":"<ul> <li>05.03.24: - Add mime.types to help with detection of certain media files.</li> <li>13.02.24: - Rebase to alpine 3.19, upgrade to python 3.12. Restructure python packages so all packages are internal (no more venv in /config). Use upstream project's wheels. Due to an upstream issue, on first start of the newly updated container, some custom integrations may be disabled in HA due to missing dependencies. A subsequent container restart should fix that and the integrations should be re-enabled.</li> <li>18.12.23: - Add Bluetooth instructions to readme.</li> <li>05.07.23: - Deprecate armhf. As announced here</li> <li>21.06.23: - Pin pycups version.</li> <li>14.06.23: - Create secondary venv in <code>/config</code> for pip installs.</li> <li>07.06.23: - Rebase to alpine 3.18, switch to cp311 wheels.</li> <li>03.05.23: - Deprecate arm32v7. Latest HA version with an arm32v7 build is <code>2023.4.6</code>.</li> <li>16.11.22: - Fix the dep conflict for google calendar.</li> <li>23.09.22: - Migrate to s6v3.</li> <li>29.07.22: - Improve usb device permission fix.</li> <li>07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels.</li> <li>07.05.22: - Build matplotlib with the same Numpy version as HA req.</li> <li>31.03.22: - Install pycups.</li> <li>07.03.22: - Install PySwitchbot.</li> <li>02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size.</li> <li>04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel.</li> <li>12.12.21: - Use the new <code>build.yaml</code> to determine HA base version.</li> <li>25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels.</li> <li>13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly.</li> <li>13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly.</li> <li>12.09.21: - Rebase to alpine 3.14. Build on native armhf.</li> <li>09.08.21: - Fixed broken build caused by missing dependency.</li> <li>01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant.</li> <li>25.02.21: - Add python dependencies from homeassistant base image.</li> <li>07.02.21: - Fix building from the wrong requirement file. Add ssh client &amp; external DB libs.</li> <li>06.02.21: - Add iputils so ping works as non root user.</li> <li>30.01.21: - Initial Release.</li> </ul>"},{"location":"images/docker-htpcmanager/","title":"htpcmanager","text":""},{"location":"images/docker-htpcmanager/#linuxserverhtpcmanager","title":"linuxserver/htpcmanager","text":"<p>Htpcmanager is a front end for many htpc related applications.</p> <p></p>"},{"location":"images/docker-htpcmanager/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/htpcmanager:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-htpcmanager/#application-setup","title":"Application Setup","text":"<p>The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.</p>"},{"location":"images/docker-htpcmanager/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-htpcmanager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n htpcmanager:\n image: lscr.io/linuxserver/htpcmanager:latest\n container_name: htpcmanager\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/htpcmanager/config:/config\n ports:\n - 8085:8085\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-htpcmanager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=htpcmanager \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8085:8085 \\\n -v /path/to/htpcmanager/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/htpcmanager:latest\n</code></pre>"},{"location":"images/docker-htpcmanager/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-htpcmanager/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8085</code> Application WebUI"},{"location":"images/docker-htpcmanager/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-htpcmanager/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-htpcmanager/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-htpcmanager/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-htpcmanager/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-htpcmanager/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-htpcmanager/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-htpcmanager/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it htpcmanager /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f htpcmanager\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' htpcmanager\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/htpcmanager:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-htpcmanager/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-htpcmanager/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull htpcmanager\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d htpcmanager\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-htpcmanager/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/htpcmanager:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop htpcmanager\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm htpcmanager\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-htpcmanager/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-htpcmanager/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-htpcmanager.git\ncd docker-htpcmanager\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/htpcmanager:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-htpcmanager/#versions","title":"Versions","text":"<ul> <li>08.01.24: - Rebase to Alpine 3.19.</li> <li>25.08.23: - Rebase to Alpine 3.18.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo.</li> <li>08.04.21: - Fix build.</li> <li>10.02.21: - Rebasing to alpine 3.13.</li> <li>26.10.20: - Rebase to alpine 3.12, python3, change upstream project</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>17.08.18: - Rebase to alpine 3.8.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>20.07.17: - Internal git pull instead of at runtime.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>26.09.16: - Add back cherrypy after removal from baseimage.</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>14.01.15: - Remove hardcoded loglevel from the run command, set in webui</li> <li>19.09.15: - Initial Release.</li> </ul>"},{"location":"images/docker-inkscape/","title":"inkscape","text":""},{"location":"images/docker-inkscape/#linuxserverinkscape","title":"linuxserver/inkscape","text":"<p>Inkscape is professional quality vector graphics software which runs on Linux, Mac OS X and Windows desktop computers.</p> <p></p>"},{"location":"images/docker-inkscape/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/inkscape:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-inkscape/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-inkscape/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-inkscape/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-inkscape/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-inkscape/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-inkscape/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-inkscape/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-inkscape/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n inkscape:\n image: lscr.io/linuxserver/inkscape:latest\n container_name: inkscape\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-inkscape/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=inkscape \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/inkscape:latest\n</code></pre>"},{"location":"images/docker-inkscape/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-inkscape/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Inkscape desktop gui. <code>3001</code> Inkscape desktop gui HTTPS."},{"location":"images/docker-inkscape/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-inkscape/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-inkscape/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-inkscape/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-inkscape/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-inkscape/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-inkscape/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-inkscape/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it inkscape /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f inkscape\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' inkscape\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/inkscape:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-inkscape/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-inkscape/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull inkscape\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d inkscape\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-inkscape/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/inkscape:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop inkscape\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm inkscape\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-inkscape/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-inkscape/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-inkscape.git\ncd docker-inkscape\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/inkscape:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-inkscape/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>07.12.23: - Initial Release.</li> </ul>"},{"location":"images/docker-jackett/","title":"jackett","text":""},{"location":"images/docker-jackett/#linuxserverjackett","title":"linuxserver/jackett","text":"<p>Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping &amp; translation logic - removing the burden from other apps.</p> <p></p>"},{"location":"images/docker-jackett/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/jackett:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-jackett/#application-setup","title":"Application Setup","text":"<p>The web interface is at <code>&lt;your-ip&gt;:9117</code> , configure various trackers and connections to other apps there. More info at Jackett.</p>"},{"location":"images/docker-jackett/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-jackett/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n jackett:\n image: lscr.io/linuxserver/jackett:latest\n container_name: jackett\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - AUTO_UPDATE=true #optional\n - RUN_OPTS= #optional\n volumes:\n - /path/to/data:/config\n - /path/to/blackhole:/downloads\n ports:\n - 9117:9117\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-jackett/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=jackett \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e AUTO_UPDATE=true `#optional` \\\n -e RUN_OPTS= `#optional` \\\n -p 9117:9117 \\\n -v /path/to/data:/config \\\n -v /path/to/blackhole:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/jackett:latest\n</code></pre>"},{"location":"images/docker-jackett/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-jackett/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9117</code> WebUI"},{"location":"images/docker-jackett/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>AUTO_UPDATE=true</code> Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default) <code>RUN_OPTS=</code> Optionally specify additional arguments to be passed."},{"location":"images/docker-jackett/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Jackett should store its config file. <code>/downloads</code> Path to torrent blackhole."},{"location":"images/docker-jackett/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-jackett/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-jackett/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-jackett/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-jackett/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-jackett/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it jackett /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f jackett\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jackett\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jackett:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-jackett/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-jackett/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull jackett\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d jackett\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-jackett/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/jackett:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop jackett\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm jackett\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-jackett/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-jackett/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-jackett.git\ncd docker-jackett\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/jackett:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-jackett/#versions","title":"Versions","text":"<ul> <li>11.03.24: - Rebase to Alpine 3.19. Deprecate development tag as upstream is publishing nightly stable releases.</li> <li>11.07.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Add icu-data-full to address ICU issue with Cyrillic character sets.</li> <li>11.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>10.05.22: - Rebase to Ubuntu Focal.</li> <li>24.05.20: - Allow user to optionally enable auto updates.</li> <li>31.12.19: - Remove agressive startup chowning.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>11.06.18: - Ensure root ownership of Jackett files.</li> <li>13.12.17: - Fix continuation lines.</li> <li>17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based.</li> <li>09.02.17: - Rebase to alpine 3.5.</li> <li>29.10.16: - Call python2 from edge main to satisfy new mono dependency.</li> <li>14.10.16: - Add version layer information.</li> <li>22.09.16: - Remove autoupdate, tidy up Dockerfile.</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>06.08.16: - Rebase to alpine linux for smaller image.</li> <li>25.01.16: - Initial Release.</li> </ul>"},{"location":"images/docker-jellyfin/","title":"jellyfin","text":""},{"location":"images/docker-jellyfin/#linuxserverjellyfin","title":"linuxserver/jellyfin","text":"<p>Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.</p> <p></p>"},{"location":"images/docker-jellyfin/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/jellyfin:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-jellyfin/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Jellyfin releases nightly \u2705 Nightly Jellyfin releases"},{"location":"images/docker-jellyfin/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>http://&lt;your-ip&gt;:8096</code></p> <p>More information can be found on the official documentation here.</p>"},{"location":"images/docker-jellyfin/#hardware-acceleration-enhancements","title":"Hardware Acceleration Enhancements","text":"<p>This section lists the enhancements we have made for hardware acceleration in this image specifically.</p>"},{"location":"images/docker-jellyfin/#intel","title":"Intel","text":"<p>To enable the OpenCL based DV, HDR10 and HLG tone-mapping, please refer to the OpenCL-Intel mod from here:</p> <p>https://mods.linuxserver.io/?mod=jellyfin</p>"},{"location":"images/docker-jellyfin/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"<p>Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their <code>/dev/vcsm</code> and <code>/dev/vchiq</code> video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:</p> <pre><code>--device=/dev/vcsm:/dev/vcsm\n--device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n</code></pre>"},{"location":"images/docker-jellyfin/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"<p>Hardware acceleration users for Raspberry Pi V4L2 will need to mount their <code>/dev/video1X</code> devices inside of the container by passing the following options when running or creating the container:</p> <pre><code>--device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n</code></pre>"},{"location":"images/docker-jellyfin/#hardware-acceleration","title":"Hardware Acceleration","text":"<p>Many desktop applications need access to a GPU to function properly and even some Desktop Environments have compositor effects that will not function without a GPU. However this is not a hard requirement and all base images will function without a video device mounted into the container.</p>"},{"location":"images/docker-jellyfin/#intelatiamd","title":"Intel/ATI/AMD","text":"<p>To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.</p> <pre><code>--device=/dev/dri:/dev/dri\n</code></pre> <p>We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-jellyfin/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-container-toolkit</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-container-toolkit is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-jellyfin/#arm-devices","title":"Arm Devices","text":"<p>Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable <code>dtoverlay=vc4-fkms-v3d</code> in your usercfg.txt.</p>"},{"location":"images/docker-jellyfin/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-jellyfin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n jellyfin:\n image: lscr.io/linuxserver/jellyfin:latest\n container_name: jellyfin\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional\n volumes:\n - /path/to/library:/config\n - /path/to/tvseries:/data/tvshows\n - /path/to/movies:/data/movies\n ports:\n - 8096:8096\n - 8920:8920 #optional\n - 7359:7359/udp #optional\n - 1900:1900/udp #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-jellyfin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=jellyfin \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e JELLYFIN_PublishedServerUrl=192.168.0.5 `#optional` \\\n -p 8096:8096 \\\n -p 8920:8920 `#optional` \\\n -p 7359:7359/udp `#optional` \\\n -p 1900:1900/udp `#optional` \\\n -v /path/to/library:/config \\\n -v /path/to/tvseries:/data/tvshows \\\n -v /path/to/movies:/data/movies \\\n --restart unless-stopped \\\n lscr.io/linuxserver/jellyfin:latest\n</code></pre>"},{"location":"images/docker-jellyfin/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-jellyfin/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8096</code> Http webUI. <code>8920</code> Optional - Https webUI (you need to set up your own certificate). <code>7359/udp</code> Optional - Allows clients to discover Jellyfin on the local network. <code>1900/udp</code> Optional - Service discovery used by DNLA and clients."},{"location":"images/docker-jellyfin/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>JELLYFIN_PublishedServerUrl=192.168.0.5</code> Set the autodiscovery response domain or IP address."},{"location":"images/docker-jellyfin/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Jellyfin data storage location. This can grow very large, 50gb+ is likely for a large collection. <code>/data/tvshows</code> Media goes here. Add as many as needed e.g. <code>/data/movies</code>, <code>/data/tv</code>, etc. <code>/data/movies</code> Media goes here. Add as many as needed e.g. <code>/data/movies</code>, <code>/data/tv</code>, etc."},{"location":"images/docker-jellyfin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-jellyfin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-jellyfin/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-jellyfin/#optional-parameters","title":"Optional Parameters","text":"<p>The official documentation for ports has additional ports that can provide auto discovery.</p> <p>Service Discovery (<code>1900/udp</code>) - Since client auto-discover would break if this option were configurable, you cannot change this in the settings at this time. DLNA also uses this port and is required to be in the local subnet.</p> <p>Client Discovery (<code>7359/udp</code>) - Allows clients to discover Jellyfin on the local network. A broadcast message to this port with \"Who is Jellyfin Server?\" will get a JSON response that includes the server address, ID, and name.</p> <pre><code> -p 7359:7359/udp \\\n -p 1900:1900/udp \\\n</code></pre> <p>The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image.</p>"},{"location":"images/docker-jellyfin/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-jellyfin/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-jellyfin/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it jellyfin /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f jellyfin\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jellyfin\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jellyfin:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-jellyfin/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-jellyfin/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull jellyfin\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d jellyfin\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-jellyfin/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/jellyfin:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop jellyfin\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm jellyfin\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-jellyfin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-jellyfin/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-jellyfin.git\ncd docker-jellyfin\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/jellyfin:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-jellyfin/#versions","title":"Versions","text":"<ul> <li>12.02.24: - Use universal hardware acceleration blurb</li> <li>12.09.23: - Take ownership of plugin directories.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>07.12.22: - Rebase master to Jammy, migrate to s6v3.</li> <li>11.06.22: - Switch to upstream repo's ffmpeg5 build.</li> <li>05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors.</li> <li>25.12.21: - Fix video device group perms error message.</li> <li>10.12.21: - Rework readme, disable template sync.</li> <li>22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper.</li> <li>23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the <code>bionic</code> tag.</li> <li>21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW.</li> <li>20.01.21: - Add Jellyfin Binary Environmentals</li> <li>20.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>23.11.20: - Rebase to Focal, branch off Bionic.</li> <li>22.07.20: - Ingest releases from Jellyfin repo.</li> <li>28.04.20: - Replace MMAL/OMX dependency device <code>/dev/vc-mem</code> with <code>/dev/vcsm</code> as the former was not sufficient for raspbian.</li> <li>11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder.</li> <li>11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under <code>/config</code>).</li> <li>30.01.20: - Add nightly tag.</li> <li>09.01.20: - Add Pi OpenMax support.</li> <li>02.10.19: - Improve permission fixing for render &amp; dvb devices.</li> <li>31.07.19: - Add AMD drivers for vaapi support on x86.</li> <li>13.06.19: - Add Intel drivers for vaapi support on x86.</li> <li>07.06.19: - Initial release.</li> </ul>"},{"location":"images/docker-jenkins-builder/","title":"jenkins-builder","text":""},{"location":"images/docker-jenkins-builder/#linuxserverjenkins-builder","title":"linuxserver/jenkins-builder","text":"<p>Expects to run as part of the LSIO CI process. Not for public consumption.</p>"},{"location":"images/docker-jenkins-builder/#running-against-remote-project","title":"Running against remote project","text":"<pre><code>TEMPDIR=$(mktemp -d) &amp;&amp; \\\ndocker run --rm \\\n -e CONTAINER_NAME=&lt;container name&gt; \\\n -e GITHUB_BRANCH=&lt;branch name&gt; \\\n -v ${TEMPDIR}:/ansible/jenkins \\\n lscr.io/linuxserver/jenkins-builder:latest\n</code></pre>"},{"location":"images/docker-jenkins-builder/#running-against-local-project","title":"Running against local project","text":"<p>If you need to test functionality just navigate to the folder with the jenkins-vars.yml and run:</p> <pre><code>docker pull lscr.io/linuxserver/jenkins-builder:latest &amp;&amp; \\\ndocker run --rm \\\n -v $(pwd):/tmp \\\n -e LOCAL=true \\\n -e PUID=$(id -u) -e PGID=$(id -g) \\\n lscr.io/linuxserver/jenkins-builder:latest &amp;&amp; \\\nrm -rf .jenkins-external\n</code></pre> <p>Newly generated files (including <code>README.md</code>, <code>Jenkinsfile</code>, issue templates, etc.) will overwrite the existing files in your current working directory.</p>"},{"location":"images/docker-jenkins-builder/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-jenkins-builder.git\ncd docker-jenkins-builder\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/jenkins-builder:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-jenkins-builder/#versions","title":"Versions","text":"<p>The following line is only in this repo for loop testing:</p> <ul> <li>{ date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }</li> </ul>"},{"location":"images/docker-kasm/","title":"kasm","text":""},{"location":"images/docker-kasm/#linuxserverkasm","title":"linuxserver/kasm","text":"<p>Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.</p> <p>The rendering of the graphical-based containers is powered by the open-source project KasmVNC.</p> <p></p>"},{"location":"images/docker-kasm/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kasm:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-kasm/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Kasm releases develop \u2705 Tip of develop"},{"location":"images/docker-kasm/#application-setup","title":"Application Setup","text":"<p>This container uses Docker in Docker and requires being run in <code>privileged</code> mode. This container also requires an initial setup that runs on port 3000.</p> <p>Unlike other containers the web interface port (default 443) needs to be set for the env variable <code>KASM_PORT</code> and both the inside and outside port IE for 4443 <code>KASM_PORT=4443</code> <code>-p 4443:4443</code></p> <p>Unraid users due to the DinD storage layer <code>/opt/</code> should be mounted directly to a disk IE <code>/mnt/disk1/appdata/path</code> or optimally with a cache disk at <code>/mnt/cache/appdata/path</code></p> <p>Access the installation wizard at https://<code>your ip</code>:3000 and follow the instructions there. Once setup is complete access https://<code>your ip</code>:443 and login with the credentials you entered during setup. The default users are:</p> <ul> <li>admin@kasm.local</li> <li>user@kasm.local</li> </ul> <p>Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.</p>"},{"location":"images/docker-kasm/#gpu-support","title":"GPU Support","text":"<p>During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass <code>-e NVIDIA_VISIBLE_DEVICES=all</code> or <code>--gpus all</code> and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation. </p>"},{"location":"images/docker-kasm/#gamepad-support","title":"Gamepad support","text":"<p>In order to properly create virtual Gamepads you will need to mount from your host <code>/dev/input</code> and <code>/run/udev/data</code>. Please see HERE for instructions on enabling gamepad support.</p>"},{"location":"images/docker-kasm/#persistant-profiles","title":"Persistant profiles","text":"<p>In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to <code>/profiles</code>. From there when configuring a workspace you can set the <code>Persistant Profile Path</code> to IE <code>/profiles/ubuntu-focal/{username}/</code>, more infomation can be found HERE.</p>"},{"location":"images/docker-kasm/#reverse-proxy","title":"Reverse proxy","text":"<p>A sample for SWAG can be found here. Post installation you will need to modify the \"Proxy Port\" setting under the default zone to 0 as outlined here to launch Workspaces sessions.</p>"},{"location":"images/docker-kasm/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-kasm/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-kasm/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n kasm:\n image: lscr.io/linuxserver/kasm:latest\n container_name: kasm\n privileged: true\n environment:\n - KASM_PORT=443\n - DOCKER_HUB_USERNAME=USER #optional\n - DOCKER_HUB_PASSWORD=PASS #optional\n - DOCKER_MTU=1500 #optional\n volumes:\n - /path/to/data:/opt\n - /path/to/profiles:/profiles #optional\n - /dev/input:/dev/input #optional\n - /run/udev/data:/run/udev/data #optional\n ports:\n - 3000:3000\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-kasm/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kasm \\\n --privileged \\\n -e KASM_PORT=443 \\\n -e DOCKER_HUB_USERNAME=USER `#optional` \\\n -e DOCKER_HUB_PASSWORD=PASS `#optional` \\\n -e DOCKER_MTU=1500 `#optional` \\\n -p 3000:3000 \\\n -p 443:443 \\\n -v /path/to/data:/opt \\\n -v /path/to/profiles:/profiles `#optional` \\\n -v /dev/input:/dev/input `#optional` \\\n -v /run/udev/data:/run/udev/data `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kasm:latest\n</code></pre>"},{"location":"images/docker-kasm/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-kasm/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Kasm Installation wizard. (https) <code>443</code> Kasm Workspaces interface. (https)"},{"location":"images/docker-kasm/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>KASM_PORT=443</code> Specify the port you bind to the outside for Kasm Workspaces. <code>DOCKER_HUB_USERNAME=USER</code> Optionally specify a DockerHub Username to pull private images. <code>DOCKER_HUB_PASSWORD=PASS</code> Optionally specify a DockerHub password to pull private images. <code>DOCKER_MTU=1500</code> Optionally specify the mtu options passed to dockerd."},{"location":"images/docker-kasm/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/opt</code> Docker and installation storage. <code>/profiles</code> Optionally specify a path for persistent profile storage. <code>/dev/input</code> Optional for gamepad support. <code>/run/udev/data</code> Optional for gamepad support."},{"location":"images/docker-kasm/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-kasm/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-kasm/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-kasm/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-kasm/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it kasm /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f kasm\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kasm\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kasm:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-kasm/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-kasm/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull kasm\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d kasm\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kasm/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/kasm:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop kasm\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm kasm\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kasm/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-kasm/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-kasm.git\ncd docker-kasm\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/kasm:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-kasm/#versions","title":"Versions","text":"<ul> <li>16.02.24: - Update base image for 1.15.0 release.</li> <li>22.08.23: - Update base image for 1.14.0 release.</li> <li>07.04.23: - Add mod layer for ingesting LSIO images for 1.13.0 release.</li> <li>28.03.23: - Pin compose to 2.5.0 to be in sync with upstream requirements.</li> <li>05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads.</li> <li>23.09.22: - Migrate to s6v3.</li> <li>02.07.22: - Initial Release.</li> </ul>"},{"location":"images/docker-kavita/","title":"kavita","text":""},{"location":"images/docker-kavita/#linuxserverkavita","title":"linuxserver/kavita","text":"<p>Kavita is a fast, feature rich, cross platform reading server. Built with a focus for being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family!</p> <p></p>"},{"location":"images/docker-kavita/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kavita:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-kavita/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:5000</code>. Follow the setup wizard on initial install.</p> <p>The docker cli and compose yml samples provided list a single <code>/data</code> folder for the media, however, you can set up multiple mount points if you wish. For instance, you can set up 3 separate mountpoints named <code>/manga</code>, <code>/comics</code> and <code>/books</code>, each mapped to separate folders on host.</p>"},{"location":"images/docker-kavita/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-kavita/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n kavita:\n image: lscr.io/linuxserver/kavita:latest\n container_name: kavita\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/data:/data\n ports:\n - 5000:5000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-kavita/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kavita \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 5000:5000 \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kavita:latest\n</code></pre>"},{"location":"images/docker-kavita/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-kavita/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5000</code> web gui"},{"location":"images/docker-kavita/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-kavita/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/data</code> Media library containing manga, comics and books."},{"location":"images/docker-kavita/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-kavita/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-kavita/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-kavita/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-kavita/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-kavita/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it kavita /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f kavita\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kavita\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kavita:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-kavita/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-kavita/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull kavita\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d kavita\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kavita/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/kavita:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop kavita\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm kavita\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kavita/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-kavita/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-kavita.git\ncd docker-kavita\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/kavita:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-kavita/#versions","title":"Versions","text":"<ul> <li>12.08.23: - Fix app file perms to prevent high uid.</li> <li>07.08.23: - Initial Release.</li> </ul>"},{"location":"images/docker-kdenlive/","title":"kdenlive","text":""},{"location":"images/docker-kdenlive/#linuxserverkdenlive","title":"linuxserver/kdenlive","text":"<p>Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.</p> <p></p>"},{"location":"images/docker-kdenlive/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kdenlive:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-kdenlive/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-kdenlive/#hardware-acceleration-x86_64-only","title":"Hardware Acceleration (x86_64 only)","text":"<p>In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for <code>vaapi_device</code>. Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm)</p> <pre><code>vainfo --display drm --device /dev/dri/renderD128\n</code></pre>"},{"location":"images/docker-kdenlive/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-kdenlive/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-kdenlive/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-kdenlive/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-kdenlive/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-kdenlive/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-kdenlive/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-kdenlive/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n kdenlive:\n image: lscr.io/linuxserver/kdenlive:latest\n container_name: kdenlive\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n devices:\n - /dev/dri:/dev/dri #optional\n shm_size: \"1gb\" #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-kdenlive/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kdenlive \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --device /dev/dri:/dev/dri `#optional` \\\n --shm-size=\"1gb\" `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kdenlive:latest\n</code></pre>"},{"location":"images/docker-kdenlive/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-kdenlive/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Kdenlive desktop gui <code>3001</code> Kdenlive desktop gui HTTPS"},{"location":"images/docker-kdenlive/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBFOLDER=/</code> Specify a subfolder to use with reverse proxies, IE <code>/subfolder/</code>"},{"location":"images/docker-kdenlive/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-kdenlive/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Add this for hardware acceleration (Linux hosts only)"},{"location":"images/docker-kdenlive/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This might be needed to prevent crashing <code>--security-opt seccomp=unconfined</code> For Docker Engine only, this may be required depending on your Docker and storage configuration."},{"location":"images/docker-kdenlive/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-kdenlive/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-kdenlive/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-kdenlive/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-kdenlive/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it kdenlive /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f kdenlive\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kdenlive\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kdenlive:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-kdenlive/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-kdenlive/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull kdenlive\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d kdenlive\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kdenlive/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/kdenlive:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop kdenlive\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm kdenlive\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kdenlive/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-kdenlive/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-kdenlive.git\ncd docker-kdenlive\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/kdenlive:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-kdenlive/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>24.04.23: - Ensure application launches in fullscreen.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>16.09.22: - Migrate to s6v3.</li> <li>09.03.22: - Update seccomp explanation.</li> <li>07.03.22: - Initial release.</li> </ul>"},{"location":"images/docker-kicad/","title":"kicad","text":""},{"location":"images/docker-kicad/#linuxserverkicad","title":"linuxserver/kicad","text":"<p>KiCad - A Cross Platform and Open Source Electronics Design Automation Suite.</p> <p></p>"},{"location":"images/docker-kicad/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kicad:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-kicad/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul> <p>A text editor is available in this image under /usr/bin/mousepad</p>"},{"location":"images/docker-kicad/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-kicad/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-kicad/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-kicad/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-kicad/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-kicad/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-kicad/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n kicad:\n image: lscr.io/linuxserver/kicad:latest\n container_name: kicad\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-kicad/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kicad \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kicad:latest\n</code></pre>"},{"location":"images/docker-kicad/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-kicad/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> KiCad desktop gui. <code>3001</code> KiCad desktop gui HTTPS."},{"location":"images/docker-kicad/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-kicad/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-kicad/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-kicad/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-kicad/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-kicad/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-kicad/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-kicad/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it kicad /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f kicad\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kicad\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kicad:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-kicad/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-kicad/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull kicad\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d kicad\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kicad/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/kicad:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop kicad\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm kicad\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kicad/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-kicad/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-kicad.git\ncd docker-kicad\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/kicad:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-kicad/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.12.23: - Initial release.</li> </ul>"},{"location":"images/docker-kimai/","title":"kimai","text":""},{"location":"images/docker-kimai/#linuxserverkimai","title":"linuxserver/kimai","text":"<p>Kimai is a professional grade time-tracking application, free and open-source. It handles use-cases of freelancers as well as companies with dozens or hundreds of users. Kimai was build to track your project times and ships with many advanced features, including but not limited to:</p> <p>JSON API, invoicing, data exports, multi-timer and punch-in punch-out mode, tagging, multi-user - multi-timezones - multi-language (over 30 translations existing!), authentication via SAML/LDAP/Database, two-factor authentication (2FA) with TOTP, customizable role and team permissions, responsive design, user/customer/project specific rates, advanced search &amp; filtering, money and time budgets, advanced reporting, support for plugins and so much more.</p> <p></p>"},{"location":"images/docker-kimai/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/kimai:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-kimai/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-kimai/#configure-your-database-connection","title":"Configure your database connection","text":"<p>You have to replace the following values with your defaults:</p> <ul> <li>the database username \"your_db_user\"</li> <li>the database password \"your_db_pass\"</li> <li>the database schema name \"your_db_name\"</li> <li>the database host or IP \"your_db_host\"</li> <li>the database character set \"your_db_charset\" (usually \"utf8\")</li> <li>the database version \"your_db_version\"</li> <li>run <code>SELECT VERSION();</code> in your MariaDB/MySQL database to get the version</li> <li>example for MariaDB use \"10.11.4-MariaDB-log\"</li> <li>example for MySQL use \"8.0.32\"</li> <li>you might have to adapt port \"3306\" as well</li> </ul> <pre><code>DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&amp;serverVersion=your_db_version\n````\n\n### Create your first user\n\n```shell\ndocker exec -it kimai console kimai:user:create your_username admin@example.com ROLE_SUPER_ADMIN\n</code></pre>"},{"location":"images/docker-kimai/#initial-setup","title":"Initial setup","text":"<p>Access the web gui at <code>http://&lt;your-ip&gt;:80</code>, for more information check out Kimai Initial setup.</p>"},{"location":"images/docker-kimai/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-kimai/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n kimai:\n image: lscr.io/linuxserver/kimai:latest\n container_name: kimai\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&amp;serverVersion=your_db_version\n volumes:\n - /path/to/kimai/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n\n# This container requires an external application to be run separately.\n# MariaDB\n mariadb:\n image: lscr.io/linuxserver/mariadb:latest\n container_name: mariadb\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD\n - MYSQL_DATABASE=your_db_name #optional\n - MYSQL_USER=your_db_user #optional\n - MYSQL_PASSWORD=your_db_pass #optional\n volumes:\n - path_to_data:/config\n ports:\n - 3306:3306\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-kimai/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=kimai \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&amp;serverVersion=your_db_version \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/kimai/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/kimai:latest\n\n# This container requires an external application to be run separately.\ndocker run -d \\\n --name=mariadb \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \\\n -e MYSQL_DATABASE=your_db_name `#optional` \\\n -e MYSQL_USER=your_db_user `#optional` \\\n -e MYSQL_PASSWORD=your_db_pass `#optional` \\\n -p 3306:3306 \\\n -v path_to_data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mariadb:latest\n</code></pre>"},{"location":"images/docker-kimai/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-kimai/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-kimai/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&amp;serverVersion=your_db_version</code> Configure your database connection, see Application Setup instructions."},{"location":"images/docker-kimai/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-kimai/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-kimai/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-kimai/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-kimai/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-kimai/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-kimai/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it kimai /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f kimai\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kimai\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kimai:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-kimai/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-kimai/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull kimai\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d kimai\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kimai/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/kimai:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop kimai\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm kimai\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-kimai/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-kimai/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-kimai.git\ncd docker-kimai\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/kimai:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-kimai/#versions","title":"Versions","text":"<ul> <li>24.03.24: - Added LDAP module to composer</li> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.01.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>02.01.24: - Symlink config.yaml to /config for user editing.</li> <li>21.08.23: - Important documentation update for setting <code>DATABASE_URL</code> with version 2.0.30 and later.</li> <li>09.08.23: - Initial Release.</li> </ul>"},{"location":"images/docker-krita/","title":"krita","text":""},{"location":"images/docker-krita/#linuxserverkrita","title":"linuxserver/krita","text":"<p>Krita is a professional FREE and open source painting program. It is made by artists that want to see affordable art tools for everyone.</p> <p></p>"},{"location":"images/docker-krita/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/krita:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-krita/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-krita/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-krita/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-krita/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-krita/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-krita/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-krita/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-krita/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n krita:\n image: lscr.io/linuxserver/krita:latest\n container_name: krita\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-krita/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=krita \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/krita:latest\n</code></pre>"},{"location":"images/docker-krita/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-krita/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Krita desktop gui. <code>3001</code> Krita desktop gui HTTPS."},{"location":"images/docker-krita/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-krita/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-krita/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-krita/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-krita/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-krita/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-krita/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-krita/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it krita /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f krita\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' krita\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/krita:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-krita/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-krita/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull krita\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d krita\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-krita/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/krita:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop krita\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm krita\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-krita/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-krita/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-krita.git\ncd docker-krita\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/krita:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-krita/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Rebase to Alpine 3.19, update Readme with new env vars, and ingest proper PWA icon.</li> <li>07.12.23: - Initial Release.</li> </ul>"},{"location":"images/docker-lazylibrarian/","title":"lazylibrarian","text":""},{"location":"images/docker-lazylibrarian/#linuxserverlazylibrarian","title":"linuxserver/lazylibrarian","text":"<p>Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.</p> <p></p>"},{"location":"images/docker-lazylibrarian/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/lazylibrarian:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-lazylibrarian/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>http://&lt;your-ip&gt;:5299/home</code>, for more information check out Lazylibrarian.</p>"},{"location":"images/docker-lazylibrarian/#calibredb-import","title":"Calibredb import","text":"<p>64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to <code>/usr/bin/calibredb</code></p>"},{"location":"images/docker-lazylibrarian/#ffmpeg","title":"ffmpeg","text":"<p>By adding <code>linuxserver/mods:lazylibrarian-ffmpeg</code> to your <code>DOCKER_MODS</code> environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings &gt; Processing &gt; External Programs by setting the ffmpeg path to <code>ffmpeg</code>.</p>"},{"location":"images/docker-lazylibrarian/#media-folders","title":"Media folders","text":"<p>We have set <code>/books</code> as optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional path if you dont understand, or dont want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-lazylibrarian/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-lazylibrarian/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n lazylibrarian:\n image: lscr.io/linuxserver/lazylibrarian:latest\n container_name: lazylibrarian\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional\n volumes:\n - /path/to/data:/config\n - /path/to/downloads/:/downloads\n - /path/to/data/:/books #optional\n ports:\n - 5299:5299\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-lazylibrarian/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=lazylibrarian \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg `#optional` \\\n -p 5299:5299 \\\n -v /path/to/data:/config \\\n -v /path/to/downloads/:/downloads \\\n -v /path/to/data/:/books `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/lazylibrarian:latest\n</code></pre>"},{"location":"images/docker-lazylibrarian/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-lazylibrarian/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5299</code> The port for the LazyLibrarian webinterface"},{"location":"images/docker-lazylibrarian/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg</code> Allows additional functionality to be added, e.g. the Calibredb import program (optional, more info below)"},{"location":"images/docker-lazylibrarian/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> LazyLibrarian config <code>/downloads</code> Download location <code>/books</code> Books location"},{"location":"images/docker-lazylibrarian/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lazylibrarian/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-lazylibrarian/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-lazylibrarian/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-lazylibrarian/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-lazylibrarian/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it lazylibrarian /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f lazylibrarian\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lazylibrarian\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lazylibrarian:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-lazylibrarian/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-lazylibrarian/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull lazylibrarian\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d lazylibrarian\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lazylibrarian/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/lazylibrarian:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop lazylibrarian\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm lazylibrarian\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lazylibrarian/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-lazylibrarian/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-lazylibrarian.git\ncd docker-lazylibrarian\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/lazylibrarian:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-lazylibrarian/#versions","title":"Versions","text":"<ul> <li>07.10.23: - Install unrar from linuxserver repo. Switch to Python virtual environment. Add Levenshtein.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source.</li> <li>27.09.22: - Switch to <code>Levenshtein</code>, add cmake as build dep on armhf.</li> <li>07.05.22: - Rebase to Ubuntu Focal.</li> <li>22.05.21: - Make the paths clearer to the user, remove optional volume.</li> <li>17.05.21: - Add linuxserver wheel index.</li> <li>23.10.19: - Changed gitlab download link.</li> <li>23.10.19: - Add python module Pillow.</li> <li>31.07.19: - Add pyopenssl, remove git dependency during build time.</li> <li>09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>05.03.19: - Added apprise python package.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>10.12.18: - Moved to Pipeline Building</li> <li>16.08.18: - Rebase to alpine 3.8</li> <li>05.01.18: - Deprecate cpu_core routine lack of scaling</li> <li>12.12.17: - Rebase to alpine 3.7</li> <li>21.07.17: - Internal git pull instead of at runtime</li> <li>25.05.17: - Rebase to alpine 3.6</li> <li>07.02.17: - Rebase to alpine 3.5</li> <li>30.01.17: - Compile libunrar.so to allow reading of .cbr format files</li> <li>12.01.17: - Add ghostscript package, allows magazine covers to be created etc</li> <li>14.10.16: - Add version layer information</li> <li>03.10.16: - Fix non-persistent settings and make log folder</li> <li>28.09.16: - Inital Release</li> </ul>"},{"location":"images/docker-ldap-auth/","title":"ldap-auth","text":""},{"location":"images/docker-ldap-auth/#linuxserverldap-auth","title":"linuxserver/ldap-auth","text":"<p>Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).</p> <p></p>"},{"location":"images/docker-ldap-auth/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ldap-auth:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ldap-auth/#application-setup","title":"Application Setup","text":"<ul> <li>This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config.</li> <li>Here's a sample config: nginx-ldap-auth.conf.</li> <li>Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined).</li> <li>Also unlike the upstream project, this image serves the login page at <code>/ldaplogin</code> (as well as <code>/login</code>) to prevent clashes with reverse proxied apps that may also use <code>/login</code> for their internal auth.</li> </ul>"},{"location":"images/docker-ldap-auth/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ldap-auth/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ldap-auth:\n image: lscr.io/linuxserver/ldap-auth:latest\n container_name: ldap-auth\n environment:\n - FERNETKEY= #optional\n - CERTFILE= #optional\n - KEYFILE= #optional\n ports:\n - 8888:8888\n - 9000:9000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ldap-auth/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ldap-auth \\\n -e FERNETKEY= `#optional` \\\n -e CERTFILE= `#optional` \\\n -e KEYFILE= `#optional` \\\n -p 8888:8888 \\\n -p 9000:9000 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ldap-auth:latest\n</code></pre>"},{"location":"images/docker-ldap-auth/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ldap-auth/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8888</code> the port for ldap auth daemon <code>9000</code> the port for ldap login page"},{"location":"images/docker-ldap-auth/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>FERNETKEY=</code> Optionally define a custom valid fernet key (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications) <code>CERTFILE=</code> Optionally point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon <code>KEYFILE=</code> Optionally point this to the private key file, matching the certificate file referred to in CERTFILE"},{"location":"images/docker-ldap-auth/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-ldap-auth/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ldap-auth/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ldap-auth/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ldap-auth/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ldap-auth/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ldap-auth /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ldap-auth\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ldap-auth\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ldap-auth:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ldap-auth/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ldap-auth/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ldap-auth\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ldap-auth\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ldap-auth/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ldap-auth:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ldap-auth\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ldap-auth\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ldap-auth/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ldap-auth/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ldap-auth.git\ncd docker-ldap-auth\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ldap-auth:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ldap-auth/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>20.06.23: - Sync upstream changes, including the ability to disable referrals with <code>X-Ldap-DisableReferrals</code>.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>30.12.22: - Rebase to alpine 3.17.</li> <li>19.09.22: - Rebase to alpine 3.15.</li> <li>14.05.21: - Add linuxserver wheel index.</li> <li>12.02.21: - Clean up cargo/rust cache.</li> <li>10.02.21: - Rebasing to alpine 3.13.</li> <li>08.09.20: - Set form action correctly.</li> <li>30.07.20: - Fix bug related to unset optional <code>CERTFILE</code> and <code>KEYFILE</code> vars.</li> <li>27.07.20: - Add support for HTTP over SSL (HTTPS).</li> <li>21.07.20: - Add support for optional user defined fernet key.</li> <li>02.06.20: - Rebasing to alpine 3.12, serve login page at <code>/ldaplogin</code> as well as <code>/login</code>, to prevent clashes with reverese proxied apps.</li> <li>17.05.20: - Add support for self-signed CA certs.</li> <li>20.02.20: - Switch to python3.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>01.07.19: - Fall back to base64 encoding when basic http auth is used.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>18.09.18: - Update pip</li> <li>14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params</li> <li>11.08.18: - Initial release.</li> </ul>"},{"location":"images/docker-libreoffice/","title":"libreoffice","text":""},{"location":"images/docker-libreoffice/#linuxserverlibreoffice","title":"linuxserver/libreoffice","text":"<p>LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.</p> <p></p>"},{"location":"images/docker-libreoffice/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/libreoffice:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-libreoffice/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-libreoffice/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-libreoffice/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-libreoffice/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-libreoffice/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-libreoffice/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-libreoffice/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n libreoffice:\n image: lscr.io/linuxserver/libreoffice:latest\n container_name: libreoffice\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-libreoffice/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=libreoffice \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/libreoffice:latest\n</code></pre>"},{"location":"images/docker-libreoffice/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-libreoffice/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> LibreOffice desktop gui. <code>3001</code> LibreOffice desktop gui HTTPS."},{"location":"images/docker-libreoffice/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-libreoffice/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and documents"},{"location":"images/docker-libreoffice/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-libreoffice/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-libreoffice/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-libreoffice/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-libreoffice/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-libreoffice/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it libreoffice /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f libreoffice\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libreoffice\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/libreoffice:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-libreoffice/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-libreoffice/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull libreoffice\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d libreoffice\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-libreoffice/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/libreoffice:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop libreoffice\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm libreoffice\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-libreoffice/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-libreoffice/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-libreoffice.git\ncd docker-libreoffice\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/libreoffice:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-libreoffice/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>02.01.24: - Rebase to Alpine 3.19.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>23.12.21: - Rebase to Alpine 3.15.</li> <li>26.09.21: - Rebase to Alpine 3.14.</li> <li>05.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-librespeed/","title":"librespeed","text":""},{"location":"images/docker-librespeed/#linuxserverlibrespeed","title":"linuxserver/librespeed","text":"<p>Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.</p> <p>No Flash, No Java, No Websocket, No Bullshit.</p> <p></p>"},{"location":"images/docker-librespeed/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/librespeed:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-librespeed/#application-setup","title":"Application Setup","text":"<p>Access the speedtest webui at <code>http://SERVERIP</code>. The results database can be accessed at <code>http://SERVERIP/results/stats.php</code> with the password set. The default template used is based on <code>example-singleServer-full.html</code>. However, all templates are provided for reference at <code>/config/www/</code>. Feel free to customize <code>/config/www/index.html</code> as you like. Delete the file and restart to go back to the image default. </p> <p>You can optionally place customized <code>speedtest.js</code> and <code>speedtest_worker.js</code> files under <code>/config/www</code> and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults. </p> <p>If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database</p> <p>To enable a custom results page set the environment variable <code>CUSTOM_RESULTS=true</code> and start (or restart) the container at least once for <code>/config/www/results/index.php</code> to be created and modify this file to your liking.</p>"},{"location":"images/docker-librespeed/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-librespeed/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n librespeed:\n image: lscr.io/linuxserver/librespeed:latest\n container_name: librespeed\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PASSWORD=PASSWORD\n - CUSTOM_RESULTS=false #optional\n - DB_TYPE=sqlite #optional\n - DB_NAME=DB_NAME #optional\n - DB_HOSTNAME=DB_HOSTNAME #optional\n - DB_USERNAME=DB_USERNAME #optional\n - DB_PASSWORD=DB_PASSWORD #optional\n - DB_PORT=DB_PORT #optional\n - IPINFO_APIKEY=ACCESS_TOKEN #optional\n volumes:\n - /path/to/librespeed/config:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-librespeed/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=librespeed \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PASSWORD=PASSWORD \\\n -e CUSTOM_RESULTS=false `#optional` \\\n -e DB_TYPE=sqlite `#optional` \\\n -e DB_NAME=DB_NAME `#optional` \\\n -e DB_HOSTNAME=DB_HOSTNAME `#optional` \\\n -e DB_USERNAME=DB_USERNAME `#optional` \\\n -e DB_PASSWORD=DB_PASSWORD `#optional` \\\n -e DB_PORT=DB_PORT `#optional` \\\n -e IPINFO_APIKEY=ACCESS_TOKEN `#optional` \\\n -p 80:80 \\\n -v /path/to/librespeed/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/librespeed:latest\n</code></pre>"},{"location":"images/docker-librespeed/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-librespeed/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> web gui"},{"location":"images/docker-librespeed/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PASSWORD=PASSWORD</code> Set the password for the results database. <code>CUSTOM_RESULTS=false</code> (optional) set to <code>true</code> to enable custom results page in <code>/config/www/results/index.php</code>. <code>DB_TYPE=sqlite</code> Defaults to <code>sqlite</code>, can also be set to <code>mysql</code> or <code>postgresql</code>. <code>DB_NAME=DB_NAME</code> Database name. Required for mysql and pgsql. <code>DB_HOSTNAME=DB_HOSTNAME</code> Database address. Required for mysql and pgsql. <code>DB_USERNAME=DB_USERNAME</code> Database username. Required for mysql and pgsql. <code>DB_PASSWORD=DB_PASSWORD</code> Database password. Required for mysql and pgsql. <code>DB_PORT=DB_PORT</code> Database port. Required for mysql. <code>IPINFO_APIKEY=ACCESS_TOKEN</code> Access token from ipinfo.io. Required for detailed IP information."},{"location":"images/docker-librespeed/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-librespeed/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-librespeed/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-librespeed/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-librespeed/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-librespeed/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-librespeed/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it librespeed /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f librespeed\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' librespeed\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/librespeed:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-librespeed/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-librespeed/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull librespeed\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d librespeed\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-librespeed/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/librespeed:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop librespeed\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm librespeed\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-librespeed/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-librespeed/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-librespeed.git\ncd docker-librespeed\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/librespeed:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-librespeed/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>06.12.23: - Replace php mysqli with php pdo_pgsql.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>14.05.23: - Added support for ipinfo.io</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>01.03.21: - Fix up database settings. Make sure <code>index.html</code> is recreated.</li> <li>28.02.21: - Added php7-ctype.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log.</li> <li>09.01.20: - Initial Release.</li> </ul>"},{"location":"images/docker-lidarr/","title":"lidarr","text":""},{"location":"images/docker-lidarr/#linuxserverlidarr","title":"linuxserver/lidarr","text":"<p>Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.</p> <p></p>"},{"location":"images/docker-lidarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/lidarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-lidarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Lidarr releases. develop \u2705 Develop Lidarr Releases. nightly \u2705 Nightly Lidarr Releases."},{"location":"images/docker-lidarr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8686</code>, for more information check out Lidarr.</p> <p>Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on separate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music.</p> <p>Another item to keep in mind, is that within Lidarr itself, you should then map your download client folder to your Lidarr folder: Settings -&gt; Download Client -&gt; advanced -&gt; remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to separate your downloaded data types.</p>"},{"location":"images/docker-lidarr/#media-folders","title":"Media folders","text":"<p>We have set <code>/music</code> and <code>/downloads</code> as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-lidarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-lidarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n lidarr:\n image: lscr.io/linuxserver/lidarr:latest\n container_name: lidarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/lidarr/config:/config\n - /path/to/music:/music #optional\n - /path/to/downloads:/downloads #optional\n ports:\n - 8686:8686\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-lidarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=lidarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8686:8686 \\\n -v /path/to/lidarr/config:/config \\\n -v /path/to/music:/music `#optional` \\\n -v /path/to/downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/lidarr:latest\n</code></pre>"},{"location":"images/docker-lidarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-lidarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8686</code> Application WebUI"},{"location":"images/docker-lidarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-lidarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files for Lidarr. <code>/music</code> Music files (See note in Application setup). <code>/downloads</code> Path to your download folder for music (See note in Application setup)."},{"location":"images/docker-lidarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lidarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-lidarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-lidarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-lidarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-lidarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it lidarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f lidarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lidarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lidarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-lidarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-lidarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull lidarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d lidarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lidarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/lidarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop lidarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm lidarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lidarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-lidarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-lidarr.git\ncd docker-lidarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/lidarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-lidarr/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase Alpine 3.19.</li> <li>06.06.23: - Rebase master to Alpine 3.18, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>17.01.23: - Rebase master branch to Alpine 3.17, migrate to s6v3.</li> <li>06.06.22: - Rebase master branch to Alpine 3.15.</li> <li>06.05.22: - Rebase master branch to Focal.</li> <li>06.05.22: - Rebase develop branch to Alpine.</li> <li>04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch.</li> <li>30.12.21: - Add nightly-alpine branch.</li> <li>01.08.21: - Add libchromaprint-tools.</li> <li>11.07.21: - Make the paths clearer to the user.</li> <li>18.04.21: - Switch <code>latest</code> tag to net core.</li> <li>25.01.21: - Publish <code>develop</code> tag.</li> <li>20.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>18.04.20: - Removed /downloads and /music volumes from Dockerfiles.</li> <li>05.04.20: - Move app to /app.</li> <li>01.08.19: - Rebase to Linuxserver LTS mono version.</li> <li>13.06.19: - Add env variable for setting umask.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>22.04.18: - Switch to beta builds.</li> <li>17.03.18: - Add ENV XDG_CONFIG_HOME=\"/config/xdg\" to Dockerfile for signalr fix.</li> <li>27.02.18: - Use json to query for new version.</li> <li>23.02.18: - Initial Release.</li> </ul>"},{"location":"images/docker-limnoria/","title":"limnoria","text":""},{"location":"images/docker-limnoria/#linuxserverlimnoria","title":"linuxserver/limnoria","text":"<p>Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.</p> <p></p>"},{"location":"images/docker-limnoria/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/limnoria:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-limnoria/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-limnoria/#new-configuration","title":"New Configuration","text":"<p>If you do not have an existing config you will need to start the container and then run the following wizard command:</p> <p><code>docker exec -it -w /config -u abc limnoria limnoria-wizard</code></p>"},{"location":"images/docker-limnoria/#existing-configuration","title":"Existing Configuration","text":"<p>If you have an existing config, adjust the directory settings in your conf file as follows:</p> <pre><code>supybot.directories.backup: /config/backup\nsupybot.directories.conf: /config/conf\nsupybot.directories.data: /config/data\nsupybot.directories.data.tmp: /config/data/tmp\nsupybot.directories.data.web: /config/web\nsupybot.directories.log: /config/logs\nsupybot.directories.plugins: /config/plugins\n</code></pre> <p>NOTE: These are not grouped together in the file. You will need to search your conf file for the variables.</p> <p>Then place your conf file and any of your existing directories in /config and start up the container.</p>"},{"location":"images/docker-limnoria/#plugin-requirements","title":"Plugin Requirements","text":"<p>The container will pip install any requirements.txt it finds in the /config/plugins folder on startup.</p> <p>If you install a plugin using the PluginDownloader that includes a requirements.txt you can execute a shell into the container and then use <code>pip install /config/plugins/ThePlugin/requirements.txt</code> or restart the container and the requirements will be installed.</p>"},{"location":"images/docker-limnoria/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-limnoria/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n limnoria:\n image: lscr.io/linuxserver/limnoria:latest\n container_name: limnoria\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/limnoria/config:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-limnoria/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=limnoria \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/limnoria/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/limnoria:latest\n</code></pre>"},{"location":"images/docker-limnoria/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-limnoria/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Port for Limnoria's web interface."},{"location":"images/docker-limnoria/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-limnoria/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-limnoria/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-limnoria/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-limnoria/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-limnoria/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-limnoria/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-limnoria/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it limnoria /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f limnoria\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' limnoria\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/limnoria:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-limnoria/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-limnoria/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull limnoria\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d limnoria\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-limnoria/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/limnoria:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop limnoria\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm limnoria\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-limnoria/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-limnoria/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-limnoria.git\ncd docker-limnoria\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/limnoria:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-limnoria/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>22.12.22: - Rebase to alpine 3.17.</li> <li>19.09.22: - Rebase to alpine 3.15.</li> <li>25.05.21: - Install plugin requirements on container init.</li> <li>17.05.21: - Add linuxserver wheel index.</li> <li>13.02.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>13.01.20: - Initial Release.</li> </ul>"},{"location":"images/docker-lollypop/","title":"lollypop","text":""},{"location":"images/docker-lollypop/#linuxserverlollypop","title":"linuxserver/lollypop","text":"<p>Lollypop is a lightweight modern music player designed to work excellently on the GNOME desktop environment.</p> <p></p>"},{"location":"images/docker-lollypop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/lollypop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-lollypop/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-lollypop/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-lollypop/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-lollypop/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-lollypop/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-lollypop/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-lollypop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-lollypop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n lollypop:\n image: lscr.io/linuxserver/lollypop:latest\n container_name: lollypop\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-lollypop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=lollypop \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/lollypop:latest\n</code></pre>"},{"location":"images/docker-lollypop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-lollypop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Lollypop desktop gui. <code>3001</code> Lollypop desktop gui HTTPS."},{"location":"images/docker-lollypop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-lollypop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores settings and downloaded metadata for music."},{"location":"images/docker-lollypop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-lollypop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-lollypop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-lollypop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-lollypop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-lollypop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it lollypop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f lollypop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lollypop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lollypop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-lollypop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-lollypop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull lollypop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d lollypop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lollypop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/lollypop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop lollypop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm lollypop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lollypop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-lollypop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-lollypop.git\ncd docker-lollypop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/lollypop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-lollypop/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>21.01.24: - Rebase to Alpine 3.19.</li> <li>21.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-lychee/","title":"lychee","text":""},{"location":"images/docker-lychee/#linuxserverlychee","title":"linuxserver/lychee","text":"<p>Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\"</p> <p></p>"},{"location":"images/docker-lychee/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/lychee:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-lychee/#application-setup","title":"Application Setup","text":"<p>This image will not work with a prefilled <code>/pictures</code> mount, Lychee wants total control over this folder</p> <p>Setup account via the webui, accessible at http://SERVERIP:PORT</p> <p>More info at lychee.</p>"},{"location":"images/docker-lychee/#customization","title":"Customization","text":"<p>In certain scenarios, you might need to change the default settings of Lychee. For instance, if you encounter limitations when uploading large files, you can increase this limit.</p>"},{"location":"images/docker-lychee/#increasing-upload-limit","title":"Increasing Upload Limit","text":"<p>The upload limit is defined in the <code>user.ini</code> file located in the config directory (<code>/config</code>). You can increase this limit by modifying the following values:</p> <pre><code>post_max_size = 500M\nupload_max_filesize = 500M\n</code></pre> <p>After making these changes, you'll need to restart the Docker container for the changes to take effect.</p> <p>Please note that these changes might have implications on your server's performance, depending on its available resources. Thus, it's recommended to modify these settings with caution.</p>"},{"location":"images/docker-lychee/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-lychee/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n lychee:\n image: lscr.io/linuxserver/lychee:latest\n container_name: lychee\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_CONNECTION=\n - DB_HOST=\n - DB_PORT=\n - DB_USERNAME=\n - DB_PASSWORD=\n - DB_DATABASE=\n - APP_NAME=Lychee #optional\n - APP_URL= #optional\n - TRUSTED_PROXIES= #optional\n volumes:\n - /path/to/lychee/config:/config\n - /path/to/pictures:/pictures\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-lychee/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=lychee \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_CONNECTION= \\\n -e DB_HOST= \\\n -e DB_PORT= \\\n -e DB_USERNAME= \\\n -e DB_PASSWORD= \\\n -e DB_DATABASE= \\\n -e APP_NAME=Lychee `#optional` \\\n -e APP_URL= `#optional` \\\n -e TRUSTED_PROXIES= `#optional` \\\n -p 80:80 \\\n -v /path/to/lychee/config:/config \\\n -v /path/to/pictures:/pictures \\\n --restart unless-stopped \\\n lscr.io/linuxserver/lychee:latest\n</code></pre>"},{"location":"images/docker-lychee/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-lychee/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui"},{"location":"images/docker-lychee/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DB_CONNECTION=</code> DB type, from <code>sqlite</code>, <code>mysql</code>, <code>pqsql</code>. <code>DB_HOST=</code> DB server hostname. For <code>mysql</code> and <code>pgsql</code> only. <code>DB_PORT=</code> DB server port. For <code>mysql</code> and <code>pgsql</code> only. <code>DB_USERNAME=</code> DB user. For <code>mysql</code> and <code>pgsql</code> only. <code>DB_PASSWORD=</code> DB password. For <code>mysql</code> and <code>pgsql</code> only. <code>DB_DATABASE=</code> Path to DB file for <code>sqlite</code>. DB name for <code>mysql</code> and <code>pgsql</code>. <code>APP_NAME=Lychee</code> The gallery name. <code>APP_URL=</code> The URL you will use to access Lychee including protocol, and port where appropriate. <code>TRUSTED_PROXIES=</code> Set to the IP or netmask covering your reverse proxy, if running behind one. Set to <code>*</code> to trust all IPs (do not use <code>*</code> if exposed to the internet`)."},{"location":"images/docker-lychee/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files. <code>/pictures</code> Where lychee will store uploaded images."},{"location":"images/docker-lychee/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lychee/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-lychee/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-lychee/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-lychee/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-lychee/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it lychee /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f lychee\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lychee\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lychee:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-lychee/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-lychee/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull lychee\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d lychee\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lychee/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/lychee:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop lychee\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm lychee\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-lychee/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-lychee/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-lychee.git\ncd docker-lychee\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/lychee:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-lychee/#versions","title":"Versions","text":"<ul> <li>18.01.24: - Add php-sodium.</li> <li>13.01.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>27.12.23: - Update image to support v5.</li> <li>25.12.23: - Existing users should update: site-confs/default.conf - Cleanup default site conf. Build npm dependencies into image.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>11.01.23: - Rebasing to alpine 3.17 with php8.1. Restructure nginx configs (see changes announcement). Switch to git clone as builds fail with the release artifact.</li> <li>13.05.21: - Make readme clearer.</li> <li>18.04.21: - Add php-intl for v4.3.</li> <li>31.01.21: - Add jpegoptim.</li> <li>15.01.21: - Rebase to alpine 3.13, add php7-ctype.</li> <li>10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>23.10.19: - Increase fastcgi timeouts (existing users need to manually update).</li> <li>19.09.19: - Update project website url.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>05.05.19: - Rebase to alpine 3.9, use new armv7 image format.</li> <li>21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme.</li> <li>14.01.19: - Adding pipeline logic and multi arch..</li> <li>04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository.</li> <li>08.01.18: - Rebase to alpine 3.7.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.</li> <li>12.02.17: - Initial Release.</li> </ul>"},{"location":"images/docker-mariadb/","title":"mariadb","text":""},{"location":"images/docker-mariadb/#linuxservermariadb","title":"linuxserver/mariadb","text":"<p>Mariadb is one of the most popular database servers. Made by the original developers of MySQL.</p> <p></p>"},{"location":"images/docker-mariadb/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mariadb:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-mariadb/#application-setup","title":"Application Setup","text":"<p>If you didn't set a password during installation, (see logs for warning) use <code>mariadb-admin -u root -p&lt;PASSWORD&gt;</code> to set one at the docker prompt...</p> <p>NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password.</p> <p>NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose.</p> <p>Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable.</p> <p>Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl</p>"},{"location":"images/docker-mariadb/#loading-passwords-and-users-from-files","title":"Loading passwords and users from files","text":"<p>The <code>MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL</code> env values can be set in a file:</p> <pre><code>/config/env\n</code></pre> <p>Using the following format:</p> <pre><code>MYSQL_ROOT_PASSWORD=\"ROOT_ACCESS_PASSWORD\"\nMYSQL_DATABASE=\"USER_DB_NAME\"\nMYSQL_USER=\"MYSQL_USER\"\nMYSQL_PASSWORD=\"DATABASE_PASSWORD\"\nREMOTE_SQL=\"http://URL1/your.sql,https://URL2/your.sql\"\n</code></pre> <p>These settings can be mixed and matched with Docker ENV settings as you require, but the settings in the file will always take precedence.</p>"},{"location":"images/docker-mariadb/#bootstrapping-a-new-instance","title":"Bootstrapping a new instance","text":"<p>We support a one time run of custom sql files on init. In order to use this place <code>*.sql</code> files in:</p> <p><pre><code>/config/initdb.d/\n</code></pre> This will have the same effect as setting the <code>REMOTE_SQL</code> environment variable. The sql will only be run on the containers first boot and setup.</p>"},{"location":"images/docker-mariadb/#check-and-repair","title":"Check and Repair","text":"<p>If user databases are not in a healthy state (sometimes caused by a failed upgrade), it may be remedied by running:</p> <pre><code>mariadb-check -u root -p&lt;PASSWORD&gt; -c -A # check all databases for errors\nmariadb-check -u root -p&lt;PASSWORD&gt; -r -A # repair all databases\nmariadb-check -u root -p&lt;PASSWORD&gt; -a -A # analyze all databases\nmariadb-check -u root -p&lt;PASSWORD&gt; -o -A # optimize all databases\n</code></pre> <p>After running the above commands, you may need to run the upgrade command again.</p>"},{"location":"images/docker-mariadb/#upgrading","title":"Upgrading","text":"<p>When this container initializes, if <code>MYSQL_ROOT_PASSWORD</code> is set an upgrade check will run. If an upgrade is required the log will indicate the need stop any services that are accessing databases in this container, and then run the command:</p> <pre><code>mariadb-upgrade -u root -p&lt;PASSWORD&gt;\n</code></pre>"},{"location":"images/docker-mariadb/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mariadb/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mariadb:\n image: lscr.io/linuxserver/mariadb:latest\n container_name: mariadb\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD\n - MYSQL_DATABASE=USER_DB_NAME #optional\n - MYSQL_USER=MYSQL_USER #optional\n - MYSQL_PASSWORD=DATABASE_PASSWORD #optional\n - REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql #optional\n volumes:\n - /path/to/mariadb/config:/config\n ports:\n - 3306:3306\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mariadb/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mariadb \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \\\n -e MYSQL_DATABASE=USER_DB_NAME `#optional` \\\n -e MYSQL_USER=MYSQL_USER `#optional` \\\n -e MYSQL_PASSWORD=DATABASE_PASSWORD `#optional` \\\n -e REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql `#optional` \\\n -p 3306:3306 \\\n -v /path/to/mariadb/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mariadb:latest\n</code></pre>"},{"location":"images/docker-mariadb/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mariadb/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3306</code> Mariadb listens on this port."},{"location":"images/docker-mariadb/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD</code> Set this to root password for installation (minimum 4 characters &amp; non-alphanumeric passwords must be properly escaped). <code>MYSQL_DATABASE=USER_DB_NAME</code> Specify the name of a database to be created on image startup. <code>MYSQL_USER=MYSQL_USER</code> This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here). <code>MYSQL_PASSWORD=DATABASE_PASSWORD</code> Set this to the password you want to use for you MYSQL_USER (minimum 4 characters &amp; non-alphanumeric passwords must be properly escaped). <code>REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql</code> Set this to ingest sql files from an http/https endpoint (comma seperated array)."},{"location":"images/docker-mariadb/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-mariadb/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mariadb/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mariadb/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mariadb/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mariadb/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mariadb/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mariadb /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mariadb\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mariadb\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mariadb:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mariadb/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mariadb/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mariadb\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mariadb\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mariadb/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mariadb:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mariadb\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mariadb\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mariadb/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mariadb/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mariadb.git\ncd docker-mariadb\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mariadb:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mariadb/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>09.06.23: - Update lc_messages path in shipped custom.cnf to match upstream.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>04.02.23: - Minor updates to defaults in custom.cnf.</li> <li>31.01.23: - Rebase to 3.17.</li> <li>09.12.22: - Add upgrade check warning.</li> <li>11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users.</li> <li>06.07.21: - Rebase master to alpine.</li> <li>03.07.21: - Rebase to 3.14.</li> <li>08.02.21: - Fix new installs.</li> <li>08.02.21: - Rebase to alpine. Add mariadb-backup.</li> <li>08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future.</li> <li>27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>07.03.19: - Add ability to setup a database and default user on first spinup.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository.</li> <li>09.12.17: - Fix continuation lines.</li> <li>12.09.17: - Gracefully shut down mariadb.</li> <li>27.10.16: - Implement linting suggestions on database init script.</li> <li>11.10.16: - Rebase to ubuntu xenial, add version labelling.</li> <li>09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile.</li> <li>26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart.</li> <li>23.12.15: - Remove autoupdating, between some version updates the container breaks.</li> <li>12.08.15: - Initial Release.</li> </ul>"},{"location":"images/docker-mastodon/","title":"mastodon","text":""},{"location":"images/docker-mastodon/#linuxservermastodon","title":"linuxserver/mastodon","text":"<p>Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..</p> <p></p>"},{"location":"images/docker-mastodon/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mastodon:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-mastodon/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases. develop \u2705 Pre-releases only. glitch \u2705 glitch-soc fork releases."},{"location":"images/docker-mastodon/#application-setup","title":"Application Setup","text":"<p>We provide aliases for the common commands that execute in the correct context so that environment variables from secrets are available to them:</p> <ul> <li> <p>To generate keys for <code>SECRET_KEY_BASE</code> &amp; <code>OTP_SECRET</code> run <code>docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-secret</code> once for each.</p> </li> <li> <p>To generate keys for <code>VAPID_PRIVATE_KEY</code> &amp; <code>VAPID_PUBLIC_KEY</code> run <code>docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-vapid</code></p> </li> </ul> <p>Both of the secret generation aliases above can be run without any other setup having been carried out.</p> <ul> <li>To use <code>tootctl</code> you can run something like <code>docker exec -it lscr.io/linuxserver/mastodon /tootctl &lt;command&gt;</code></li> </ul> <p>Using <code>tootctl</code> requires you to complete the initial Mastodon configuration first.</p> <p>This container requires separate postgres and redis instances to run.</p> <p>We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project.</p> <p>For more information check out the mastodon documentation.</p>"},{"location":"images/docker-mastodon/#running-separate-sidekiq-instances","title":"Running separate sidekiq instances","text":"<p>It is currently only supported to run a single queue per container instance or all queues in a single container instance.</p> <p>All containers must share the same <code>/config</code> mount and be on a common docker network.</p>"},{"location":"images/docker-mastodon/#no_chown-option","title":"NO_CHOWN Option","text":"<p>On larger Mastodon instances, our init process to verify that permissions are set correctly can noticeably slow down the container startup. If you are experiencing this, you can set <code>NO_CHOWN</code> to <code>true</code> to skip that step of the init.</p> <p>Do NOT set this on first run of the container. If you enable this option you are taking full responsibility for ensuring that the permissions in your /config mount are correct. If you're even slightly unsure, don't set it.</p>"},{"location":"images/docker-mastodon/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-mastodon/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mastodon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mastodon:\n image: lscr.io/linuxserver/mastodon:latest\n container_name: mastodon\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - LOCAL_DOMAIN=example.com\n - REDIS_HOST=redis\n - REDIS_PORT=6379\n - DB_HOST=db\n - DB_USER=mastodon\n - DB_NAME=mastodon\n - DB_PASS=mastodon\n - DB_PORT=5432\n - ES_ENABLED=false\n - SECRET_KEY_BASE=\n - OTP_SECRET=\n - VAPID_PRIVATE_KEY=\n - VAPID_PUBLIC_KEY=\n - SMTP_SERVER=mail.example.com\n - SMTP_PORT=25\n - SMTP_LOGIN=\n - SMTP_PASSWORD=\n - SMTP_FROM_ADDRESS=notifications@example.com\n - S3_ENABLED=false\n - WEB_DOMAIN=mastodon.example.com #optional\n - ES_HOST=es #optional\n - ES_PORT=9200 #optional\n - ES_USER=elastic #optional\n - ES_PASS=elastic #optional\n - S3_BUCKET= #optional\n - AWS_ACCESS_KEY_ID= #optional\n - AWS_SECRET_ACCESS_KEY= #optional\n - S3_ALIAS_HOST= #optional\n - SIDEKIQ_ONLY=false #optional\n - SIDEKIQ_QUEUE= #optional\n - SIDEKIQ_DEFAULT=false #optional\n - SIDEKIQ_THREADS=5 #optional\n - DB_POOL=5 #optional\n - NO_CHOWN= #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mastodon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mastodon \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e LOCAL_DOMAIN=example.com \\\n -e REDIS_HOST=redis \\\n -e REDIS_PORT=6379 \\\n -e DB_HOST=db \\\n -e DB_USER=mastodon \\\n -e DB_NAME=mastodon \\\n -e DB_PASS=mastodon \\\n -e DB_PORT=5432 \\\n -e ES_ENABLED=false \\\n -e SECRET_KEY_BASE= \\\n -e OTP_SECRET= \\\n -e VAPID_PRIVATE_KEY= \\\n -e VAPID_PUBLIC_KEY= \\\n -e SMTP_SERVER=mail.example.com \\\n -e SMTP_PORT=25 \\\n -e SMTP_LOGIN= \\\n -e SMTP_PASSWORD= \\\n -e SMTP_FROM_ADDRESS=notifications@example.com \\\n -e S3_ENABLED=false \\\n -e WEB_DOMAIN=mastodon.example.com `#optional` \\\n -e ES_HOST=es `#optional` \\\n -e ES_PORT=9200 `#optional` \\\n -e ES_USER=elastic `#optional` \\\n -e ES_PASS=elastic `#optional` \\\n -e S3_BUCKET= `#optional` \\\n -e AWS_ACCESS_KEY_ID= `#optional` \\\n -e AWS_SECRET_ACCESS_KEY= `#optional` \\\n -e S3_ALIAS_HOST= `#optional` \\\n -e SIDEKIQ_ONLY=false `#optional` \\\n -e SIDEKIQ_QUEUE= `#optional` \\\n -e SIDEKIQ_DEFAULT=false `#optional` \\\n -e SIDEKIQ_THREADS=5 `#optional` \\\n -e DB_POOL=5 `#optional` \\\n -e NO_CHOWN= `#optional` \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mastodon:latest\n</code></pre>"},{"location":"images/docker-mastodon/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mastodon/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Port for web frontend <code>443</code> Port for web frontend"},{"location":"images/docker-mastodon/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>LOCAL_DOMAIN=example.com</code> This is the unique identifier of your server in the network. It cannot be safely changed later. <code>REDIS_HOST=redis</code> Redis server hostname <code>REDIS_PORT=6379</code> Redis port <code>DB_HOST=db</code> Postgres database hostname <code>DB_USER=mastodon</code> Postgres username <code>DB_NAME=mastodon</code> Postgres db name <code>DB_PASS=mastodon</code> Postgres password <code>DB_PORT=5432</code> Portgres port <code>ES_ENABLED=false</code> Enable or disable Elasticsearch (requires a separate ES instance) <code>SECRET_KEY_BASE=</code> Browser session secret. Changing it will break all active browser sessions. <code>OTP_SECRET=</code> MFA secret. Changing it after initial setup will break two-factor authentication. <code>VAPID_PRIVATE_KEY=</code> Push notification private key. Changing it after initial setup will break push notifications. <code>VAPID_PUBLIC_KEY=</code> Push notification public key. Changing it after initial setup will break push notifications. <code>SMTP_SERVER=mail.example.com</code> SMTP server for email notifications <code>SMTP_PORT=25</code> SMTP server port <code>SMTP_LOGIN=</code> SMTP username <code>SMTP_PASSWORD=</code> SMTP password <code>SMTP_FROM_ADDRESS=notifications@example.com</code> From address for emails send from Mastodon <code>S3_ENABLED=false</code> Enable or disable S3 storage of uploaded files <code>WEB_DOMAIN=mastodon.example.com</code> This can be set if you want your server identifier to be different to the subdomain hosting Mastodon. See https://docs.joinmastodon.org/admin/config/#basic <code>ES_HOST=es</code> Elasticsearch server hostname <code>ES_PORT=9200</code> Elasticsearch port <code>ES_USER=elastic</code> Elasticsearch username <code>ES_PASS=elastic</code> Elasticsearch password <code>S3_BUCKET=</code> S3 bucket hostname <code>AWS_ACCESS_KEY_ID=</code> S3 bucket access key ID <code>AWS_SECRET_ACCESS_KEY=</code> S3 bucket secret access key <code>S3_ALIAS_HOST=</code> Alternate hostname for object fetching if you are front the S3 connections. <code>SIDEKIQ_ONLY=false</code> Only run the sidekiq service in this container instance. For large scale instances that need better queue handling. <code>SIDEKIQ_QUEUE=</code> The name of the sidekiq queue to run in this container. See notes. <code>SIDEKIQ_DEFAULT=false</code> Set to <code>true</code> on the main container if you're running additional sidekiq instances. It will run the <code>default</code> queue. <code>SIDEKIQ_THREADS=5</code> The number of threads for sidekiq to use. See notes. <code>DB_POOL=5</code> The size of the DB connection pool, must be at least the same as <code>SIDEKIQ_THREADS</code>. See notes. <code>NO_CHOWN=</code> Set to <code>true</code> to skip chown of /config on init. READ THE APPLICATION NOTES BEFORE SETTING THIS."},{"location":"images/docker-mastodon/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-mastodon/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mastodon/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mastodon/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mastodon/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mastodon/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mastodon/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mastodon /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mastodon\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mastodon\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mastodon:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mastodon/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mastodon/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mastodon\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mastodon\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mastodon/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mastodon:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mastodon\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mastodon\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mastodon/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mastodon/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mastodon.git\ncd docker-mastodon\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mastodon:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mastodon/#versions","title":"Versions","text":"<ul> <li>21.09.23: - Rebase to Alpine 3.18, migrate to s6v3.</li> <li>25.05.23: - Adjust apk flags.</li> <li>09.02.23: - Add Glitch branch.</li> <li>09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration).</li> <li>19.12.22: - Support separate sidekiq queue instances.</li> <li>05.11.22: - Initial Release.</li> </ul>"},{"location":"images/docker-mediaelch/","title":"mediaelch","text":""},{"location":"images/docker-mediaelch/#linuxservermediaelch","title":"linuxserver/mediaelch","text":"<p>MediaElch is a MediaManager for Kodi. Information about Movies, TV Shows, Concerts and Music are stored as nfo files. Fanarts are downloaded automatically from fanart.tv. Using the nfo generator, MediaElch can be used with other MediaCenters as well.</p> <p></p>"},{"location":"images/docker-mediaelch/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mediaelch:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-mediaelch/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-mediaelch/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-mediaelch/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-mediaelch/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-mediaelch/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-mediaelch/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-mediaelch/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mediaelch/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mediaelch:\n image: lscr.io/linuxserver/mediaelch:latest\n container_name: mediaelch\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mediaelch/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mediaelch \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mediaelch:latest\n</code></pre>"},{"location":"images/docker-mediaelch/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mediaelch/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> MediaElch desktop gui. <code>3001</code> MediaElch desktop gui HTTPS."},{"location":"images/docker-mediaelch/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-mediaelch/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-mediaelch/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-mediaelch/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mediaelch/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mediaelch/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mediaelch/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mediaelch/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mediaelch /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mediaelch\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mediaelch\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mediaelch:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mediaelch/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mediaelch/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mediaelch\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mediaelch\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mediaelch/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mediaelch:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mediaelch\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mediaelch\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mediaelch/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mediaelch/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mediaelch.git\ncd docker-mediaelch\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mediaelch:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mediaelch/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>07.12.23: - Initial release.</li> </ul>"},{"location":"images/docker-medusa/","title":"medusa","text":""},{"location":"images/docker-medusa/#linuxservermedusa","title":"linuxserver/medusa","text":"<p>Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.</p> <p></p>"},{"location":"images/docker-medusa/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/medusa:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-medusa/#application-setup","title":"Application Setup","text":"<p>Web interface is at <code>&lt;your ip&gt;:8081</code>. </p> <p>Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa.</p>"},{"location":"images/docker-medusa/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-medusa/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n medusa:\n image: lscr.io/linuxserver/medusa:latest\n container_name: medusa\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/medusa/config:/config\n - /path/to/downloads:/downloads\n - /path/to/tv/shows:/tv\n ports:\n - 8081:8081\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-medusa/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=medusa \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8081:8081 \\\n -v /path/to/medusa/config:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/tv/shows:/tv \\\n --restart unless-stopped \\\n lscr.io/linuxserver/medusa:latest\n</code></pre>"},{"location":"images/docker-medusa/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-medusa/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8081</code> The port for the Medusa webui"},{"location":"images/docker-medusa/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-medusa/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/downloads</code> Download location <code>/tv</code> TV Shows location"},{"location":"images/docker-medusa/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-medusa/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-medusa/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-medusa/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-medusa/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-medusa/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it medusa /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f medusa\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' medusa\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/medusa:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-medusa/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-medusa/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull medusa\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d medusa\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-medusa/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/medusa:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop medusa\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm medusa\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-medusa/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-medusa/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-medusa.git\ncd docker-medusa\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/medusa:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-medusa/#versions","title":"Versions","text":"<ul> <li>08.01.24: - Rebase to Alpine 3.19.</li> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>11.07.23: - Rebase to Alpine 3.18.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>12.09.22: - Install ffmpeg for postprocessing.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>28.02.22: - Install python3 requirements for app.</li> <li>19.01.22: - Rebasing to alpine 3.15.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>22.09.19: - Switch to python3.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>14.01.19: - Adding multi arch and pipeline logic</li> <li>16.08.18: - Rebase to alpine 3.8</li> <li>08.12.17: - Rebase to alpine 3.7</li> <li>29.11.17: - Add py-gdbm for subtitles support</li> <li>26.10.17: - Mediainfo moved from testing to community repo</li> <li>10.10.17: - Use repo version of mediainfo to shorten build time</li> <li>05.08.17: - Internal git pull instead of at runtime</li> <li>25.05.17: - Rebase to alpine 3.6</li> <li>07.02.17: - Rebase to alpine 3.5</li> <li>02.01.17: - Initial Release</li> </ul>"},{"location":"images/docker-minetest/","title":"minetest","text":""},{"location":"images/docker-minetest/#linuxserverminetest","title":"linuxserver/minetest","text":"<p>Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.</p> <p></p>"},{"location":"images/docker-minetest/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/minetest:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-minetest/#application-setup","title":"Application Setup","text":"<p>You can find the world maps, mods folder and config files in /config/.minetest.</p> <p>If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp</p> <p>Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:</p> <p>https://hub.docker.com/r/linuxserver/minetest/tags</p>"},{"location":"images/docker-minetest/#bundled-games","title":"Bundled Games","text":"<p>As per upstream request this image no longer includes minetest_game, so if required you will need to either install via ContentDB or download it from their repo and copy to <code>/config/.minetest/games/minetest</code></p>"},{"location":"images/docker-minetest/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-minetest/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n minetest:\n image: lscr.io/linuxserver/minetest:latest\n container_name: minetest\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - \"CLI_ARGS=--gameid minetest --port 30000\" #optional\n volumes:\n - /path/to/data:/config/.minetest\n ports:\n - 30000:30000/udp\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-minetest/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=minetest \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CLI_ARGS=\"--gameid minetest --port 30000\" `#optional` \\\n -p 30000:30000/udp \\\n -v /path/to/data:/config/.minetest \\\n --restart unless-stopped \\\n lscr.io/linuxserver/minetest:latest\n</code></pre>"},{"location":"images/docker-minetest/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-minetest/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>30000/udp</code> Port Minetest listens on."},{"location":"images/docker-minetest/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CLI_ARGS=--gameid minetest --port 30000</code> Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-minetest/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config/.minetest</code> Where minetest stores config files and maps etc."},{"location":"images/docker-minetest/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-minetest/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-minetest/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-minetest/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-minetest/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-minetest/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it minetest /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f minetest\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minetest\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minetest:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-minetest/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-minetest/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull minetest\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d minetest\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-minetest/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/minetest:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop minetest\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm minetest\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-minetest/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-minetest/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-minetest.git\ncd docker-minetest\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/minetest:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-minetest/#versions","title":"Versions","text":"<ul> <li>26.01.24: - Temporaroly pin irrlicht to continue building pending a bugfix release.</li> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebase to Alpine 3.18, remove minetest_game.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>09.04.23: - Build logic changes to copy devtest to default games.</li> <li>17.03.23: - Fix CLI_ARGS example in readme.</li> <li>23.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>06.08.22: - Update irrlicht deps.</li> <li>02.05.22: - Allow specifying the advertised port.</li> <li>17.03.22: - Install forked irrlicht, add zstd.</li> <li>19.01.22: - Rebasing to alpine 3.15.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>12.07.19: - Bugfix to support multiple CLI variables.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>03.06.19: - Adding custom cli vars to options.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args.</li> <li>14.01.19: - Add pipeline logic and multi arch.</li> <li>08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master.</li> <li>03.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>08.12.17: - Rebase to alpine 3.7.</li> <li>30.11.17: - Use cpu core counting routine to speed up build time.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>14.02.17: - Rebase to alpine 3.5.</li> <li>25.11.16: - Rebase to alpine linux, move to main repo.</li> <li>27.02.16: - Bump to latest version.</li> <li>19.02.16: - Change port to UDP, thanks to slashopt for pointing this out.</li> <li>15.02.16: - Make minetest app a service.</li> <li>01.02.16: - Add lua-socket dependency.</li> <li>06.11.15: - Initial Release.</li> </ul>"},{"location":"images/docker-minisatip/","title":"minisatip","text":""},{"location":"images/docker-minisatip/#linuxserverminisatip","title":"linuxserver/minisatip","text":"<p>Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.</p> <p></p>"},{"location":"images/docker-minisatip/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/minisatip:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-minisatip/#application-setup","title":"Application Setup","text":"<p>Best used in conjunction with tvheadend</p> <p>There is no setup per se, other than adding your cards for passthrough.</p> <p>You can then use your cards as DVB inputs in apps such as tvheadend.</p>"},{"location":"images/docker-minisatip/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-minisatip/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n minisatip:\n image: lscr.io/linuxserver/minisatip:latest\n container_name: minisatip\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - RUN_OPTS=\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 8875:8875\n - 554:554\n - 1900:1900/udp\n devices:\n - /dev/dvb:/dev/dvb\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-minisatip/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=minisatip \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e RUN_OPTS= \\\n -p 8875:8875 \\\n -p 554:554 \\\n -p 1900:1900/udp \\\n -v /path/to/appdata/config:/config \\\n --device /dev/dvb:/dev/dvb \\\n --restart unless-stopped \\\n lscr.io/linuxserver/minisatip:latest\n</code></pre>"},{"location":"images/docker-minisatip/#additional-runtime-parameters","title":"Additional runtime parameters","text":"<p>In some cases it might be necessary to start minisatip with additional parameters, for example to configure a unicable LNB. Add the parameters you need and restart the container. Be sure to have the right parameters set as adding the wrong once might lead to the container not starting correctly. For a list of minisatip parameters visit Minisatip page.</p>"},{"location":"images/docker-minisatip/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-minisatip/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8875</code> Status Page WebUI <code>554</code> RTSP Port <code>1900/udp</code> App Discovery"},{"location":"images/docker-minisatip/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>RUN_OPTS=</code> Specify specific run params for minisatip"},{"location":"images/docker-minisatip/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files and minisatip data"},{"location":"images/docker-minisatip/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dvb</code> For passing through Tv-cards"},{"location":"images/docker-minisatip/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-minisatip/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-minisatip/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-minisatip/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-minisatip/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-minisatip/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it minisatip /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f minisatip\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minisatip\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minisatip:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-minisatip/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-minisatip/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull minisatip\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d minisatip\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-minisatip/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/minisatip:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop minisatip\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm minisatip\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-minisatip/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-minisatip/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-minisatip.git\ncd docker-minisatip\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/minisatip:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-minisatip/#versions","title":"Versions","text":"<ul> <li>08.12.23: - Rebase to Alpine 3.19, switch to building from releases rather than commits.</li> <li>26.07.23: - Build with DDCI=1 for Digital Devices CI support.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>20.02.19: - Fix run options.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>28.08.18: - Rebase to Alpine 3.8.</li> <li>13.12.17: - Rebase to Alpine 3.7.</li> <li>28.05.17: - Rebase to Alpine 3.6.</li> <li>08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps.</li> <li>14.10.16: - Add version layer information.</li> <li>18.09.16: - Add support for Common Interface.</li> <li>11.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>15.08.16: - Initial Release.</li> </ul>"},{"location":"images/docker-monica/","title":"monica","text":""},{"location":"images/docker-monica/#linuxservermonica","title":"linuxserver/monica","text":"<p>Monica is an open source personal relationship management system, that lets you document your life.</p> <p></p>"},{"location":"images/docker-monica/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/monica:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-monica/#application-setup","title":"Application Setup","text":"<p>Setup account via the webui, accessible at http://SERVERIP:PORT</p> <p>For more info see the Monica documentation.</p>"},{"location":"images/docker-monica/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-monica/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n monica:\n image: lscr.io/linuxserver/monica:latest\n container_name: monica\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_HOST=\n - DB_PORT=\n - DB_USERNAME=\n - DB_PASSWORD=\n - DB_DATABASE=\n - APP_URL=http://localhost:80 #optional\n - TRUSTED_PROXIES= #optional\n - APP_ENV=local #optional\n - APP_DISABLE_SIGNUP=true #optional\n volumes:\n - /path/to/monica/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-monica/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=monica \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_HOST= \\\n -e DB_PORT= \\\n -e DB_USERNAME= \\\n -e DB_PASSWORD= \\\n -e DB_DATABASE= \\\n -e APP_URL=http://localhost:80 `#optional` \\\n -e TRUSTED_PROXIES= `#optional` \\\n -e APP_ENV=local `#optional` \\\n -e APP_DISABLE_SIGNUP=true `#optional` \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/monica/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/monica:latest\n</code></pre>"},{"location":"images/docker-monica/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-monica/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-monica/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DB_HOST=</code> Mariadb DB server hostname. <code>DB_PORT=</code> Mariadb DB server port. <code>DB_USERNAME=</code> Mariadb DB user. <code>DB_PASSWORD=</code> Mariadb DB password. <code>DB_DATABASE=</code> Mariadb DB name. <code>APP_URL=http://localhost:80</code> The URL you will use to access Monica including protocol, and port where appropriate. <code>TRUSTED_PROXIES=</code> Set to the IP or netmask covering your reverse proxy, if running behind one. Set to <code>*</code> to trust all IPs (do not use <code>*</code> if exposed to the internet`). <code>APP_ENV=local</code> Set to <code>production</code> when exposing the container to anyone else; this also makes https mandatory. <code>APP_DISABLE_SIGNUP=true</code> Set to <code>false</code> to enable new account sign-ups."},{"location":"images/docker-monica/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files."},{"location":"images/docker-monica/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-monica/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-monica/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-monica/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-monica/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-monica/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it monica /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f monica\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' monica\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/monica:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-monica/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-monica/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull monica\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d monica\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-monica/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/monica:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop monica\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm monica\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-monica/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-monica/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-monica.git\ncd docker-monica\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/monica:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-monica/#versions","title":"Versions","text":"<ul> <li>17.01.24: - Initial Release.</li> </ul>"},{"location":"images/docker-mstream/","title":"mstream","text":""},{"location":"images/docker-mstream/#linuxservermstream","title":"linuxserver/mstream","text":"<p>mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.</p> <p></p>"},{"location":"images/docker-mstream/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mstream:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-mstream/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>http://&lt;your-ip&gt;:3000</code></p> <p>Settings are adjusted through the web ui or via editing of <code>config.json</code>. For more information check out Mstream.</p>"},{"location":"images/docker-mstream/#important-notice","title":"IMPORTANT NOTICE:","text":"<p>mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of <code>config.json</code>. Therefore, the environment variables <code>USER</code>, <code>PASSWORD</code> and <code>USE_JSON</code> are deprecated.</p> <p>v4's <code>config.json</code> is not compatible with v5. Existing <code>config.json</code> will be renamed to <code>config.json.v4-bak</code> for your reference and a new default <code>config.json</code> will be created upon upgrade from v4 to v5.</p>"},{"location":"images/docker-mstream/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mstream/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mstream:\n image: lscr.io/linuxserver/mstream:latest\n container_name: mstream\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /path/to/music:/music\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mstream/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mstream \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -v /path/to/data:/config \\\n -v /path/to/music:/music \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mstream:latest\n</code></pre>"},{"location":"images/docker-mstream/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mstream/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> The port for the mStream webinterface"},{"location":"images/docker-mstream/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-mstream/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> mStream config <code>/music</code> Music location"},{"location":"images/docker-mstream/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mstream/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mstream/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mstream/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mstream/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mstream/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mstream /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mstream\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mstream\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mstream:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mstream/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mstream/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mstream\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mstream\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mstream/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mstream:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mstream\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mstream\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mstream/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mstream/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mstream.git\ncd docker-mstream\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mstream:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mstream/#versions","title":"Versions","text":"<ul> <li>12.12.23: - Rebase to Alpine 3.19, move binaries to /app.</li> <li>05.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>05.04.22: - Move <code>sync</code> folder to <code>/config</code>.</li> <li>02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download.</li> <li>17.05.21: - Deprecating the env vars <code>USER</code>, <code>PASSWORD</code> and <code>USE_JSON</code> as mStream v5 requires the use of <code>config.json</code>.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>18.05.19: - Inital Release</li> </ul>"},{"location":"images/docker-mullvad-browser/","title":"mullvad-browser","text":""},{"location":"images/docker-mullvad-browser/#linuxservermullvad-browser","title":"linuxserver/mullvad-browser","text":"<p>The Mullvad Browser is a privacy-focused web browser developed in a collaboration between Mullvad VPN and the Tor Project. It\u2019s designed to minimize tracking and fingerprinting. You could say it\u2019s a Tor Browser to use without the Tor Network. Instead, you can use it with a trustworthy VPN.</p> <p></p>"},{"location":"images/docker-mullvad-browser/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mullvad-browser:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-mullvad-browser/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-mullvad-browser/#vpn-connectivity","title":"VPN Connectivity","text":"<p>Generate a Wireguard conf from your VPN provider and copy it into the /config mount with a name of <code>wg0.conf</code>. If a valid conf is found at startup, the container will connect to the VPN and route all traffic over it. This container is not designed for routing other containers traffic and should only be used standlone.</p>"},{"location":"images/docker-mullvad-browser/#maintaining-local-access-to-attached-services","title":"Maintaining local access to attached services","text":"<p>When routing traffic via Wireguard you will typically lose access to the webUI. For simple LAN environments you can set the <code>LOCAL_NET</code> environment variable and we will configure routing for you.</p> <p>If you have more complex network setup, you will need to manually exclude your local networks from being routed via Wireguard by modifying your <code>wg0.conf</code> like so, modifying the HOMENET subnets to match your LAN range(s):</p> <pre><code>[Interface]\nPrivateKey = &lt;private key&gt;\nAddress = 9.8.7.6/32\nDNS = 8.8.8.8\nPostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT; iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT\nPreDown = HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT\n</code></pre>"},{"location":"images/docker-mullvad-browser/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-mullvad-browser/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-mullvad-browser/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-mullvad-browser/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-mullvad-browser/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-mullvad-browser/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mullvad-browser/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mullvad-browser:\n image: lscr.io/linuxserver/mullvad-browser:latest\n container_name: mullvad-browser\n cap_add:\n - NET_ADMIN\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - LOCAL_NET=192.168.0.0/16 #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mullvad-browser/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mullvad-browser \\\n --cap-add=NET_ADMIN \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e LOCAL_NET=192.168.0.0/16 `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mullvad-browser:latest\n</code></pre>"},{"location":"images/docker-mullvad-browser/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mullvad-browser/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Mullvad Browser GUI. <code>3001</code> Mullvad Browser GUI HTTPS."},{"location":"images/docker-mullvad-browser/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>LOCAL_NET=192.168.0.0/16</code> If using a VPN, set this to your local LAN IP range using CIDR notation. Without it you will be unable to access the web interface. If you have multiple ranges or a complex LAN setup you will need to manage this yourself in the wg0.conf, see the App Setup section for details."},{"location":"images/docker-mullvad-browser/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-mullvad-browser/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for any modern website to function like youtube. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-mullvad-browser/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-mullvad-browser/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mullvad-browser/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mullvad-browser/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mullvad-browser/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mullvad-browser/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mullvad-browser /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mullvad-browser\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mullvad-browser\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mullvad-browser:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mullvad-browser/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mullvad-browser/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mullvad-browser\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mullvad-browser\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mullvad-browser/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mullvad-browser:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mullvad-browser\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mullvad-browser\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mullvad-browser/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mullvad-browser/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mullvad-browser.git\ncd docker-mullvad-browser\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mullvad-browser:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mullvad-browser/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>03.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-mylar3/","title":"mylar3","text":""},{"location":"images/docker-mylar3/#linuxservermylar3","title":"linuxserver/mylar3","text":"<p>Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.</p> <p></p>"},{"location":"images/docker-mylar3/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mylar3:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-mylar3/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Mylar3 releases nightly \u2705 Commits to Mylar3 <code>python3-dev</code> branch"},{"location":"images/docker-mylar3/#application-setup","title":"Application Setup","text":"<p>The web ui for settings etc, is on <code>http://SERVERIP:8090</code> For more detailed setup options, refer to Mylar3.</p>"},{"location":"images/docker-mylar3/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mylar3/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mylar3:\n image: lscr.io/linuxserver/mylar3:latest\n container_name: mylar3\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/mylar3/config:/config\n - /path/to/comics:/comics\n - /path/to/downloads:/downloads\n ports:\n - 8090:8090\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mylar3/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mylar3 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8090:8090 \\\n -v /path/to/mylar3/config:/config \\\n -v /path/to/comics:/comics \\\n -v /path/to/downloads:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mylar3:latest\n</code></pre>"},{"location":"images/docker-mylar3/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mylar3/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8090</code> WebUI"},{"location":"images/docker-mylar3/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-mylar3/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/comics</code> Map to your comics folder. <code>/downloads</code> Map to your downloads folder."},{"location":"images/docker-mylar3/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mylar3/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mylar3/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mylar3/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mylar3/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mylar3/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mylar3 /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mylar3\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar3\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar3:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mylar3/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mylar3/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mylar3\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mylar3\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mylar3/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mylar3:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mylar3\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mylar3\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mylar3/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mylar3/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mylar3.git\ncd docker-mylar3\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mylar3:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mylar3/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>16.08.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>11.07.23: - Rebase to Alpine 3.18</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3.</li> <li>01.02.22: - Rebase to alpine 3.15.</li> <li>02.11.21: - Rebase to alpine 3.14. Remove <code>pathlib.py</code>.</li> <li>25.05.21: - Add <code>libwebp</code> support.</li> <li>17.05.21: - Add linuxserver wheel index.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>03.01.21: - Output mylar log to docker log.</li> <li>21.12.20: - Release <code>nightly</code> tag based on commits to upstream <code>python3-dev</code> branch.</li> <li>28.09.20: - Initial release.</li> </ul>"},{"location":"images/docker-mysql-workbench/","title":"mysql-workbench","text":""},{"location":"images/docker-mysql-workbench/#linuxservermysql-workbench","title":"linuxserver/mysql-workbench","text":"<p>MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.</p> <p></p>"},{"location":"images/docker-mysql-workbench/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/mysql-workbench:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-mysql-workbench/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-mysql-workbench/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-mysql-workbench/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-mysql-workbench/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-mysql-workbench/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-mysql-workbench/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-mysql-workbench/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-mysql-workbench/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n mysql-workbench:\n image: lscr.io/linuxserver/mysql-workbench:latest\n container_name: mysql-workbench\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n cap_add:\n - IPC_LOCK\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-mysql-workbench/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=mysql-workbench \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --cap-add=\"IPC_LOCK\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/mysql-workbench:latest\n</code></pre>"},{"location":"images/docker-mysql-workbench/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-mysql-workbench/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Mysql Workbench desktop gui. <code>3001</code> Mysql Workbench desktop gui HTTPS."},{"location":"images/docker-mysql-workbench/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-mysql-workbench/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings."},{"location":"images/docker-mysql-workbench/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--cap-add=</code> Required for keyring functionality"},{"location":"images/docker-mysql-workbench/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-mysql-workbench/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-mysql-workbench/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-mysql-workbench/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-mysql-workbench/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it mysql-workbench /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f mysql-workbench\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mysql-workbench\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mysql-workbench:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-mysql-workbench/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-mysql-workbench/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull mysql-workbench\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d mysql-workbench\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mysql-workbench/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/mysql-workbench:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop mysql-workbench\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm mysql-workbench\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-mysql-workbench/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-mysql-workbench/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-mysql-workbench.git\ncd docker-mysql-workbench\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/mysql-workbench:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-mysql-workbench/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>20.04.23: - Update app to launch fullscreen.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>15.09.22: - Migrate to s6v3.</li> <li>26.07.22: - Rebase on jammy.</li> <li>20.04.21: - Rebase on focal.</li> <li>18.01.21: - Update libpython dependency.</li> <li>26.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-nano-wallet/","title":"nano-wallet","text":""},{"location":"images/docker-nano-wallet/#linuxservernano-wallet","title":"linuxserver/nano-wallet","text":"<p>Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.</p> <p>This container is a simple nginx wrapper for the light wallet located here. You will need to pass a valid RPC host when accessing this container.</p>"},{"location":"images/docker-nano-wallet/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nano-wallet:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"images/docker-nano-wallet/#application-setup","title":"Application Setup","text":"<p>This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information.</p> <p>Simply access the container at the URL:</p> <p>http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT</p>"},{"location":"images/docker-nano-wallet/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-nano-wallet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n nano-wallet:\n image: lscr.io/linuxserver/nano-wallet:latest\n container_name: nano-wallet\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-nano-wallet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nano-wallet \\\n -p 80:80 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nano-wallet:latest\n</code></pre>"},{"location":"images/docker-nano-wallet/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-nano-wallet/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Webserver port"},{"location":"images/docker-nano-wallet/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function"},{"location":"images/docker-nano-wallet/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-nano-wallet/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nano-wallet/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"images/docker-nano-wallet/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-nano-wallet/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-nano-wallet/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it nano-wallet /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f nano-wallet</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-wallet</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano-wallet:latest</code></li> </ul>"},{"location":"images/docker-nano-wallet/#versions","title":"Versions","text":"<ul> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>23.05.20: - Initial Release.</li> </ul>"},{"location":"images/docker-nano/","title":"nano","text":""},{"location":"images/docker-nano/#linuxservernano","title":"linuxserver/nano","text":"<p>Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.</p>"},{"location":"images/docker-nano/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nano:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-nano/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Nano releases beta \u2705 Beta Nano releases"},{"location":"images/docker-nano/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-nano/#your-genesis-account","title":"Your Genesis account","text":"<p>By default this container will launch with a genesis block based on the private key <code>0000000000000000000000000000000000000000000000000000000000000000</code>, this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables: </p> <pre><code>docker run --rm --entrypoint /genesis.sh linuxserver/nano\nGenerating Genesis block\n!!!!!!! ACCOUNT INFO SAVE THIS INFORMATION IT WILL NOT BE SHOWN AGAIN !!!!!!!!\nPrivate Key: CD4CD6B1E5523D4B5AEDD2B1E5A447C6C6797E729A531A95F9AD7937FC7CD9EA\nPublic Key: 2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D\nAccount: nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nContainer Environment Values:\n -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\\n -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\\n -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\\n -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\\n</code></pre> <p>These environment variables will be used for all of the peers in your payment network, but if you are running what you would consider a public or live network never share your private key even if you have drained the funds from that account it can be potentionally used to create valid forks. Even Better, you should never even trust our Docker image for generating a private key and open block. Do it on an airgapped machine and keep it on a paper wallet.</p>"},{"location":"images/docker-nano/#rpc-proxy-settings","title":"RPC Proxy settings","text":"<p>By default this container will enable RPC control and publish a custom service that acts as an RPC firewall giving you the ability to whitelist specific RPC calls and overide/add default values.</p> <p>The default proxy config is stored in <code>/config/rpc-proxy.json</code>: </p> <pre><code>{\n \"port\":3000,\n \"httpsport\":3001,\n \"rpchost\":\"127.0.0.1\",\n \"rpcport\":7076,\n \"certfile\":\"/config/ssl/cert.crt\",\n \"keyfile\":\"/config/ssl/cert.key\",\n \"whitelist\":[\n \"account_info\",\n \"account_history\",\n \"block_count\",\n \"block_info\",\n \"pending\",\n \"process\"\n ],\n \"overrides\":{\n \"account-history\":{\n \"count\":\"64\"\n },\n \"pending\":{\n \"count\":\"8\"\n }\n }\n}\n</code></pre> <p>This should be a minimal amount of RPC access needed to run a local light wallet against this endpoint. If you plan on having your network users only run clientside light wallets (local blake2b block generation and block <code>process</code> call publishing) you should publically publish this port for access for both port 7076 and 7077. For functional light wallets on Https endpoints we will generate a self signed cert/key combo but you should add the ones associated with your domain. This will allow yours and other https hosted light wallets to hit your RPC endpoint clientside from the users web browser.</p> <p>Outside of potential https tunneling and actual object parsing (will remove duplicate keys) this is not a conventional API, it simply acts as a firewall and will send and return data just like a local RPC server would. The goal is to be compatible with any existing Nano software if the developers decide to add the ability to connect to alternative network endpoints. </p> <p>Our Proxy has not been audited by any security team and is provided as is, though we make the best effort to keep it simple and secure</p>"},{"location":"images/docker-nano/#node-configuration-via-environment","title":"Node configuration via environment","text":"<p>Before you get started please review the configuration docs here</p> <p>We will pass the <code>CLI_OPTIONS</code> to the node, here is a run command example:</p> <pre><code>-e CLI_OPTIONS='--config node.preconfigured_peers=[\"peering.yourhost.com\",\"peering.yourhost2.com\"] \\\n --config node.enable_voting=true'\n</code></pre> <p>There are many options to know here to run an actual live node especially peering and voting, again please review the docs if you plan to run something outside of a local setup.</p>"},{"location":"images/docker-nano/#quickstart-guide","title":"Quickstart Guide","text":"<p>Here we are going to cover the bare minimum commands needed to spinup a local payment network and wallet. </p> <p>First spinup your containers: <pre><code>docker run -d \\\n--name node \\\n-e CLI_OPTIONS='--config node.enable_voting=true' \\\n-p 7076:3000 \\\n--restart unless-stopped \\\nlinuxserver/nano\n</code></pre> <pre><code>docker run -d \\\n--name=wallet \\\n-p 80:80 \\\n--restart unless-stopped \\\nlinuxserver/nano-wallet\n</code></pre> Then unlock the Genesis funds on the local node to allow it to confirm transactions: <pre><code>docker exec -it node bash\nroot@f1df092971f0:/# curl -d '{ \"action\": \"wallet_create\" }' localhost:7076\n{\n \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\"\n}\nroot@f1df092971f0:/# curl -d '{ \"action\": \"wallet_add\", \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\", \"key\": \"0000000000000000000000000000000000000000000000000000000000000000\" }' localhost:7076\n{\n \"account\": \"nano_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc\"\n}\n</code></pre></p> <p>Here we are using the default private key of <code>0000000000000000000000000000000000000000000000000000000000000000</code> for the image. Navigate to http://localhost/#/localhost and enter this key. You should be greeted by the genesis account wallet with 340.28 Million Nano.</p> <p>From here you can generate new wallets from the home screen and send/receive funds on your local network. Now you will be running an insecure centralized network with a single voting representative and a zero security private key using the commands above. To spinup a standard private or even public network you should read up on Nano's documentation HERE and continue reading the network design section below.</p>"},{"location":"images/docker-nano/#network-design","title":"Network design","text":"<p>There are 4 main concepts to grasp from a network standpoint as far as types of endpoints. Before we get started here is a basic network diagram:</p> <p></p>"},{"location":"images/docker-nano/#principle-nodes-and-voting-representatives","title":"Principle nodes and voting representatives","text":"<p>Principle nodes are network representatives with the ability to vote due to having a certain threshold of funds unlocked on that node or pointed to that unlocked address. These nodes should be as airgapped as possible while still being an active 24/7 peer of the network. From a tecnical perspective this is a node with an account private key that either has the funds it needs itself or enough users have pointed their accounts to it as a representative. In a live and secure configuration to protect the funds of this account you would use an inactive private key account with the funds in it and locally sign a change of representative block to point to the always online representative.</p> <p>These nodes should never process external RPC calls even on a local network, the same rules go for any node with a local unlocked wallet.</p> <p>Keep in mind the key to the security of the network is that 51% of the funds are pointed to trusted representatives that will generally not argue about chain forks. </p> <p>In most deployments the best bet is to heavily centralize your voting nodes, this is unless you are intentionally trying to build a distributed ledger and security model like the main Nano live net. Achieving that will be a long and difficult task.</p>"},{"location":"images/docker-nano/#network-peers","title":"Network peers","text":"<p>To a normal user simply transacting on the network using off the shelf tools like a web wallet and web based block explorers is generally all that is required. They get a number in a ledger somewhere and are able to locally sign and publish blocks using their private key using your published RPC endpoints.</p> <p>For advanced users and just to generally make the network more robust, network operators should promote people running their own nodes. Using this image a network peer simply needs to run a docker run command with your pre-configured variables. IE given the generation example from above in the <code>Your Genesis account</code> section:</p> <pre><code>docker create \\\n --name=nano \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e PEER_HOST=peering.mydomain.com \\\n -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\\n -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\\n -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\\n -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\\n -p 8075:8075 \\\n -p 7076:3000 \\\n -p 7077:3001 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n linuxserver/nano\n</code></pre> <p>When the container spins up it will reach out to the node to bootstrap it's local ledger from peering.mydomain.com . This node once fully synced will be able to run local RPC commands to plug into a wallet and default Nano node wallet commands for automated pocketing of transactions etc. It will also get a list of other peers on the network from it's initial network peering and start participating in your distributed cryptocurrency network.</p>"},{"location":"images/docker-nano/#public-rpc-endpoints","title":"Public RPC endpoints","text":"<p>The key to users going to a webpage and managing the funds on your network is the ability to get blockchain information and publish new blocks to theirs. As mentioned earlier we bundle a basic firewall with a core set of RPC functions whitelisted that should be safe to expose publically. </p> <p>From a network design perspective these nodes should be purely what you would consider client peers and never have any wallets registered or private keys stored on them. Also for redundancy optmimally these peers should be run in a cluster behind a load balancer. For standard nodes you are building out a large P2P network, but in the case of the RPC endpoint and specifically the URL the end user is going to pass when accessing their wallet it is up to you to make that resilient.</p>"},{"location":"images/docker-nano/#clientside-javascript-wallet","title":"Clientside javascript wallet","text":"<p>Currently we publish a pure javascript clientside wallet located here: </p> <p>https://github.com/linuxserver/nano-wallet</p> <p>It is designed to be run 100% clientside in any web browser and use public RPC endpoints to hook into any network and conduct transactions by locally signing then publishing the result. This can be hosted locally with any simple webserver and pointed to a locally run peer, but for full functionality we reccomend providing a public Https URL with these files along with plugging in legitamite SSL certificates into your RPC endpoints running on 7077.</p>"},{"location":"images/docker-nano/#running-a-node-on-the-linuxserver-network","title":"Running a node on the LinuxServer network","text":"<p>We maintain our own network which users can get funds to transact on from our Discord server. If you would like to run a node on our network here is our Docker run command: <pre><code>docker create \\\n --name=lsio-node \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e PEER_HOST=peering.linuxserver.io \\\n -e LIVE_GENESIS_PUB=79F2E157B5667F1C8B6CCB6DF691DAC032B85DEC39E231D29976DCED05F5B1BE \\\n -e LIVE_GENESIS_ACCOUNT=nano_1yhkw7ducsmz5k7pskufytaxoi3kq3gyrgh489bbkxpwxn4zdefyn4rmrrkk \\\n -e LIVE_GENESIS_WORK=c51204c6b69384cb \\\n -e LIVE_GENESIS_SIG=90DDE7B4DC038811180FF5DDE8594F1774542A7AADE3DB71A57AA38A5AED42672E1E8D7ACFAC315BDB0EB5DCB542C610B9C49B2560AE575073855259AF065509 \\\n -p 8075:8075 \\\n -p 7076:3000 \\\n -p 7077:3001 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n linuxserver/nano\n</code></pre></p>"},{"location":"images/docker-nano/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-nano/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nversion: \"2.1\"\nservices:\n nano:\n image: lscr.io/linuxserver/nano:latest\n container_name: nano\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Europe/London\n - PEER_HOST=localhost #optional\n - LIVE_GENESIS_PUB=GENESIS_PUBLIC #optional\n - LIVE_GENESIS_ACCOUNT=nano_xxxxxx #optional\n - LIVE_GENESIS_WORK=WORK_FOR_BLOCK #optional\n - LIVE_GENESIS_SIG=BLOCK_SIGNATURE #optional\n - CLI_OPTIONS=--config node.enable_voting=true #optional\n - LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8075:8075\n - 7076:3000\n - 7077:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-nano/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nano \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e PEER_HOST=localhost `#optional` \\\n -e LIVE_GENESIS_PUB=GENESIS_PUBLIC `#optional` \\\n -e LIVE_GENESIS_ACCOUNT=nano_xxxxxx `#optional` \\\n -e LIVE_GENESIS_WORK=WORK_FOR_BLOCK `#optional` \\\n -e LIVE_GENESIS_SIG=BLOCK_SIGNATURE `#optional` \\\n -e CLI_OPTIONS=--config node.enable_voting=true `#optional` \\\n -e LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z `#optional` \\\n -p 8075:8075 \\\n -p 7076:3000 \\\n -p 7077:3001 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nano:latest\n</code></pre>"},{"location":"images/docker-nano/#parameters","title":"Parameters","text":"<p>Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-nano/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8075</code> Nano communication port <code>3000</code> RPC interface filtered through a proxy <code>3001</code> Https RPC interface filtered through a proxy"},{"location":"images/docker-nano/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Europe/London</code> Specify a timezone to use EG Europe/London <code>PEER_HOST=localhost</code> Default peer host (can be overidden with an array by command line options) <code>LIVE_GENESIS_PUB=GENESIS_PUBLIC</code> Genesis block public key <code>LIVE_GENESIS_ACCOUNT=nano_xxxxxx</code> Genesis block account <code>LIVE_GENESIS_WORK=WORK_FOR_BLOCK</code> Genesis block proof of work <code>LIVE_GENESIS_SIG=BLOCK_SIGNATURE</code> Genesis block signature <code>CLI_OPTIONS=--config node.enable_voting=true</code> Node run command cli args <code>LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z</code> HTTP/HTTPS endpoint to download a 7z file with the data.ldb to bootstrap to this node"},{"location":"images/docker-nano/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Main storage for config and blockchain"},{"location":"images/docker-nano/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nano/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__PASSWORD=/run/secrets/mysecretpassword\n</code></pre> <p>Will set the environment variable <code>PASSWORD</code> based on the contents of the <code>/run/secrets/mysecretpassword</code> file.</p>"},{"location":"images/docker-nano/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-nano/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id user</code> as below:</p> <pre><code> $ id username\n uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n</code></pre>"},{"location":"images/docker-nano/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-nano/#support-info","title":"Support Info","text":"<ul> <li>Shell access whilst the container is running:</li> <li><code>docker exec -it nano /bin/bash</code></li> <li>To monitor the logs of the container in realtime:</li> <li><code>docker logs -f nano</code></li> <li>Container version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano</code></li> <li>Image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano:latest</code></li> </ul>"},{"location":"images/docker-nano/#versions","title":"Versions","text":"<ul> <li>02.06.20: - Rebase to Alpine 3.12.</li> <li>28.05.20: - Add beta tag.</li> <li>17.05.20: - Initial Release.</li> </ul>"},{"location":"images/docker-netbootxyz/","title":"netbootxyz","text":""},{"location":"images/docker-netbootxyz/#linuxservernetbootxyz","title":"linuxserver/netbootxyz","text":"<p>Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.</p> <p></p>"},{"location":"images/docker-netbootxyz/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/netbootxyz:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-netbootxyz/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Web application for full self hosting tftp \u2705 TFTP server only with NETBOOT.XYZ boot files"},{"location":"images/docker-netbootxyz/#application-setup","title":"Application Setup","text":"<p>To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz. If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page.</p>"},{"location":"images/docker-netbootxyz/#router-setup-examples","title":"Router Setup Examples","text":""},{"location":"images/docker-netbootxyz/#pfsense","title":"PFSense","text":"<p>Services -&gt; DHCP Server</p> <p>Set both the option for \"TFTP Server\" and the options under the Advanced \"Network Booting\" section.n * check enable * Next server- IP used for TFTP Server * Default BIOS file name- <code>netboot.xyz.kpxe</code> * UEFI 32 bit file name- <code>netboot.xyz.efi</code> * UEFI 64 bit file name- <code>netboot.xyz.efi</code></p>"},{"location":"images/docker-netbootxyz/#opnsense","title":"OPNsense","text":"<p>Services -&gt; DHCP Server</p> <p>Under the Advanced \"Network Booting\" section. * check enable * Next server- IP of docker host * Default BIOS file name- <code>netboot.xyz.kpxe</code> * UEFI 32 bit file name- <code>netboot.xyz.efi</code> * UEFI 64 bit file name- <code>netboot.xyz.efi</code></p>"},{"location":"images/docker-netbootxyz/#unifi-security-gateway-with-the-controller","title":"Unifi Security Gateway (with the controller)","text":"<p>Networks -&gt; LAN (or the network you want to boot from) -&gt; ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- <code>netboot.xyz.kpxe</code> Advanced full support * For USG variants force provisioning a json containing the same config used for EdgeOS (shown below) will fully support netboot. * For UDM variants, creating a valid dnsmasq config and placing in /run/dnsmasq.conf.d will load the config, but will not survive reboots or firmware updates source.</p>"},{"location":"images/docker-netbootxyz/#edgeosvyos","title":"EdgeOS/VyOS","text":"<p>Connect via SSH <pre><code>configure\nset service dhcp-server use-dnsmasq enable\nset service dns forwarding options \\\"dhcp-match=set:bios,60,PXEClient:Arch:00000\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\\\"\nset service dns forwarding options \\\"dhcp-match=set:efi32,60,PXEClient:Arch:00002\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\\\"\nset service dns forwarding options \\\"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\\\"\nset service dns forwarding options \\\"dhcp-match=set:efi64,60,PXEClient:Arch:00007\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\\\"\nset service dns forwarding options \\\"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\\\"\nset service dns forwarding options \\\"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\\\"\nset service dns forwarding options \\\"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\\\"\ncommit; save\n</code></pre></p>"},{"location":"images/docker-netbootxyz/#dnsmasqdd-wrtopenwrttomatopihole","title":"Dnsmasq/DD-WRT/OpenWRT/Tomato/PIHOLE","text":"<p>Various locations to set Additional/Custom DNSMASQ options in UI or config files Set the following lines: <pre><code>dhcp-match=set:bios,60,PXEClient:Arch:00000\ndhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP\ndhcp-match=set:efi32,60,PXEClient:Arch:00002\ndhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi32-1,60,PXEClient:Arch:00006\ndhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64,60,PXEClient:Arch:00007\ndhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-1,60,PXEClient:Arch:00008\ndhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-2,60,PXEClient:Arch:00009\ndhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP\n</code></pre> Ensure you restart the DNSMASQ service after the changes.</p>"},{"location":"images/docker-netbootxyz/#microsoft-server-dhcp","title":"Microsoft Server DHCP","text":"<ul> <li>Run the DHCP program</li> <li>Under Scope/Scope Options</li> <li>check option 066 and enter the FQDN or IP of your TFTP boot server</li> <li>check option 067 and enter one of the following bootfile names:</li> <li>Default BIOS file name- netboot.xyz.kpxe</li> <li>UEFI 32 bit file name- netboot.xyz.efi</li> <li>UEFI 64 bit file name- netboot.xyz.efi</li> </ul> <p>Anything else from a router standpoint is a crapshoot for supporting Dnsmasq options or proprietary PXE boot options, check Google for support (try your exact router model number with 'pxe boot') or look into setting up your own DHCP server in Linux. This image also contains <code>netboot.xyz.efi</code> which can be used to boot using UEFI network boot. The UEFI boot and menu will have limited functionality if you choose to use it.</p>"},{"location":"images/docker-netbootxyz/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-netbootxyz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n netbootxyz:\n image: lscr.io/linuxserver/netbootxyz:latest\n container_name: netbootxyz\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MENU_VERSION=1.9.9 #optional\n - PORT_RANGE=30000:30010 #optional\n - SUBFOLDER=/ #optional\n - NGINX_PORT=80 #optional\n - WEB_APP_PORT=3000 #optional\n volumes:\n - /path/to/config:/config\n - /path/to/assets:/assets #optional\n ports:\n - 3000:3000\n - 69:69/udp\n - 8080:80 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-netbootxyz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=netbootxyz \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MENU_VERSION=1.9.9 `#optional` \\\n -e PORT_RANGE=30000:30010 `#optional` \\\n -e SUBFOLDER=/ `#optional` \\\n -e NGINX_PORT=80 `#optional` \\\n -e WEB_APP_PORT=3000 `#optional` \\\n -p 3000:3000 \\\n -p 69:69/udp \\\n -p 8080:80 `#optional` \\\n -v /path/to/config:/config \\\n -v /path/to/assets:/assets `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/netbootxyz:latest\n</code></pre>"},{"location":"images/docker-netbootxyz/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-netbootxyz/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Web configuration interface. <code>69/udp</code> TFTP Port. <code>80</code> NGINX server for hosting assets."},{"location":"images/docker-netbootxyz/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MENU_VERSION=1.9.9</code> Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest) <code>PORT_RANGE=30000:30010</code> Specify the port range tftp will use for data transfers (see Wikipedia) <code>SUBFOLDER=/</code> Specify a sobfolder if running this behind a reverse proxy (IE /proxy/) <code>NGINX_PORT=80</code> Specify a different internal port for the asset server <code>WEB_APP_PORT=3000</code> Specify a different internal port for the configuration UI"},{"location":"images/docker-netbootxyz/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Storage for boot menu files and web application config <code>/assets</code> Storage for NETBOOT.XYZ bootable assets (live CDs and other files)"},{"location":"images/docker-netbootxyz/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-netbootxyz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-netbootxyz/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-netbootxyz/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-netbootxyz/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-netbootxyz/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it netbootxyz /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f netbootxyz\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbootxyz\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbootxyz:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-netbootxyz/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-netbootxyz/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull netbootxyz\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d netbootxyz\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-netbootxyz/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/netbootxyz:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop netbootxyz\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm netbootxyz\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-netbootxyz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-netbootxyz/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-netbootxyz.git\ncd docker-netbootxyz\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/netbootxyz:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-netbootxyz/#versions","title":"Versions","text":"<ul> <li>24.02.24: - Add new port settings for the webserver and app.</li> <li>08.12.23: - Rebase to Alpine 3.19.</li> <li>17.11.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3.</li> <li>29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>13.12.19: - Swapping latest tag over to webapp stack for management.</li> <li>10.12.19: - Adding tftp branch to provide tftp only option to latest users.</li> <li>22.10.19: - Initial release.</li> </ul>"},{"location":"images/docker-netbox/","title":"netbox","text":""},{"location":"images/docker-netbox/#linuxservernetbox","title":"linuxserver/netbox","text":"<p>Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.</p> <p></p>"},{"location":"images/docker-netbox/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/netbox:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-netbox/#application-setup","title":"Application Setup","text":"<p>Netbox requires a postgres database and a redis instance.</p> <p>Access the WebUI at :8000. For more information, check out NetBox."},{"location":"images/docker-netbox/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-netbox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n netbox:\n image: lscr.io/linuxserver/netbox:latest\n container_name: netbox\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUPERUSER_EMAIL=\n - SUPERUSER_PASSWORD=\n - ALLOWED_HOST=\n - DB_NAME=\n - DB_USER=\n - DB_PASSWORD=\n - DB_HOST=\n - DB_PORT=\n - REDIS_HOST=\n - REDIS_PORT=\n - REDIS_PASSWORD=\n - REDIS_DB_TASK=\n - REDIS_DB_CACHE=\n - BASE_PATH= #optional\n - REMOTE_AUTH_ENABLED= #optional\n - REMOTE_AUTH_BACKEND= #optional\n - REMOTE_AUTH_HEADER= #optional\n - REMOTE_AUTH_AUTO_CREATE_USER= #optional\n - REMOTE_AUTH_DEFAULT_GROUPS= #optional\n - REMOTE_AUTH_DEFAULT_PERMISSIONS= #optional\n volumes:\n - /path/to/netbox/config:/config\n ports:\n - 8000:8000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-netbox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=netbox \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUPERUSER_EMAIL= \\\n -e SUPERUSER_PASSWORD= \\\n -e ALLOWED_HOST= \\\n -e DB_NAME= \\\n -e DB_USER= \\\n -e DB_PASSWORD= \\\n -e DB_HOST= \\\n -e DB_PORT= \\\n -e REDIS_HOST= \\\n -e REDIS_PORT= \\\n -e REDIS_PASSWORD= \\\n -e REDIS_DB_TASK= \\\n -e REDIS_DB_CACHE= \\\n -e BASE_PATH= `#optional` \\\n -e REMOTE_AUTH_ENABLED= `#optional` \\\n -e REMOTE_AUTH_BACKEND= `#optional` \\\n -e REMOTE_AUTH_HEADER= `#optional` \\\n -e REMOTE_AUTH_AUTO_CREATE_USER= `#optional` \\\n -e REMOTE_AUTH_DEFAULT_GROUPS= `#optional` \\\n -e REMOTE_AUTH_DEFAULT_PERMISSIONS= `#optional` \\\n -p 8000:8000 \\\n -v /path/to/netbox/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/netbox:latest\n</code></pre>"},{"location":"images/docker-netbox/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-netbox/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> will map the container's port 8000 to port 8000 on the host"},{"location":"images/docker-netbox/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUPERUSER_EMAIL=</code> Email address for <code>admin</code> account <code>SUPERUSER_PASSWORD=</code> Password for <code>admin</code> account <code>ALLOWED_HOST=</code> The hostname you will use to access the app (i.e., netbox.example.com) <code>DB_NAME=</code> Database name (default: netbox) <code>DB_USER=</code> Database user <code>DB_PASSWORD=</code> Database password <code>DB_HOST=</code> Database host (default: postgres) <code>DB_PORT=</code> Database port (defaul: 5432) <code>REDIS_HOST=</code> Redis host (default: redis) <code>REDIS_PORT=</code> Redis port number (default: 6379) <code>REDIS_PASSWORD=</code> Redis password (default: none) <code>REDIS_DB_TASK=</code> Redis database ID for tasks (default: 0) <code>REDIS_DB_CACHE=</code> Redis database ID for caching (default: 1) <code>BASE_PATH=</code> The path you will use to access the app (i.e., /netbox, optional, default: none) <code>REMOTE_AUTH_ENABLED=</code> Enable remote authentication (optional, default: False) <code>REMOTE_AUTH_BACKEND=</code> Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend) <code>REMOTE_AUTH_HEADER=</code> Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER) <code>REMOTE_AUTH_AUTO_CREATE_USER=</code> If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False) <code>REMOTE_AUTH_DEFAULT_GROUPS=</code> The list of groups to assign a new user account when created using remote authentication (optional, default: []) <code>REMOTE_AUTH_DEFAULT_PERMISSIONS=</code> A mapping of permissions to assign a new user account when created using remote authentication (optional, default: {})"},{"location":"images/docker-netbox/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-netbox/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-netbox/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-netbox/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-netbox/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-netbox/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-netbox/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it netbox /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f netbox\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbox\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbox:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-netbox/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-netbox/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull netbox\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d netbox\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-netbox/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/netbox:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop netbox\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm netbox\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-netbox/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-netbox/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-netbox.git\ncd docker-netbox\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/netbox:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-netbox/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>11.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>14.05.23: - Build local docs on first run.</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>01.08.22: - Remove py3-pillow, add tiff to fix deps.</li> <li>26.07.22: - Add py3-pillow package back on arm to fix build issue.</li> <li>10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0.</li> <li>10.12.21: - Rebase to Alpine 3.15.</li> <li>26.04.21: - Added Redis database environment variables.</li> <li>03.02.21: - Added remote authentication environment variables.</li> <li>02.01.21: - Added BASE_PATH environment variable.</li> <li>23.08.20: - Initial Release.</li> </ul>"},{"location":"images/docker-nextcloud/","title":"nextcloud","text":""},{"location":"images/docker-nextcloud/#linuxservernextcloud","title":"linuxserver/nextcloud","text":"<p>Nextcloud gives you access to all your files wherever you are.</p> <p>Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.</p> <p></p>"},{"location":"images/docker-nextcloud/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nextcloud:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-nextcloud/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Nextcloud releases develop \u2705 Beta Nextcloud pre-releases only"},{"location":"images/docker-nextcloud/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>https://&lt;your-ip&gt;:443</code>, for more information check out Nextcloud.</p> <p>Note: <code>occ</code> should be run without prepending with <code>sudo -u abc php</code> or <code>sudo -u www-data php</code> ie; <code>docker exec -it nextcloud occ maintenance:mode --off</code></p>"},{"location":"images/docker-nextcloud/#updating-nextcloud","title":"Updating Nextcloud","text":"<p>Updating Nextcloud is done by pulling the new image, and recreating the container with it.</p> <p>It is only possible to upgrade one major version at a time. For example, if you want to upgrade from version 14 to 16, you will have to upgrade from version 14 to 15, then from 15 to 16.</p> <p>Since all data is stored in the <code>/config</code> and <code>/data</code> volumes, nothing gets lost. The startup script will check for the version in your volume and the installed docker version. If it finds a mismatch, it automatically starts the upgrade process.</p>"},{"location":"images/docker-nextcloud/#collaborative-editing","title":"Collaborative Editing","text":"<p>Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffice) only work on x86_64 systems with glibc, and therefore they are not compatible with our images. You should create separate containers for them and set them up in Nextcloud with their respective connector addons.</p> <p>If (auto) installed, those built-in packages may cause instability and should be removed.</p>"},{"location":"images/docker-nextcloud/#custom-app-directories","title":"Custom App Directories","text":"<p>If you are using custom app directories you will need to make the custom folder(s) you are using available to the web server. The recommended way to do this with our container is to add a volume. Ex:</p> <pre><code> volumes:\n - /path/to/your_custom_apps_folder:/app/www/public/your_custom_apps_folder\n</code></pre> <p>Afterwards, you can set <code>\"path\" =&gt; OC::$SERVERROOT . \"/your_custom_apps_folder\",</code> in your <code>config.php</code> file, per the official documentation.</p>"},{"location":"images/docker-nextcloud/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-nextcloud/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-nextcloud/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n nextcloud:\n image: lscr.io/linuxserver/nextcloud:latest\n container_name: nextcloud\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/nextcloud/config:/config\n - /path/to/data:/data\n ports:\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-nextcloud/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nextcloud \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 443:443 \\\n -v /path/to/nextcloud/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nextcloud:latest\n</code></pre>"},{"location":"images/docker-nextcloud/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-nextcloud/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>443</code> WebUI"},{"location":"images/docker-nextcloud/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-nextcloud/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Your personal data."},{"location":"images/docker-nextcloud/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nextcloud/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-nextcloud/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-nextcloud/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-nextcloud/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-nextcloud/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it nextcloud /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f nextcloud\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nextcloud\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nextcloud:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-nextcloud/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-nextcloud/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull nextcloud\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d nextcloud\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nextcloud/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/nextcloud:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop nextcloud\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm nextcloud\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nextcloud/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-nextcloud/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-nextcloud.git\ncd docker-nextcloud\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/nextcloud:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-nextcloud/#versions","title":"Versions","text":"<ul> <li>22.03.24: - Add imagemagick-svg module.</li> <li>06.03.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>02.01.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>22.12.23: - Site default conf updating to include mime.types for js and mjs and update location to include more file types.</li> <li>28.10.23: - Disable web upgrades using occ during init.</li> <li>31.08.23: - Re-add updatenotification app. This allows users to be notified for app updates, but also notifies for NextCloud updates. Updating NextCloud via the web UI is not supported when using this image.</li> <li>14.08.23: - Add develop branch.</li> <li>25.06.23: - Move Nextcloud installation inside container. Remove CLI updater. See changes announcement.</li> <li>21.06.23: - Existing users should update <code>/config/nginx/site-confs/default.conf</code> - Security fix for real ip settings.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>21.03.23: - Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex, nofollow``.</li> <li>02.03.23: - Set permissions on crontabs during init.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>30.09.22: - Disabled <code>output_buffering</code> as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html</li> <li>21.05.22: - Update version check endpoint.</li> <li>28.04.22: - Increase OPCache interned strings buffered setting to 16.</li> <li>14.04.22: - Nginx default site config updated for v23 (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container). Fix LDAP connection.</li> <li>11.09.21: - Rebasing to alpine 3.14</li> <li>21.03.21: - Publish <code>php8</code> tag for testing.</li> <li>25.02.21: - Nginx default site config updated for v21 (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup.</li> <li>20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article.</li> <li>12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>03.06.20: - Rebasing to alpine 3.12</li> <li>03.06.20: - Add php7-bcmath and php7-fileinfo</li> <li>31.05.20: - Add aliases for occ and updater.phar</li> <li>31.03.20: - Allow crontab to be user customized, fix logrotate.</li> <li>17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>18.11.19: - Nginx default site config updated for v17 (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>28.10.19: - Change cronjob to run every 5 minutes.</li> <li>24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete <code>/config/nginx/site-confs/default.conf</code> and restart the container).</li> <li>14.07.19: - Download nextcloud during build time.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>27.02.19: - Updating base nginx config to sync up with v15 requirements.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>25.01.19: - Add php7-phar for occ upgrades.</li> <li>05.09.18: - Rebase to alpine 3.8.</li> <li>11.06.18: - Use latest rather than specific version for initial install.</li> <li>26.04.18: - Bump default install to 13.0.1.</li> <li>06.02.18: - Bump default install to 13.0.0.</li> <li>26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5.</li> <li>12.12.17: - Bump default install to 12.0.4, fix continuation lines.</li> <li>15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions.</li> <li>20.09.17: - Bump default install to 12.0.3.</li> <li>19.08.17: - Bump default install to 12.0.2.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line.</li> <li>03.05.17: - Use community repo of memcache.</li> <li>07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.</li> </ul>"},{"location":"images/docker-nginx/","title":"nginx","text":""},{"location":"images/docker-nginx/#linuxservernginx","title":"linuxserver/nginx","text":"<p>Nginx is a simple webserver with php support. The config files reside in <code>/config</code> for easy user customization.</p> <p></p>"},{"location":"images/docker-nginx/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nginx:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-nginx/#application-setup","title":"Application Setup","text":"<p>Add your web files to <code>/config/www</code> for hosting. Modify the nginx, php and site config files under <code>/config</code> as needed Protip: This container is best combined with a sql server, e.g. mariadb</p>"},{"location":"images/docker-nginx/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-nginx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n nginx:\n image: lscr.io/linuxserver/nginx:latest\n container_name: nginx\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/nginx/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-nginx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nginx \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/nginx/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nginx:latest\n</code></pre>"},{"location":"images/docker-nginx/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-nginx/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http <code>443</code> https"},{"location":"images/docker-nginx/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-nginx/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-nginx/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nginx/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-nginx/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-nginx/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-nginx/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-nginx/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it nginx /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f nginx\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nginx\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nginx:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-nginx/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-nginx/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull nginx\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d nginx\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nginx/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/nginx:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop nginx\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm nginx\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nginx/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-nginx/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-nginx.git\ncd docker-nginx\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/nginx:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-nginx/#versions","title":"Versions","text":"<ul> <li>05.03.24: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>16.01.23: - Remove nchan module because it keeps causing crashes.</li> <li>22.12.22: - Rebase to Alpine 3.17 with PHP 8.1, migrate to s6v3.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>22.05.22: - Install nginx version from 3.14.</li> <li>01.07.21: - Rebasing to alpine 3.14.</li> <li>24.06.21: - Update default nginx conf folder.</li> <li>12.04.21: - Add php7-gmp and php7-pecl-mailparse.</li> <li>13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod.</li> <li>09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).</li> <li>08.09.20: - Add php7-xsl.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>18.04.20: - Fix unwanted shutdown of the container.</li> <li>11.03.20: - Add php7-sodium.</li> <li>18.02.20: - Add geoip2, suppress lua warning.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>18.12.19: - Add php7-imap and php7-pecl-apcu.</li> <li>13.11.19: - Add php7-pdo_odbc.</li> <li>24.10.19: - Add php7-pecl-imagick.</li> <li>06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp.</li> <li>02.08.19: - Add php7-ldap.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>08.05.19: - Remove default.conf when nginx is upgraded in downstream image.</li> <li>30.04.19: - Add php-redis.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>02.03.19: - Add php intl and posix modules.</li> <li>28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it).</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>18.11.18: - Attempt to upgrade packages during build.</li> <li>28.09.18: - Multi-arch image.</li> <li>17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage.</li> <li>11.05.18: - Add php pgsql support.</li> <li>19.04.18: - Bind memcached to localhost only, add php7-sqlite3.</li> <li>05.01.18: - Rebase to alpine 3.7.</li> <li>08.11.17: - Add php7 soap module.</li> <li>31.10.17: - Add php7 exif and xmlreader modules.</li> <li>30.09.17: - Copy additional root files into image.</li> <li>24.09.17: - Add memcached service.</li> <li>31.08.17: - Add php7-phar.</li> <li>14.07.17: - Enable modules dynamically in nginx.conf.</li> <li>22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf.</li> <li>05.06.17: - Add php7-bz2.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>18.04.17: - Add php7-sockets.</li> <li>27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7.</li> <li>14.10.16: - Add version layer information.</li> <li>10.09.16: - Add badges to README.</li> <li>05.12.15: - Intial Release.</li> </ul>"},{"location":"images/docker-ngircd/","title":"ngircd","text":""},{"location":"images/docker-ngircd/#linuxserverngircd","title":"linuxserver/ngircd","text":"<p>Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.</p> <p></p>"},{"location":"images/docker-ngircd/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ngircd:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ngircd/#application-setup","title":"Application Setup","text":"<ul> <li>To setup ngircd you will need to edit <code>/config/ngircd.conf</code> which is created the first time the container is run, edit the file and restart the container to implement any config changes.</li> <li>For information see the ngircd site here.</li> </ul>"},{"location":"images/docker-ngircd/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ngircd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ngircd:\n image: lscr.io/linuxserver/ngircd:latest\n container_name: ngircd\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/ngircd/config:/config\n ports:\n - 6667:6667\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ngircd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ngircd \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 6667:6667 \\\n -v /path/to/ngircd/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ngircd:latest\n</code></pre>"},{"location":"images/docker-ngircd/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ngircd/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>6667</code> ngircd port"},{"location":"images/docker-ngircd/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-ngircd/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where <code>ngircd.conf</code> is stored"},{"location":"images/docker-ngircd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ngircd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ngircd/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ngircd/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-ngircd/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ngircd/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ngircd /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ngircd\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ngircd\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ngircd:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ngircd/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ngircd/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ngircd\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ngircd\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ngircd/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ngircd:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ngircd\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ngircd\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ngircd/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ngircd/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ngircd.git\ncd docker-ngircd\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ngircd:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ngircd/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>11.10.22: - Rebasing to alpine 3.16, migrate to s6v3.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>04.07.19: - Initial release.</li> </ul>"},{"location":"images/docker-nzbhydra2/","title":"nzbhydra2","text":""},{"location":"images/docker-nzbhydra2/#linuxservernzbhydra2","title":"linuxserver/nzbhydra2","text":"<p>Nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.</p> <p>It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is <code>linuxserver/nzbhydra2:v2.10.2-ls49</code></p> <p></p>"},{"location":"images/docker-nzbhydra2/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/nzbhydra2:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-nzbhydra2/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases dev \u2705 Prereleases from their GitHub"},{"location":"images/docker-nzbhydra2/#application-setup","title":"Application Setup","text":"<p>The web interface is at <code>&lt;your ip&gt;:5076</code> , to set up indexers and connections to your nzb download applications.</p>"},{"location":"images/docker-nzbhydra2/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-nzbhydra2/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n nzbhydra2:\n image: lscr.io/linuxserver/nzbhydra2:latest\n container_name: nzbhydra2\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /nzb/download:/downloads\n ports:\n - 5076:5076\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-nzbhydra2/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=nzbhydra2 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 5076:5076 \\\n -v /path/to/data:/config \\\n -v /nzb/download:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/nzbhydra2:latest\n</code></pre>"},{"location":"images/docker-nzbhydra2/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-nzbhydra2/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5076</code> WebUI"},{"location":"images/docker-nzbhydra2/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-nzbhydra2/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where nzbhydra2 should store config files. <code>/downloads</code> NZB download folder."},{"location":"images/docker-nzbhydra2/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nzbhydra2/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-nzbhydra2/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-nzbhydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-nzbhydra2/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-nzbhydra2/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it nzbhydra2 /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f nzbhydra2\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbhydra2\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbhydra2:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-nzbhydra2/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-nzbhydra2/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull nzbhydra2\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d nzbhydra2\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nzbhydra2/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/nzbhydra2:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop nzbhydra2\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm nzbhydra2\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-nzbhydra2/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-nzbhydra2/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-nzbhydra2.git\ncd docker-nzbhydra2\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/nzbhydra2:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-nzbhydra2/#versions","title":"Versions","text":"<ul> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>22.01.23: - Update release URL for arch-specific packages.</li> <li>20.01.23: - Update dependencies for v5.</li> <li>10.12.22: - Bump master JRE to v17. Default mapIpToHost to false.</li> <li>11.09.22: - Migrate to s6v3.</li> <li>03.05.22: - Rebase to Jammy.</li> <li>18.04.22: - Rebase to Alpine 3.15.</li> <li>01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip.</li> <li>14.04.20: - Correct Name, Hydra2 -&gt; NZBHydra2.</li> <li>08.01.20: - Switch to python3.</li> <li>05.01.20: - Add dev tag for prereleases.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).</li> <li>10.08.18: - Rebase to ubuntu bionic.</li> <li>15.04.18: - Change to port 5076 in the Dockerfile.</li> <li>11.01.18: - Initial Release.</li> </ul>"},{"location":"images/docker-ombi/","title":"ombi","text":""},{"location":"images/docker-ombi/#linuxserverombi","title":"linuxserver/ombi","text":"<p>Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server!</p> <p></p>"},{"location":"images/docker-ombi/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ombi:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ombi/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Ombi releases development \u2705 Releases from the <code>develop</code> branch of Ombi"},{"location":"images/docker-ombi/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:3579</code>. Follow the setup wizard on initial install. Then configure the required services.</p>"},{"location":"images/docker-ombi/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ombi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ombi:\n image: lscr.io/linuxserver/ombi:latest\n container_name: ombi\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - BASE_URL=/ombi #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 3579:3579\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ombi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ombi \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e BASE_URL=/ombi `#optional` \\\n -p 3579:3579 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ombi:latest\n</code></pre>"},{"location":"images/docker-ombi/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ombi/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3579</code> web gui"},{"location":"images/docker-ombi/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>BASE_URL=/ombi</code> Subfolder can optionally be defined as an env variable for reverse proxies. Keep in mind that once this value is defined, the gui setting for base url no longer works. To use the gui setting, remove this env variable."},{"location":"images/docker-ombi/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-ombi/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ombi/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ombi/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ombi/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-ombi/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ombi/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ombi /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ombi\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ombi\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ombi:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ombi/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ombi/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ombi\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ombi\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ombi/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ombi:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ombi\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ombi\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ombi/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ombi/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ombi.git\ncd docker-ombi\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ombi:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ombi/#versions","title":"Versions","text":"<ul> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>11.09.22: - Migrate to s6v3.</li> <li>01.05.22: - Rebase to Jammy.</li> <li>26.04.21: - Update tarball name, allow for v4 builds in stable.</li> <li>18.01.21: - Update upstream repo. Deprecate <code>v4-preview</code> tag, which is merged to <code>development</code> tag upstream.</li> <li>14.04.20: - Add Ombi donate links.</li> <li>10.05.19: - Added an optional env variable for base url setting.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Clarify info on tags and development builds.</li> <li>25.01.19: - Add info on tags and development builds.</li> <li>09.01.19: - Switch to multi-arch builds and add aarch64 image.</li> <li>11.03.18: - Add HOME env to Dockerfile.</li> <li>05.03.18: - Switch to Ombi v3 stable based on .net core.</li> <li>26.01.18: - Fix continuation lines.</li> <li>16.04.17: - Switch to using inhouse mono baseimage.</li> <li>17.02.17: - Initial Release.</li> </ul>"},{"location":"images/docker-openssh-server/","title":"openssh-server","text":""},{"location":"images/docker-openssh-server/#linuxserveropenssh-server","title":"linuxserver/openssh-server","text":"<p>Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.</p> <p></p>"},{"location":"images/docker-openssh-server/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/openssh-server:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-openssh-server/#application-setup","title":"Application Setup","text":"<p>If <code>PUBLIC_KEY</code> or <code>PUBLIC_KEY_FILE</code>, or <code>PUBLIC_KEY_DIR</code> variables are set, the specified keys will automatically be added to <code>authorized_keys</code>. If not, the keys can manually be added to <code>/config/.ssh/authorized_keys</code> and the container should be restarted. Removing <code>PUBLIC_KEY</code> or <code>PUBLIC_KEY_FILE</code> variables from docker run environment variables will not remove the keys from <code>authorized_keys</code>. <code>PUBLIC_KEY_FILE</code> and <code>PUBLIC_KEY_DIR</code> can be used with docker secrets.</p> <p>We provide the ability to set and allow password based access via the <code>PASSWORD_ACCESS</code> and <code>USER_PASSWORD</code> variables, though we as an organization discourage using password auth for public facing ssh endpoints.</p> <p>Connect to server via <code>ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP</code></p> <p>Setting <code>SUDO_ACCESS</code> to <code>true</code> by itself will allow passwordless sudo. <code>USER_PASSWORD</code> and <code>USER_PASSWORD_FILE</code> allow setting an optional sudo password.</p> <p>The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article.</p> <p>Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder.</p> <p>It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access.</p>"},{"location":"images/docker-openssh-server/#tips","title":"TIPS","text":"<p>You can volume map your own text file to <code>/etc/motd</code> to override the message displayed upon connection. You can optionally set the docker argument <code>hostname</code></p>"},{"location":"images/docker-openssh-server/#key-generation","title":"Key Generation","text":"<p>This container has a helper script to generate an ssh private/public key. In order to generate a key please run: <pre><code>docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server\n</code></pre></p> <p>Then simply follow the prompts. The keys generated by this script are only displayed on your console output, so make sure to save them somewhere after generation.</p>"},{"location":"images/docker-openssh-server/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-openssh-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n openssh-server:\n image: lscr.io/linuxserver/openssh-server:latest\n container_name: openssh-server\n hostname: openssh-server #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PUBLIC_KEY=yourpublickey #optional\n - PUBLIC_KEY_FILE=/path/to/file #optional\n - PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys #optional\n - PUBLIC_KEY_URL=https://github.com/username.keys #optional\n - SUDO_ACCESS=false #optional\n - PASSWORD_ACCESS=false #optional\n - USER_PASSWORD=password #optional\n - USER_PASSWORD_FILE=/path/to/file #optional\n - USER_NAME=linuxserver.io #optional\n - LOG_STDOUT= #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 2222:2222\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-openssh-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=openssh-server \\\n --hostname=openssh-server `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PUBLIC_KEY=yourpublickey `#optional` \\\n -e PUBLIC_KEY_FILE=/path/to/file `#optional` \\\n -e PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys `#optional` \\\n -e PUBLIC_KEY_URL=https://github.com/username.keys `#optional` \\\n -e SUDO_ACCESS=false `#optional` \\\n -e PASSWORD_ACCESS=false `#optional` \\\n -e USER_PASSWORD=password `#optional` \\\n -e USER_PASSWORD_FILE=/path/to/file `#optional` \\\n -e USER_NAME=linuxserver.io `#optional` \\\n -e LOG_STDOUT= `#optional` \\\n -p 2222:2222 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/openssh-server:latest\n</code></pre>"},{"location":"images/docker-openssh-server/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-openssh-server/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>2222</code> ssh port"},{"location":"images/docker-openssh-server/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PUBLIC_KEY=yourpublickey</code> Optional ssh public key, which will automatically be added to authorized_keys. <code>PUBLIC_KEY_FILE=/path/to/file</code> Optionally specify a file containing the public key (works with docker secrets). <code>PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys</code> Optionally specify a directory containing the public keys (works with docker secrets). <code>PUBLIC_KEY_URL=https://github.com/username.keys</code> Optionally specify a URL containing the public key. <code>SUDO_ACCESS=false</code> Set to <code>true</code> to allow <code>linuxserver.io</code>, the ssh user, sudo access. Without <code>USER_PASSWORD</code> set, this will allow passwordless sudo access. <code>PASSWORD_ACCESS=false</code> Set to <code>true</code> to allow user/password ssh access. You will want to set <code>USER_PASSWORD</code> or <code>USER_PASSWORD_FILE</code> as well. <code>USER_PASSWORD=password</code> Optionally set a sudo password for <code>linuxserver.io</code>, the ssh user. If this or <code>USER_PASSWORD_FILE</code> are not set but <code>SUDO_ACCESS</code> is set to true, the user will have passwordless sudo access. <code>USER_PASSWORD_FILE=/path/to/file</code> Optionally specify a file that contains the password. This setting supersedes the <code>USER_PASSWORD</code> option (works with docker secrets). <code>USER_NAME=linuxserver.io</code> Optionally specify a user name (Default:<code>linuxserver.io</code>) <code>LOG_STDOUT=</code> Set to <code>true</code> to log to stdout instead of file."},{"location":"images/docker-openssh-server/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-openssh-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--hostname=</code> Optionally the hostname can be defined."},{"location":"images/docker-openssh-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-openssh-server/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-openssh-server/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-openssh-server/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-openssh-server/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it openssh-server /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f openssh-server\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openssh-server\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openssh-server:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-openssh-server/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-openssh-server/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull openssh-server\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d openssh-server\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-openssh-server/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/openssh-server:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop openssh-server\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm openssh-server\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-openssh-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-openssh-server/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-openssh-server.git\ncd docker-openssh-server\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/openssh-server:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-openssh-server/#versions","title":"Versions","text":"<ul> <li>09.03.24: - Rebase to Alpine 3.19.</li> <li>12.06.23: - Rebase to Alpine 3.18, deprecate armhf. As announced here</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>18.10.22: - Fix wrong behavior of password/passwordless sudo</li> <li>11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>15.09.22: - add netcat-openbsd with support for proxies.</li> <li>18.07.22: - Fix service perms to comply with upgrade to s6 v3.</li> <li>16.04.22: - Rebase to alpine 3.15.</li> <li>16.11.21: - Add PUBLIC_KEY_URL option</li> <li>28.06.21: - Rebasing to alpine 3.14. Add support for PAM.</li> <li>10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp.</li> <li>21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban.</li> <li>20.10.20: - Set umask for sftp.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>18.01.20: - Add key generation script.</li> <li>13.01.20: - Add openssh-sftp-server.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>17.10.19: - Initial Release.</li> </ul>"},{"location":"images/docker-openvscode-server/","title":"openvscode-server","text":""},{"location":"images/docker-openvscode-server/#linuxserveropenvscode-server","title":"linuxserver/openvscode-server","text":"<p>Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.</p> <p></p>"},{"location":"images/docker-openvscode-server/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/openvscode-server:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-openvscode-server/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases insiders \u2705 Insiders releases"},{"location":"images/docker-openvscode-server/#application-setup","title":"Application Setup","text":"<p>If <code>CONNECTION_TOKEN</code> or <code>CONNECTION_SECRET</code> env vars are set, you can access the webui at <code>http://&lt;your-ip&gt;:3000/?tkn=supersecrettoken</code> (replace <code>supersecrettoken</code> with the value set). If not, you can access the webui at <code>http://&lt;your-ip&gt;:3000</code>.</p> <p>For github integration, drop your ssh key in to <code>/config/.ssh</code>. Then open a terminal from the top menu and set your github username and email via the following commands</p> <pre><code>git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n</code></pre> <p>When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at <code>https://PORT.openvscode-server.domain.com</code> very much like how code-server's port proxy function is handled. For that, a wildcard CNAME <code>*.openvscode-server.domain.com</code> needs to be created and the SWAG cert needs to cover those subdomains.</p>"},{"location":"images/docker-openvscode-server/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-openvscode-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n openvscode-server:\n image: lscr.io/linuxserver/openvscode-server:latest\n container_name: openvscode-server\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - CONNECTION_TOKEN= #optional\n - CONNECTION_SECRET= #optional\n - SUDO_PASSWORD=password #optional\n - SUDO_PASSWORD_HASH= #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-openvscode-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=openvscode-server \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e CONNECTION_TOKEN= `#optional` \\\n -e CONNECTION_SECRET= `#optional` \\\n -e SUDO_PASSWORD=password `#optional` \\\n -e SUDO_PASSWORD_HASH= `#optional` \\\n -p 3000:3000 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/openvscode-server:latest\n</code></pre>"},{"location":"images/docker-openvscode-server/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-openvscode-server/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Web UI port."},{"location":"images/docker-openvscode-server/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>CONNECTION_TOKEN=</code> Optional security token for accessing the Web UI (ie. <code>supersecrettoken</code>). <code>CONNECTION_SECRET=</code> Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. <code>/path/to/file</code>). Overrides <code>CONNECTION_TOKEN</code>. <code>SUDO_PASSWORD=password</code> If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password. <code>SUDO_PASSWORD_HASH=</code> Optionally set sudo password via hash (takes priority over <code>SUDO_PASSWORD</code> var). Format is <code>$type$salt$hashed</code>."},{"location":"images/docker-openvscode-server/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files."},{"location":"images/docker-openvscode-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-openvscode-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-openvscode-server/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-openvscode-server/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-openvscode-server/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-openvscode-server/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it openvscode-server /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f openvscode-server\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvscode-server\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvscode-server:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-openvscode-server/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-openvscode-server/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull openvscode-server\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d openvscode-server\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-openvscode-server/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/openvscode-server:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop openvscode-server\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm openvscode-server\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-openvscode-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-openvscode-server/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-openvscode-server.git\ncd docker-openvscode-server\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/openvscode-server:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-openvscode-server/#versions","title":"Versions","text":"<ul> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip <code>/config/workspace</code> contents.</li> <li>12.02.22: - Update <code>install-extension</code> helper to compensate for upstream changes.</li> <li>04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar.</li> <li>29.12.21: - Add <code>install-extension</code> as a helper for mods to install extensions.</li> <li>10.12.21: - Update deprecated connectionToken arg.</li> <li>30.11.21: - Fix app folder permissions, add the optional sudo password vars.</li> <li>29.11.21: - Create <code>.profile</code> and <code>.bashrc</code> for the user.</li> <li>29.11.21: - Release <code>insiders</code> tag.</li> <li>28.11.21: - Initial Release.</li> </ul>"},{"location":"images/docker-opera/","title":"opera","text":""},{"location":"images/docker-opera/#linuxserveropera","title":"linuxserver/opera","text":"<p>Opera is a multi-platform web browser developed by its namesake company Opera. The browser is based on Chromium, but distinguishes itself from other Chromium-based browsers (Chrome, Edge, etc.) through its user interface and other features.</p> <p></p>"},{"location":"images/docker-opera/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/opera:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-opera/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-opera/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-opera/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-opera/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-opera/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-opera/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-opera/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-opera/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n opera:\n image: lscr.io/linuxserver/opera:latest\n container_name: opera\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - OPERA_CLI=https://www.linuxserver.io/ #optional\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-opera/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=opera \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e OPERA_CLI=https://www.linuxserver.io/ `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/opera:latest\n</code></pre>"},{"location":"images/docker-opera/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-opera/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Opera desktop gui. <code>3001</code> HTTPS Opera desktop gui."},{"location":"images/docker-opera/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>OPERA_CLI=https://www.linuxserver.io/</code> Specify one or multiple Chromium CLI flags, this string will be passed to the application in full."},{"location":"images/docker-opera/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-opera/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is required for Opera to launch and function. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Opera runs in no-sandbox mode without it."},{"location":"images/docker-opera/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-opera/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-opera/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-opera/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-opera/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it opera /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f opera\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' opera\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/opera:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-opera/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-opera/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull opera\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d opera\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-opera/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/opera:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop opera\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm opera\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-opera/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-opera/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-opera.git\ncd docker-opera\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/opera:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-opera/#versions","title":"Versions","text":"<ul> <li>13.02.24: - Remove manual codecs ingestion.</li> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.01.24: - Rebase to Debian Bookworm.</li> <li>09.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-orcaslicer/","title":"orcaslicer","text":""},{"location":"images/docker-orcaslicer/#linuxserverorcaslicer","title":"linuxserver/orcaslicer","text":"<p>Orca Slicer is an open source slicer for FDM printers. OrcaSlicer is fork of Bambu Studio, it was previously known as BambuStudio-SoftFever, Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community</p> <p></p>"},{"location":"images/docker-orcaslicer/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/orcaslicer:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-orcaslicer/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-orcaslicer/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-orcaslicer/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-orcaslicer/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-orcaslicer/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-orcaslicer/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-orcaslicer/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-orcaslicer/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n orcaslicer:\n image: lscr.io/linuxserver/orcaslicer:latest\n container_name: orcaslicer\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-orcaslicer/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=orcaslicer \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/orcaslicer:latest\n</code></pre>"},{"location":"images/docker-orcaslicer/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-orcaslicer/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Orca Slicer desktop gui. <code>3001</code> Orca Slicer desktop gui HTTPS."},{"location":"images/docker-orcaslicer/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-orcaslicer/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and files."},{"location":"images/docker-orcaslicer/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-orcaslicer/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-orcaslicer/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-orcaslicer/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-orcaslicer/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-orcaslicer/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it orcaslicer /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f orcaslicer\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' orcaslicer\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/orcaslicer:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-orcaslicer/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-orcaslicer/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull orcaslicer\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d orcaslicer\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-orcaslicer/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/orcaslicer:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop orcaslicer\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm orcaslicer\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-orcaslicer/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-orcaslicer/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-orcaslicer.git\ncd docker-orcaslicer\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/orcaslicer:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-orcaslicer/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>15.11.23: - Initial release.</li> </ul>"},{"location":"images/docker-oscam/","title":"oscam","text":""},{"location":"images/docker-oscam/#linuxserveroscam","title":"linuxserver/oscam","text":"<p>Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.</p> <p></p>"},{"location":"images/docker-oscam/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/oscam:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-oscam/#application-setup","title":"Application Setup","text":"<p>To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888. You can find the project wiki here.</p>"},{"location":"images/docker-oscam/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-oscam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n oscam:\n image: lscr.io/linuxserver/oscam:latest\n container_name: oscam\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/oscam/data:/config\n ports:\n - 8888:8888\n devices:\n - /dev/ttyUSB0:/dev/ttyUSB0\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-oscam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=oscam \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8888:8888 \\\n -v /path/to/oscam/data:/config \\\n --device /dev/ttyUSB0:/dev/ttyUSB0 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/oscam:latest\n</code></pre>"},{"location":"images/docker-oscam/#passing-through-smart-card-readers","title":"Passing through Smart Card Readers","text":"<p>If you want to pass through a smart card reader, you need to specify the reader with the <code>--device=</code> tag. The method used depends on how the reader is recognized. The first is /dev/ttyUSBX. To find the correct device, connect the reader and run <code>dmesg | tail</code> on the host. In the output you will find /dev/ttyUSBX, where X is the number of the device. If this is the first reader you connect to your host, it will be /dev/ttyUSB0. If you add one more it will be /dev/ttyUSB1.</p> <p>If there are no /dev/ttyUSBX device in <code>dmesg | tail</code>, you have to use the USB bus path. It will look similar to the below.</p> <p><code>/dev/bus/usb/001/001</code></p> <p>The important parts are the two numbers in the end. The first one is the Bus number, the second is the Device number. To find the Bus and Device number you have to run <code>lsusb</code> on the host, then find your USB device in the list and note the Bus and Device numbers.</p> <p>Here is an example of how to find the Bus and Device. The output of the lsusb command is below.</p> <p><code>Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121</code></p> <p>The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the <code>--device=</code> tag.</p> <p><code>--device=/dev/bus/usb/002/005</code></p> <p>If you have multiple smart card readers, you add one <code>--device=</code> tag for each reader.</p>"},{"location":"images/docker-oscam/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-oscam/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8888</code> WebUI"},{"location":"images/docker-oscam/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-oscam/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where oscam should store config files and logs."},{"location":"images/docker-oscam/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/ttyUSB0</code> For passing through smart card readers."},{"location":"images/docker-oscam/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-oscam/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-oscam/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-oscam/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-oscam/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-oscam/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it oscam /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f oscam\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' oscam\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/oscam:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-oscam/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-oscam/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull oscam\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d oscam\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-oscam/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/oscam:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop oscam\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm oscam\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-oscam/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-oscam/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-oscam.git\ncd docker-oscam\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/oscam:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-oscam/#versions","title":"Versions","text":"<ul> <li>04.03.24: - Rebase to Alpine 3.19. Add libdvbcsa.</li> <li>27.08.23: - Rebase to Alpine 3.18. Pull PCSC driver from Linuxserver S3 due to Cloudflare blocking curl download of original file.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>13.03.23: - Rebase to Alpine 3.17.</li> <li>03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link.</li> <li>13.02.22: - Rebasing to alpine 3.15.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>29.04.19: - Add revision check, so pipeline can build new revisions.</li> <li>28.04.19: - Switch back to streamboard svn to fix version not showing in UI.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8.</li> <li>03.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>13.12.17: - Rebase to alpine 3.7.</li> <li>19.10.17: - Add ccid package for usb card readers.</li> <li>17.10.17: - Switch to using bzr for source code, streamboard awol.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>09.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Add version layer information.</li> <li>02.10.16: - Add info on passing through devices to README.</li> <li>25.09.16: - Initial release.</li> </ul>"},{"location":"images/docker-overseerr/","title":"overseerr","text":""},{"location":"images/docker-overseerr/#linuxserveroverseerr","title":"linuxserver/overseerr","text":"<p>Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.</p> <p></p>"},{"location":"images/docker-overseerr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/overseerr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-overseerr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases from GitHub develop \u2705 Development releases from commits in upstream develop branch"},{"location":"images/docker-overseerr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:5055</code>, for more information check out Overseerr.</p>"},{"location":"images/docker-overseerr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-overseerr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n overseerr:\n image: lscr.io/linuxserver/overseerr:latest\n container_name: overseerr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/overseerr/config:/config\n ports:\n - 5055:5055\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-overseerr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=overseerr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 5055:5055 \\\n -v /path/to/overseerr/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/overseerr:latest\n</code></pre>"},{"location":"images/docker-overseerr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-overseerr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5055</code> Port for Overseerr's web interface."},{"location":"images/docker-overseerr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-overseerr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-overseerr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-overseerr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-overseerr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-overseerr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-overseerr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-overseerr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it overseerr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f overseerr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' overseerr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/overseerr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-overseerr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-overseerr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull overseerr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d overseerr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-overseerr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/overseerr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop overseerr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm overseerr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-overseerr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-overseerr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-overseerr.git\ncd docker-overseerr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/overseerr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-overseerr/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>18.12.22: - Rebase main to 3.17.</li> <li>27.10.22: - Rebase main to 3.16, migrate to s6v3.</li> <li>20.08.22: - Don't install cypress.</li> <li>01.04.22: - Rebase main branch to Alpine 3.15.</li> <li>27.01.22: - Rebase develop branch to Alpine 3.15.</li> <li>04.01.22: - Remove cached files.</li> <li>10.10.21: - Add additional post-build cleanup.</li> <li>19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit.</li> <li>05.04.21: - Initial Release.</li> </ul>"},{"location":"images/docker-pairdrop/","title":"pairdrop","text":""},{"location":"images/docker-pairdrop/#linuxserverpairdrop","title":"linuxserver/pairdrop","text":"<p>PairDrop is a sublime alternative to AirDrop that works on all platforms. Send images, documents or text via peer to peer connection to devices in the same local network/Wi-Fi or to paired devices.</p> <p></p>"},{"location":"images/docker-pairdrop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pairdrop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pairdrop/#application-setup","title":"Application Setup","text":"<p>Web UI is accessible at http://SERVERIP:PORT. It is strongly recommended to run PairDrop via a reverse proxy, served over HTTPS, if you are making it publicly available. In this configuration you must ensure that the <code>X-Forwarded-For</code> header is being set correctly, otherwise all clients will be mutually visible.</p> <p>Most proxies will set this header automatically but may require additional configuration if you are using something like Cloudflare Proxy.</p>"},{"location":"images/docker-pairdrop/#custom-stunturn-servers","title":"Custom STUN/TURN Servers","text":"<p>To specify custom STUN/TURN servers for PairDrop clients to use, create a JSON config file in a mounted path and use the RTC_CONFIG environment variable to point to it.</p> <p>You can use https://raw.githubusercontent.com/schlagmichdoch/PairDrop/master/rtc_config_example.json as a starting point.</p>"},{"location":"images/docker-pairdrop/#note-on-websocket-fallback","title":"Note on Websocket fallback","text":"<p>Enabling WS_FALLBACK provides a fallback if the peer to peer WebRTC connection is not available to the client.</p> <p>This is especially useful if you connect to your instance via a VPN as most VPN services block WebRTC completely in order to hide your real IP address.</p> <p>Warning: All traffic sent between devices using this fallback is routed through the server and therefor not peer to peer! Traffic routed via this fallback is readable by the server and uses the server's bandwidth.</p>"},{"location":"images/docker-pairdrop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pairdrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pairdrop:\n image: lscr.io/linuxserver/pairdrop:latest\n container_name: pairdrop\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - RATE_LIMIT=false #optional\n - WS_FALLBACK=false #optional\n - RTC_CONFIG= #optional\n - DEBUG_MODE=false #optional\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pairdrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pairdrop \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e RATE_LIMIT=false `#optional` \\\n -e WS_FALLBACK=false `#optional` \\\n -e RTC_CONFIG= `#optional` \\\n -e DEBUG_MODE=false `#optional` \\\n -p 3000:3000 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pairdrop:latest\n</code></pre>"},{"location":"images/docker-pairdrop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pairdrop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> http gui"},{"location":"images/docker-pairdrop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>RATE_LIMIT=false</code> Set to <code>true</code> to limit clients to 100 requests per 5 min <code>WS_FALLBACK=false</code> Set to <code>true</code> to enable websocket fallback if the peer to peer WebRTC connection is not available to the client (see App Setup notes). <code>RTC_CONFIG=</code> Path to a json file containing custom STUN/TURN config (see App Setup notes) <code>DEBUG_MODE=false</code> Set to <code>true</code> to debug the http server configuration by logging clients IP addresses used by PairDrop to STDOUT. See here for more info. Do not use in production!"},{"location":"images/docker-pairdrop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-pairdrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pairdrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pairdrop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pairdrop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pairdrop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pairdrop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pairdrop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pairdrop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pairdrop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pairdrop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pairdrop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pairdrop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pairdrop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pairdrop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pairdrop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pairdrop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pairdrop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pairdrop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pairdrop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pairdrop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pairdrop.git\ncd docker-pairdrop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pairdrop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pairdrop/#versions","title":"Versions","text":"<ul> <li>31.01.24: - Rebase to Alpine 3.19.</li> <li>30.05.23: - Rebase to Alpine 3.18.</li> <li>06.03.23: - Run npm install as non-root user.</li> <li>20.02.23: - Initial Release.</li> </ul>"},{"location":"images/docker-phpmyadmin/","title":"phpmyadmin","text":""},{"location":"images/docker-phpmyadmin/#linuxserverphpmyadmin","title":"linuxserver/phpmyadmin","text":"<p>Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.</p> <p></p>"},{"location":"images/docker-phpmyadmin/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/phpmyadmin:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-phpmyadmin/#application-setup","title":"Application Setup","text":"<p>This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.</p> <p>We support all of the official environment variables for configuration as well as directly editing the config files.</p> <p>For more information check out the phpmyadmin documentation.</p>"},{"location":"images/docker-phpmyadmin/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-phpmyadmin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n phpmyadmin:\n image: lscr.io/linuxserver/phpmyadmin:latest\n container_name: phpmyadmin\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PMA_ARBITRARY=1 #optional\n - PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional\n volumes:\n - /path/to/phpmyadmin/config:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-phpmyadmin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=phpmyadmin \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PMA_ARBITRARY=1 `#optional` \\\n -e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com `#optional` \\\n -p 80:80 \\\n -v /path/to/phpmyadmin/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/phpmyadmin:latest\n</code></pre>"},{"location":"images/docker-phpmyadmin/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-phpmyadmin/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Port for web frontend"},{"location":"images/docker-phpmyadmin/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PMA_ARBITRARY=1</code> Set to <code>1</code> to allow you to connect to any server. Setting to <code>0</code> will only allow you to connect to specified hosts (See Application Setup) <code>PMA_ABSOLUTE_URI=https://phpmyadmin.example.com</code> Set the URL you will use to access the web frontend"},{"location":"images/docker-phpmyadmin/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-phpmyadmin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-phpmyadmin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-phpmyadmin/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-phpmyadmin/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-phpmyadmin/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-phpmyadmin/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it phpmyadmin /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f phpmyadmin\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' phpmyadmin\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/phpmyadmin:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-phpmyadmin/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-phpmyadmin/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull phpmyadmin\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d phpmyadmin\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-phpmyadmin/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/phpmyadmin:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop phpmyadmin\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm phpmyadmin\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-phpmyadmin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-phpmyadmin/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-phpmyadmin.git\ncd docker-phpmyadmin\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/phpmyadmin:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-phpmyadmin/#versions","title":"Versions","text":"<ul> <li>28.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.12.23: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>06.09.23: - Add support for custom themes.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3.</li> <li>20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>23.01.22: - Pin versions to 5.x.x.</li> <li>14.06.21: - Initial Release.</li> </ul>"},{"location":"images/docker-pidgin/","title":"pidgin","text":""},{"location":"images/docker-pidgin/#linuxserverpidgin","title":"linuxserver/pidgin","text":"<p>Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.</p> <p></p>"},{"location":"images/docker-pidgin/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pidgin:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pidgin/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul> <p>This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it. </p> <ul> <li>Bonjour- Default XMPP style plugin</li> <li>Discord- Provided by purple-discord</li> <li>Facebook- Provided by purple-facebook</li> <li>Gadu-Gadu- Default libgadu plugin</li> <li>Google Talk- Provided by purple-hangouts</li> <li>GroupWise- Default GroupWise plugin</li> <li>Hangouts- Provided by purple-hangouts</li> <li>ICQ (WIM)- Provided by icyque</li> <li>IRC- Default IRC plugin</li> <li>Instagram- Provided by purple-instagram</li> <li>Office Comminicator (SIPE)- Provided by SIPE Project</li> <li>Rocket.chat- Provided by purple-rocketchat</li> <li>SIMPLE- Default plugin</li> <li>Skype (HTTP)- Provided by skype4pidgin</li> <li>Slack- Provided by slack-libpurple</li> <li>Telegram- Provided by telegram-purple</li> <li>XMPP- Default XMPP plugin</li> <li>Zephyr- Default project Athena plugin</li> </ul>"},{"location":"images/docker-pidgin/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-pidgin/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-pidgin/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-pidgin/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-pidgin/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-pidgin/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pidgin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pidgin:\n image: lscr.io/linuxserver/pidgin:latest\n container_name: pidgin\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pidgin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pidgin \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pidgin:latest\n</code></pre>"},{"location":"images/docker-pidgin/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pidgin/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Pidgin desktop gui. <code>3001</code> Pidgin desktop gui HTTPS."},{"location":"images/docker-pidgin/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-pidgin/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-pidgin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-pidgin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pidgin/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pidgin/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pidgin/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pidgin/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pidgin /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pidgin\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pidgin\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pidgin:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pidgin/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pidgin/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pidgin\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pidgin\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pidgin/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pidgin:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pidgin\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pidgin\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pidgin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pidgin/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pidgin.git\ncd docker-pidgin\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pidgin:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pidgin/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>17.01.24: - Switch from Chromium to Firefox.</li> <li>02.01.24: - Rebase to Alpine 3.19.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>15.02.22: - Add build deps for discord.</li> <li>23.12.21: - Rebase to Alpine 3.15.</li> <li>26.09.21: - Rebase to Alpine 3.14.</li> <li>14.05.21: - Initial release.</li> </ul>"},{"location":"images/docker-piper/","title":"piper","text":""},{"location":"images/docker-piper/#linuxserverpiper","title":"linuxserver/piper","text":"<p>Piper is a fast, local neural text to speech system that sounds great and is optimized for the Raspberry Pi 4. This container provides a Wyoming protocol server for Piper.</p> <p></p>"},{"location":"images/docker-piper/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/piper:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-piper/#application-setup","title":"Application Setup","text":"<p>For use with Home Assistant Assist, add the Wyoming integration and supply the hostname/IP and port that piper is running add-on.\"</p> <p>For more information see the piper docs,</p>"},{"location":"images/docker-piper/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-piper/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n piper:\n image: lscr.io/linuxserver/piper:latest\n container_name: piper\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PIPER_VOICE=en_US-lessac-medium\n - PIPER_LENGTH=1.0 #optional\n - PIPER_NOISE=0.667 #optional\n - PIPER_NOISEW=0.333 #optional\n - PIPER_SPEAKER=0 #optional\n - PIPER_PROCS=1 #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 10200:10200\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-piper/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=piper \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PIPER_VOICE=en_US-lessac-medium \\\n -e PIPER_LENGTH=1.0 `#optional` \\\n -e PIPER_NOISE=0.667 `#optional` \\\n -e PIPER_NOISEW=0.333 `#optional` \\\n -e PIPER_SPEAKER=0 `#optional` \\\n -e PIPER_PROCS=1 `#optional` \\\n -p 10200:10200 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/piper:latest\n</code></pre>"},{"location":"images/docker-piper/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-piper/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>10200</code> Wyoming connection port."},{"location":"images/docker-piper/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PIPER_VOICE=en_US-lessac-medium</code> The Piper voice to use, in the format <code>&lt;language&gt;-&lt;name&gt;-&lt;quality&gt;</code> <code>PIPER_LENGTH=1.0</code> Voice speaking rate, 1.0 is default with &lt; 1.0 being faster and &gt; 1.0 being slower. <code>PIPER_NOISE=0.667</code> Controls the variability of the voice by adding noise. Values above 1 will start to degrade audio. <code>PIPER_NOISEW=0.333</code> Controls the variability of speaking cadence. Values above 1 produce extreme stutters and pauses. <code>PIPER_SPEAKER=0</code> Speaker number to use if the voice supports multiple speakers. <code>PIPER_PROCS=1</code> Number of Piper processes to run simultaneously."},{"location":"images/docker-piper/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Local path for piper config files."},{"location":"images/docker-piper/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-piper/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-piper/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-piper/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-piper/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-piper/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it piper /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f piper\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piper\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piper:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-piper/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-piper/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull piper\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d piper\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-piper/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/piper:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop piper\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm piper\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-piper/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-piper/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-piper.git\ncd docker-piper\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/piper:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-piper/#versions","title":"Versions","text":"<ul> <li>25.11.23: - Initial Release.</li> </ul>"},{"location":"images/docker-piwigo/","title":"piwigo","text":""},{"location":"images/docker-piwigo/#linuxserverpiwigo","title":"linuxserver/piwigo","text":"<p>Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.</p> <p></p>"},{"location":"images/docker-piwigo/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/piwigo:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-piwigo/#application-setup","title":"Application Setup","text":"<ul> <li> <p>You must create a user and database for piwigo to use in a mysql/mariadb server.</p> </li> <li> <p>Self-signed keys are generated the first time you run the container and can be found in <code>/config/keys</code>, if needed, you can replace them with your own.</p> </li> <li> <p>The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc.\"</p> </li> </ul>"},{"location":"images/docker-piwigo/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-piwigo/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n piwigo:\n image: lscr.io/linuxserver/piwigo:latest\n container_name: piwigo\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/piwigo/config:/config\n - /path/to/appdata/gallery:/gallery\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-piwigo/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=piwigo \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -v /path/to/piwigo/config:/config \\\n -v /path/to/appdata/gallery:/gallery \\\n --restart unless-stopped \\\n lscr.io/linuxserver/piwigo:latest\n</code></pre>"},{"location":"images/docker-piwigo/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-piwigo/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Application WebUI"},{"location":"images/docker-piwigo/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-piwigo/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/gallery</code> Image storage for Piwigo"},{"location":"images/docker-piwigo/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-piwigo/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-piwigo/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-piwigo/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-piwigo/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-piwigo/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it piwigo /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f piwigo\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piwigo\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piwigo:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-piwigo/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-piwigo/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull piwigo\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d piwigo\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-piwigo/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/piwigo:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop piwigo\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm piwigo\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-piwigo/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-piwigo/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-piwigo.git\ncd docker-piwigo\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/piwigo:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-piwigo/#versions","title":"Versions","text":"<ul> <li>02.03.24: - Fix HEIC file format support.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>12.12.23: - Rebase to Alpine 3.18.</li> <li>03.06.23: - Revert to Alpine 3.17 due to compatibility issues with php 8.2.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>16.01.23: - Fix broken custom template persistence.</li> <li>08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>29.06.21: - Rebase to 3.14, Add php7-zip package</li> <li>20.05.21: - Create separate volume for image data</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>12.12.20: - Increased upload_max_filesize in php.ini</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>12.06.19: - Add ffmpeg and other deps as needed by popular plugins.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>01.03.19: - Add php-ctype &amp; php-curl.</li> <li>22.02.19: - Rebasing to alpine 3.9, add php-ldap.</li> <li>28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch.</li> <li>25.01.18: - Rebase to alpine linux 3.7.</li> <li>25.05.17: - Rebase to alpine linux 3.6.</li> <li>03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.</li> <li>20.04.17: - Add php7-exif package, thanks iiska</li> <li>23.02.17: - Rebase to alpine linux 3.5 and nginx.</li> <li>14.10.16: - Add version layer information.</li> <li>10.09.16: - Add layer badges to README.</li> <li>29.08.15: - Initial Release.</li> </ul>"},{"location":"images/docker-plex-meta-manager/","title":"plex-meta-manager","text":""},{"location":"images/docker-plex-meta-manager/#linuxserverplex-meta-manager","title":"linuxserver/plex-meta-manager","text":"<p>Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.</p> <p></p>"},{"location":"images/docker-plex-meta-manager/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/plex-meta-manager:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-plex-meta-manager/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases. develop \u2705 Latest commits from the develop branch nightly \u2705 Latest commits from the nightly branch"},{"location":"images/docker-plex-meta-manager/#application-setup","title":"Application Setup","text":"<p>There is a walkthrough available to help get you up and running.</p> <p>This image supports all of the environment variables listed here and all commandline arguments.</p> <p>To perform a one-time run use <code>docker run</code> (or <code>docker-compose run</code>) with the <code>--rm</code> and <code>-e PMM_RUN=True</code> arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion.</p> <p>For more information see the official wiki.</p>"},{"location":"images/docker-plex-meta-manager/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-plex-meta-manager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n plex-meta-manager:\n image: lscr.io/linuxserver/plex-meta-manager:latest\n container_name: plex-meta-manager\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - PMM_CONFIG=/config/config.yml #optional\n - PMM_TIME=03:00 #optional\n - PMM_RUN=False #optional\n - PMM_TEST=False #optional\n - PMM_NO_MISSING=False #optional\n volumes:\n - /path/to/plex-meta-manager/config:/config\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-plex-meta-manager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=plex-meta-manager \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e PMM_CONFIG=/config/config.yml `#optional` \\\n -e PMM_TIME=03:00 `#optional` \\\n -e PMM_RUN=False `#optional` \\\n -e PMM_TEST=False `#optional` \\\n -e PMM_NO_MISSING=False `#optional` \\\n -v /path/to/plex-meta-manager/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/plex-meta-manager:latest\n</code></pre>"},{"location":"images/docker-plex-meta-manager/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-plex-meta-manager/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-plex-meta-manager/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>PMM_CONFIG=/config/config.yml</code> Specify a custom config file to use. <code>PMM_TIME=03:00</code> Comma-separated list of times to update each day. Format: <code>HH:MM</code>. <code>PMM_RUN=False</code> Set to <code>True</code> to run without the scheduler. <code>PMM_TEST=False</code> Set to <code>True</code> to run in debug mode with only collections that have <code>test: true</code>. <code>PMM_NO_MISSING=False</code> Set to <code>True</code> to run without any of the missing movie/show functions."},{"location":"images/docker-plex-meta-manager/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-plex-meta-manager/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-plex-meta-manager/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-plex-meta-manager/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-plex-meta-manager/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-plex-meta-manager/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-plex-meta-manager/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it plex-meta-manager /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f plex-meta-manager\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex-meta-manager\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex-meta-manager:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-plex-meta-manager/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-plex-meta-manager/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull plex-meta-manager\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d plex-meta-manager\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-plex-meta-manager/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/plex-meta-manager:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop plex-meta-manager\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm plex-meta-manager\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-plex-meta-manager/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-plex-meta-manager/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-plex-meta-manager.git\ncd docker-plex-meta-manager\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/plex-meta-manager:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-plex-meta-manager/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>10.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>05.03.23: - Add nightly branch.</li> <li>11.12.22: - Rebase master to Alpine 3.17.</li> <li>08.11.22: - Add develop branch.</li> <li>25.10.22: - Support commandline args and relative paths.</li> <li>03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>30.01.22: - Initial Release.</li> </ul>"},{"location":"images/docker-plex/","title":"plex","text":""},{"location":"images/docker-plex/#linuxserverplex","title":"linuxserver/plex","text":"<p>Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. Straightforward design and bulk actions mean getting things done faster.</p> <p></p>"},{"location":"images/docker-plex/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/plex:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-plex/#application-setup","title":"Application Setup","text":"<p>Webui can be found at <code>&lt;your-ip&gt;:32400/web</code></p> <p>Note</p> <p>If there is no value set for the VERSION variable, then no updates will take place.</p> <p>Note</p> <p>For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui.</p> <p>Valid settings for VERSION are:-</p> <p>Info</p> <p>YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT.</p> <ul> <li><code>docker</code>: Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command.</li> <li><code>latest</code>: will update plex to the latest version available that you are entitled to.</li> <li><code>public</code>: will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates.</li> <li><code>&lt;specific-version&gt;</code>: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.</li> </ul>"},{"location":"images/docker-plex/#hardware-acceleration","title":"Hardware Acceleration","text":"<p>Many desktop applications need access to a GPU to function properly and even some Desktop Environments have compositor effects that will not function without a GPU. However this is not a hard requirement and all base images will function without a video device mounted into the container.</p>"},{"location":"images/docker-plex/#intelatiamd","title":"Intel/ATI/AMD","text":"<p>To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.</p> <pre><code>--device=/dev/dri:/dev/dri\n</code></pre> <p>We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-plex/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-container-toolkit</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-container-toolkit is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-plex/#arm-devices","title":"Arm Devices","text":"<p>Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable <code>dtoverlay=vc4-fkms-v3d</code> in your usercfg.txt.</p>"},{"location":"images/docker-plex/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-plex/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n plex:\n image: lscr.io/linuxserver/plex:latest\n container_name: plex\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - VERSION=docker\n - PLEX_CLAIM= #optional\n volumes:\n - /path/to/library:/config\n - /path/to/tvseries:/tv\n - /path/to/movies:/movies\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-plex/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=plex \\\n --net=host \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e VERSION=docker \\\n -e PLEX_CLAIM= `#optional` \\\n -v /path/to/library:/config \\\n -v /path/to/tvseries:/tv \\\n -v /path/to/movies:/movies \\\n --restart unless-stopped \\\n lscr.io/linuxserver/plex:latest\n</code></pre>"},{"location":"images/docker-plex/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-plex/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-plex/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Use Host Networking"},{"location":"images/docker-plex/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>VERSION=docker</code> Set whether to update plex or not - see Application Setup section. <code>PLEX_CLAIM=</code> Optionally you can obtain a claim token from https://plex.tv/claim and input here. Keep in mind that the claim tokens expire within 4 minutes."},{"location":"images/docker-plex/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Plex library location. This can grow very large, 50gb+ is likely for a large collection. <code>/tv</code> Media goes here. Add as many as needed e.g. <code>/movies</code>, <code>/tv</code>, etc. <code>/movies</code> Media goes here. Add as many as needed e.g. <code>/movies</code>, <code>/tv</code>, etc."},{"location":"images/docker-plex/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-plex/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-plex/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-plex/#optional-parameters","title":"Optional Parameters","text":"<p>If you want to run the container in bridge network mode (instead of the recommended host network mode) you will need to specify ports. The official documentation for ports lists 32400 as the only required port. The rest of the ports are optionally used for specific purposes listed in the documentation. If you have not already claimed your server (first time setup) you need to set <code>PLEX_CLAIM</code> to claim a server set up with bridge networking.</p> <pre><code> -p 32400:32400 \\\n -p 1900:1900/udp \\\n -p 5353:5353/udp \\\n -p 8324:8324 \\\n -p 32410:32410/udp \\\n -p 32412:32412/udp \\\n -p 32413:32413/udp \\\n -p 32414:32414/udp \\\n -p 32469:32469\n</code></pre> <p>The application accepts a series of environment variables to further customize itself on boot:</p> Parameter Function <code>--device=/dev/dri:/dev/dri</code> Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section. <code>--device=/dev/dvb:/dev/dvb</code> Add this option to your run command if you plan on using dvb devices."},{"location":"images/docker-plex/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-plex/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-plex/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it plex /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f plex\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-plex/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-plex/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull plex\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d plex\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-plex/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/plex:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop plex\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm plex\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-plex/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-plex/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-plex.git\ncd docker-plex\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/plex:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-plex/#versions","title":"Versions","text":"<ul> <li>12.02.24: - Use universal hardware acceleration blurb</li> <li>09.01.24: - Set ownership on TranscoderTempDirectory when it's been saved in Preferences.</li> <li>16.08.23: - Install unrar from linuxserver repo.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex).</li> <li>18.07.22: - Pin all opencl related driver packages.</li> <li>16.05.22: - Pin opencl version.</li> <li>04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw.</li> <li>25.12.21: - Install Intel drivers from the official repo.</li> <li>20.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu.</li> <li>23.11.20: - Add Bionic branch make Focal default.</li> <li>03.05.20: - Update exposed ports and example docs for bridge mode.</li> <li>23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start.</li> <li>04.12.19: - Add variable for setting PLEX_CLAIM. Remove <code>/transcode</code> volume mapping as it is now set via plex gui and defaults to a location under <code>/config</code>.</li> <li>06.08.19: - Add variable for setting UMASK.</li> <li>10.07.19: - Fix permissions for tuner (/dev/dvb) devices.</li> <li>20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.03.19: - Fix update logic for <code>VERSION=public</code>.</li> <li>14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64.</li> <li>15.02.19: - Clean up plex pid after unclean stop.</li> <li>11.02.19: - Fix nvidia variables, add device variables.</li> <li>16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service.</li> <li>07.09.18: - Rebase to ubuntu bionic, add udev package.</li> <li>09.12.17: - Fix continuation lines.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>28.05.17: - Add unrar package as per requests, for subzero plugin.</li> <li>11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library</li> <li>03.01.17: - Use case insensitive version variable matching rather than export and make lowercase.</li> <li>17.10.16: - Allow use of uppercase version variable</li> <li>01.10.16: - Add TZ info to README.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README.</li> <li>22.08.16: - Rebased to xenial and s6 overlay</li> <li>07.04.16: - removed <code>/transcode</code> volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS</li> <li>24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes.</li> <li>17.09.15: - Changed to run chmod only once</li> <li>19.09.15: - Plex updated their download servers from http to https</li> <li>28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix.</li> <li>18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42.</li> <li>09.07.15: - Now with ability to pick static version number.</li> <li>08.07.15: - Now with autoupdates. (Hosted by fanart.tv)</li> <li>03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.</li> </ul>"},{"location":"images/docker-projectsend/","title":"projectsend","text":""},{"location":"images/docker-projectsend/#linuxserverprojectsend","title":"linuxserver/projectsend","text":"<p>Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.</p> <p></p>"},{"location":"images/docker-projectsend/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/projectsend:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-projectsend/#application-setup","title":"Application Setup","text":"<p>IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag <code>linuxserver/projectsend:r1053-ls27</code></p> <p>Requires a user and database in either mysql or mariadb.</p> <p>To use translations, follow the instructions here. The necessary paths are symlinked under <code>/config/translations</code> (note that the \"templates\" paths don't need <code>lang</code> subdirectories).</p> <p>More info at ProjectSend.</p>"},{"location":"images/docker-projectsend/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-projectsend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n projectsend:\n image: lscr.io/linuxserver/projectsend:latest\n container_name: projectsend\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MAX_UPLOAD=5000\n volumes:\n - /path/to/projectsend/config:/config\n - /path/to/data:/data\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-projectsend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=projectsend \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MAX_UPLOAD=5000 \\\n -p 80:80 \\\n -v /path/to/projectsend/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/projectsend:latest\n</code></pre>"},{"location":"images/docker-projectsend/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-projectsend/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> WebUI"},{"location":"images/docker-projectsend/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MAX_UPLOAD=5000</code> To set maximum upload size (in MB), default if unset is 5000."},{"location":"images/docker-projectsend/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Where to store files to share."},{"location":"images/docker-projectsend/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-projectsend/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-projectsend/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-projectsend/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-projectsend/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-projectsend/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it projectsend /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f projectsend\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' projectsend\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/projectsend:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-projectsend/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-projectsend/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull projectsend\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d projectsend\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-projectsend/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/projectsend:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop projectsend\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm projectsend\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-projectsend/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-projectsend/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-projectsend.git\ncd docker-projectsend\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/projectsend:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-projectsend/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>08.03.23: - Rebasing to alpine 3.17 and upgrading to s6v3.</li> <li>23.08.22: - Add translation support</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>24.06.21: - Rebasing to alpine 3.14, switch to nginx</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.02.19: - Add pipeline logic and multi arch.</li> <li>11.06.17: - Fetch version from github.</li> <li>09.12.17: - Rebase to alpine 3.7.</li> <li>13.06.17: - Initial Release.</li> </ul>"},{"location":"images/docker-prowlarr/","title":"prowlarr","text":""},{"location":"images/docker-prowlarr/#linuxserverprowlarr","title":"linuxserver/prowlarr","text":"<p>Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).</p> <p></p>"},{"location":"images/docker-prowlarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/prowlarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-prowlarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Prowlarr stable releases develop \u2705 Prowlarr releases from their develop branch nightly \u2705 Prowlarr releases from their nightly branch"},{"location":"images/docker-prowlarr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:9696</code>, for more information check out Prowlarr.</p> <p>Setup info can be found here.</p>"},{"location":"images/docker-prowlarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-prowlarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n prowlarr:\n image: lscr.io/linuxserver/prowlarr:latest\n container_name: prowlarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/prowlarr/data:/config\n ports:\n - 9696:9696\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-prowlarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=prowlarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 9696:9696 \\\n -v /path/to/prowlarr/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/prowlarr:latest\n</code></pre>"},{"location":"images/docker-prowlarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-prowlarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9696</code> The port for the Prowlarr web UI"},{"location":"images/docker-prowlarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-prowlarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and Prowlarr configs"},{"location":"images/docker-prowlarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-prowlarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-prowlarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-prowlarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-prowlarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-prowlarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it prowlarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f prowlarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' prowlarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/prowlarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-prowlarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-prowlarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull prowlarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d prowlarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-prowlarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/prowlarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop prowlarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm prowlarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-prowlarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-prowlarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-prowlarr.git\ncd docker-prowlarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/prowlarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-prowlarr/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>06.06.23: - Rebase master to Alpine 3.18, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>03.01.23: - Publish stable release.</li> <li>20.02.22: - Rebase develop branch to Alpine.</li> <li>06.06.21: - Initial realease.</li> </ul>"},{"location":"images/docker-pwndrop/","title":"pwndrop","text":""},{"location":"images/docker-pwndrop/#linuxserverpwndrop","title":"linuxserver/pwndrop","text":"<p>Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.</p> <p></p>"},{"location":"images/docker-pwndrop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pwndrop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pwndrop/#application-setup","title":"Application Setup","text":"<p>Access the web gui at <code>http://&lt;your-ip&gt;:8080/pwndrop</code> (replace <code>/pwndrop</code> with your <code>SECRET_PATH</code> if you set one).</p>"},{"location":"images/docker-pwndrop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pwndrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pwndrop:\n image: lscr.io/linuxserver/pwndrop:latest\n container_name: pwndrop\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SECRET_PATH=/pwndrop #optional\n volumes:\n - /path/to/pwndrop/appdata:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pwndrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pwndrop \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SECRET_PATH=/pwndrop `#optional` \\\n -p 8080:8080 \\\n -v /path/to/pwndrop/appdata:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pwndrop:latest\n</code></pre>"},{"location":"images/docker-pwndrop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pwndrop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> web gui"},{"location":"images/docker-pwndrop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SECRET_PATH=/pwndrop</code> Secret path for admin access. Defaults to <code>/pwndrop</code>. This parameter only takes effect during initial install; it can later be changed in the web gui."},{"location":"images/docker-pwndrop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration and data."},{"location":"images/docker-pwndrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pwndrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pwndrop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pwndrop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pwndrop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pwndrop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pwndrop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pwndrop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pwndrop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pwndrop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pwndrop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pwndrop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pwndrop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pwndrop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pwndrop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pwndrop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pwndrop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pwndrop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pwndrop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pwndrop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pwndrop.git\ncd docker-pwndrop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pwndrop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pwndrop/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>07.08.23: - Rebase to Alpine 3.18.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>19.09.22: - Rebasing to alpine 3.15.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>17.04.20: - Initial Release.</li> </ul>"},{"location":"images/docker-pydio-cells/","title":"pydio-cells","text":""},{"location":"images/docker-pydio-cells/#linuxserverpydio-cells","title":"linuxserver/pydio-cells","text":"<p>Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.</p> <p></p>"},{"location":"images/docker-pydio-cells/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pydio-cells:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pydio-cells/#application-setup","title":"Application Setup","text":"<p>You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended. </p> <p>Then access the web gui setup wizard at <code>https://SERVER_IP:8080</code> if accessing locally (must set <code>SERVER_IP</code> env var), or at <code>https://pydio-cells.domain.com</code> if reverse proxying.</p>"},{"location":"images/docker-pydio-cells/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-pydio-cells/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pydio-cells/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pydio-cells:\n image: lscr.io/linuxserver/pydio-cells:latest\n container_name: pydio-cells\n hostname: pydio-cells\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - EXTERNALURL=yourdomain.url\n - SERVER_IP=0.0.0.0 #optional\n volumes:\n - /path/to/appdata/config:/config\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pydio-cells/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pydio-cells \\\n --hostname=pydio-cells \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e EXTERNALURL=yourdomain.url \\\n -e SERVER_IP=0.0.0.0 `#optional` \\\n -p 8080:8080 \\\n -v /path/to/appdata/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pydio-cells:latest\n</code></pre>"},{"location":"images/docker-pydio-cells/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pydio-cells/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> Http port"},{"location":"images/docker-pydio-cells/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>EXTERNALURL=yourdomain.url</code> The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT). <code>SERVER_IP=0.0.0.0</code> Enter the LAN IP of the docker server. Required for local access by IP, added to self signed cert as SAN (not required if accessing only through reverse proxy)."},{"location":"images/docker-pydio-cells/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> All the config files reside here."},{"location":"images/docker-pydio-cells/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--hostname=</code> Pydio Cells uses the hostname to verify local files. This setting is required and should not be changed after it has been set."},{"location":"images/docker-pydio-cells/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pydio-cells/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pydio-cells/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pydio-cells/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pydio-cells/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pydio-cells /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pydio-cells\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio-cells\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio-cells:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pydio-cells/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pydio-cells/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pydio-cells\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pydio-cells\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pydio-cells/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pydio-cells:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pydio-cells\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pydio-cells\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pydio-cells/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pydio-cells/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pydio-cells.git\ncd docker-pydio-cells\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pydio-cells:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pydio-cells/#versions","title":"Versions","text":"<ul> <li>14.03.24: - Rebasing to alpine 3.19. Grpc port defaults to 8080.</li> <li>11.10.23: - Rebasing to alpine 3.18. Build on alpine edge with Go 1.21.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility.</li> <li>19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4.</li> <li>19.09.22: - Rebasing to alpine 3.15.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add <code>SERVER_IP</code> var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync.</li> <li>17.04.20: - Update compile options, previous release was broken for new installs.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>12.12.19: - Initial Release</li> </ul>"},{"location":"images/docker-pyload-ng/","title":"pyload-ng","text":""},{"location":"images/docker-pyload-ng/#linuxserverpyload-ng","title":"linuxserver/pyload-ng","text":"<p>pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.</p> <p></p>"},{"location":"images/docker-pyload-ng/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pyload-ng:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pyload-ng/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases from pyLoad Next develop \u2705 Releases from pyload Next develop branch"},{"location":"images/docker-pyload-ng/#application-setup","title":"Application Setup","text":"<p>Access the web interface at <code>http://your-ip:8000</code> the default login is: username - pyload password - pyload</p> <p>For general usage please see the pyLoad wiki here .</p>"},{"location":"images/docker-pyload-ng/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pyload-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pyload-ng:\n image: lscr.io/linuxserver/pyload-ng:latest\n container_name: pyload-ng\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/pyload-ng/config:/config\n - /path/to/downloads:/downloads\n ports:\n - 8000:8000\n - 9666:9666 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pyload-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pyload-ng \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8000:8000 \\\n -p 9666:9666 `#optional` \\\n -v /path/to/pyload-ng/config:/config \\\n -v /path/to/downloads:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pyload-ng:latest\n</code></pre>"},{"location":"images/docker-pyload-ng/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pyload-ng/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8000</code> Allows HTTP access to the application <code>9666</code> Click'n'Load port."},{"location":"images/docker-pyload-ng/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-pyload-ng/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/downloads</code> Destination of pyLoad downloads"},{"location":"images/docker-pyload-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pyload-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pyload-ng/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pyload-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pyload-ng/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pyload-ng/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pyload-ng /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pyload-ng\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload-ng\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload-ng:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pyload-ng/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pyload-ng/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pyload-ng\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pyload-ng\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pyload-ng/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pyload-ng:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pyload-ng\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pyload-ng\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pyload-ng/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pyload-ng/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pyload-ng.git\ncd docker-pyload-ng\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pyload-ng:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pyload-ng/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>08.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>01.06.23: - Replace p7zip with 7zip, add unrar.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>02.02.22: - Rebase master to alpine 3.17.</li> <li>02.02.22: - Add ffmpeg for the Youtube plugin.</li> <li>24.01.22: - Replace unrar with p7zip.</li> <li>24.01.22: - Initial release.</li> </ul>"},{"location":"images/docker-pylon/","title":"pylon","text":""},{"location":"images/docker-pylon/#linuxserverpylon","title":"linuxserver/pylon","text":"<p>Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.</p> <p></p>"},{"location":"images/docker-pylon/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/pylon:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-pylon/#application-setup","title":"Application Setup","text":"<p>Access the webui at http://your-ip:3131, more information here.</p>"},{"location":"images/docker-pylon/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-pylon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n pylon:\n image: lscr.io/linuxserver/pylon:latest\n container_name: pylon\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - GITURL=https://github.com/linuxserver/docker-pylon.git #optional\n - PYUSER=myuser #optional\n - PYPASS=mypass #optional\n volumes:\n - /path/to/your/code:/code #optional\n ports:\n - 3131:3131\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-pylon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=pylon \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e GITURL=https://github.com/linuxserver/docker-pylon.git `#optional` \\\n -e PYUSER=myuser `#optional` \\\n -e PYPASS=mypass `#optional` \\\n -p 3131:3131 \\\n -v /path/to/your/code:/code `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/pylon:latest\n</code></pre>"},{"location":"images/docker-pylon/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-pylon/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3131</code> The port for the Pylon web interface"},{"location":"images/docker-pylon/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>GITURL=https://github.com/linuxserver/docker-pylon.git</code> Specify a git repo to checkout on first startup <code>PYUSER=myuser</code> Specify a basic auth user. <code>PYPASS=mypass</code> Specify a basic auth password."},{"location":"images/docker-pylon/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/code</code> Optionally if you want the bind mount your own code and have changes survive container upgrades."},{"location":"images/docker-pylon/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pylon/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-pylon/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-pylon/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-pylon/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-pylon/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it pylon /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f pylon\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pylon\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pylon:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-pylon/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-pylon/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull pylon\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d pylon\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pylon/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/pylon:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop pylon\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm pylon\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-pylon/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-pylon/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-pylon.git\ncd docker-pylon\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/pylon:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-pylon/#versions","title":"Versions","text":"<ul> <li>12.07.23: - Rebase to Alpine 3.18</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>19.01.22: - Rebasing to alpine 3.15.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>19.09.19: - Initial Release.</li> </ul>"},{"location":"images/docker-python/","title":"python","text":"<p>The LinuxServer.io team brings you another container release featuring:</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings (PGID, PUID)</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>regular security updates</li> </ul> <p>Find us at:</p> <ul> <li>Blog - all the things you can do with our containers including How-To guides, opinions and much more!</li> <li>Discord - realtime support / chat with the community and the team.</li> <li>Discourse - post on our community forum.</li> <li>Fleet - an online web interface which displays all of our maintained images.</li> <li>GitHub - view the source for all of our repositories.</li> <li>Open Collective - please consider helping us by either donating or contributing to our budget</li> </ul>"},{"location":"images/docker-python/#linuxserverpython","title":"linuxserver/python","text":""},{"location":"images/docker-python/#usage","title":"Usage","text":"<p>This image only contains the compiled python files for Alpine, and is meant to be ingested by other images during build time. It is not for public consumption.</p>"},{"location":"images/docker-python/#versions","title":"Versions","text":"<ul> <li>07.03.24: - Initial release.</li> </ul>"},{"location":"images/docker-qbittorrent/","title":"qbittorrent","text":""},{"location":"images/docker-qbittorrent/#linuxserverqbittorrent","title":"linuxserver/qbittorrent","text":"<p>The Qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.</p> <p></p>"},{"location":"images/docker-qbittorrent/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/qbittorrent:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-qbittorrent/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable qbittorrent releases libtorrentv1 \u2705 Static qbittorrent builds using libtorrent v1"},{"location":"images/docker-qbittorrent/#application-setup","title":"Application Setup","text":"<p>The web UI is at <code>&lt;your-ip&gt;:8080</code> and a temporary password for the <code>admin</code> user will be printed to the container log on startup.</p> <p>You must then change username/password in the web UI section of settings. If you do not change the password a new one will be generated every time the container starts.</p> <p>If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method</p>"},{"location":"images/docker-qbittorrent/#webui_port-variable","title":"WEBUI_PORT variable","text":"<p>Due to issues with CSRF and port mapping, should you require to alter the port for the web UI you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.</p> <p>For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090</p>"},{"location":"images/docker-qbittorrent/#torrenting_port","title":"TORRENTING_PORT","text":"<p>A bittorrent client can be an active or a passive node. Running your client as an active node has the advantage of being able to connect to both active and passive peers, and can potentially increase the number of incoming connections. This requires an open port on the host machine which might differ from container's internal one.</p> <p>Similarly to the WEBUI_PORT, to set the port to 6887 you need to pass -p 6887:6887, -p 6887:6887/udp and -e TORRENTING_PORT=6887 arguments to Docker.</p>"},{"location":"images/docker-qbittorrent/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-qbittorrent/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n qbittorrent:\n image: lscr.io/linuxserver/qbittorrent:latest\n container_name: qbittorrent\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - WEBUI_PORT=8080\n - TORRENTING_PORT=6881\n volumes:\n - /path/to/appdata/config:/config\n - /path/to/downloads:/downloads\n ports:\n - 8080:8080\n - 6881:6881\n - 6881:6881/udp\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-qbittorrent/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=qbittorrent \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e WEBUI_PORT=8080 \\\n -e TORRENTING_PORT=6881 \\\n -p 8080:8080 \\\n -p 6881:6881 \\\n -p 6881:6881/udp \\\n -v /path/to/appdata/config:/config \\\n -v /path/to/downloads:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/qbittorrent:latest\n</code></pre>"},{"location":"images/docker-qbittorrent/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-qbittorrent/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> WebUI <code>6881</code> tcp connection port <code>6881/udp</code> udp connection port"},{"location":"images/docker-qbittorrent/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>WEBUI_PORT=8080</code> for changing the port of the web UI, see below for explanation <code>TORRENTING_PORT=6881</code> for changing the port of tcp/udp connection, see below for explanation"},{"location":"images/docker-qbittorrent/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/downloads</code> Location of downloads on disk."},{"location":"images/docker-qbittorrent/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-qbittorrent/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-qbittorrent/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-qbittorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-qbittorrent/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-qbittorrent/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it qbittorrent /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f qbittorrent\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qbittorrent\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qbittorrent:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-qbittorrent/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-qbittorrent/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull qbittorrent\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d qbittorrent\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-qbittorrent/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/qbittorrent:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop qbittorrent\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm qbittorrent\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-qbittorrent/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-qbittorrent/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-qbittorrent.git\ncd docker-qbittorrent\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/qbittorrent:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-qbittorrent/#versions","title":"Versions","text":"<ul> <li>14.02.24: - Only set/override torrenting port if the optional env var is set.</li> <li>14.02.24: - Add torrenting port support.</li> <li>31.01.24: - Remove obsolete compat packages.</li> <li>25.12.23: - Only pull stable releases of qbittorrent-cli.</li> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>17.06.23: - Deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>10.06.23: - Bump unrar to 6.2.8.</li> <li>23.02.23: - Add qt6-qtbase-sqlite to support SQLite database for resume files.</li> <li>29.11.22: - Add openssl1.1-compat for qbittorrent-cli.</li> <li>31.10.22: - Add libtorrentv1 branch.</li> <li>31.08.22: - Rebase to Alpine Edge again to follow latest releases.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>16.06.22: - Rebase to Alpine 3.16 from edge.</li> <li>25.05.22: - Fetch qbitorrent-cli from upstream repo.</li> <li>02.03.22: - Add unrar, 7zip, and qbitorrent-cli.</li> <li>01.03.22: - Add python for search plugin support.</li> <li>23.02.22: - Rebase to Alpine Edge, install from Alpine repos.</li> <li>19.02.22: - Add jq to build-stage</li> <li>07.01.22: - Rebase to Alpine, build from source.</li> <li>06.01.22: - Deprecate unstable branch.</li> <li>10.02.21: - Rebase to focal.</li> <li>20.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>12.11.20: - Stop creating /config/data directory on startup</li> <li>03.04.20: - Fix adding search engine plugin</li> <li>02.08.19: - Add qbitorrent-cli for processing scripts.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic.</li> <li>25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3.</li> <li>14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2.</li> <li>08.06.18: - Bump qbitorrent to 4.1.1.</li> <li>26.04.18: - Bump libtorrent to 1.1.7.</li> <li>02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6.</li> <li>02.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>19.12.17: - Update to v4.0.3.</li> <li>09.02.17: - Rebase to alpine 3.7</li> <li>01.12.17: - Update to v4.0.2.</li> <li>27.11.17: - Update to v4 and use cpu_core routine to speed up builds.</li> <li>16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui.</li> <li>01.08.17: - Initial Release.</li> <li>12.02.18: - Initial Release.</li> </ul>"},{"location":"images/docker-qdirstat/","title":"qdirstat","text":""},{"location":"images/docker-qdirstat/#linuxserverqdirstat","title":"linuxserver/qdirstat","text":"<p>QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.</p> <p></p>"},{"location":"images/docker-qdirstat/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/qdirstat:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-qdirstat/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-qdirstat/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-qdirstat/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-qdirstat/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-qdirstat/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-qdirstat/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-qdirstat/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-qdirstat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n qdirstat:\n image: lscr.io/linuxserver/qdirstat:latest\n container_name: qdirstat\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n - /path/to/data:/data\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-qdirstat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=qdirstat \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/qdirstat:latest\n</code></pre>"},{"location":"images/docker-qdirstat/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-qdirstat/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> QdirStat desktop gui. <code>3001</code> QdirStat desktop gui HTTPS."},{"location":"images/docker-qdirstat/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-qdirstat/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores qdirstat settings and scans. <code>/data</code> Data you want to analyze disk usage information of."},{"location":"images/docker-qdirstat/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-qdirstat/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-qdirstat/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-qdirstat/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-qdirstat/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-qdirstat/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it qdirstat /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f qdirstat\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qdirstat\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qdirstat:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-qdirstat/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-qdirstat/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull qdirstat\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d qdirstat\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-qdirstat/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/qdirstat:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop qdirstat\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm qdirstat\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-qdirstat/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-qdirstat/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-qdirstat.git\ncd docker-qdirstat\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/qdirstat:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-qdirstat/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>03.04.23: - Rebase to KasmVNC base image. Deprecate armhf build as the new base does not support it.</li> <li>16.12.22: - Rebase to Jammy.</li> <li>06.04.22: - Add xfce terminal.</li> <li>13.01.22: - Compile from source.</li> <li>11.01.22: - Initial release.</li> </ul>"},{"location":"images/docker-quassel-core/","title":"quassel-core","text":""},{"location":"images/docker-quassel-core/#linuxserverquassel-core","title":"linuxserver/quassel-core","text":"<p>Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.</p> <p>This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time.</p> <p></p>"},{"location":"images/docker-quassel-core/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/quassel-core:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-quassel-core/#application-setup","title":"Application Setup","text":"<p>Quassel wiki: quassel</p> <p>A great place to host a quassel instance is a VPS, such as DigitalOcean. For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim).</p> <p>Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your <code>docker run</code> command default: 4242. Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press <code>Save &amp; Connect</code>.</p> <p>You're now connected to IRC. Let's add you to our IRC <code>#linuxserver.io</code> room on Freenode. Click 'File' &gt; 'Networks' &gt; 'Configure Networks' &gt; 'Add' (under Networks section, not Servers) &gt; 'Use preset' &gt; Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click <code>#join</code> and enter <code>#linuxserver.io</code>. That's it, you're done.</p>"},{"location":"images/docker-quassel-core/#stateless-usage","title":"Stateless usage","text":"<p>To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the <code>--config-from-environment</code> RUN_OPTS environment setting.</p> Env Usage DB_BACKEND <code>SQLite</code> or <code>PostgreSQL</code> DB_PGSQL_USERNAME PostgreSQL User DB_PGSQL_PASSWORD PostgreSQL Password DB_PGSQL_HOSTNAME PostgreSQL Host DB_PGSQL_PORT PostgreSQL Port AUTH_AUTHENTICATOR <code>Database</code> or <code>LDAP</code> AUTH_LDAP_HOSTNAME LDAP Host AUTH_LDAP_PORT LDAP Port AUTH_LDAP_BIND_DN LDAP Bind Domain AUTH_LDAP_BIND_PASSWORD LDAP Password AUTH_LDAP_FILTER LDAP Authentication Filters AUTH_LDAP_UID_ATTRIBUTE LDAP UID <p>Additionally you have RUN_OPTS that can be used to customize pathing and behavior.</p> Option Example --strict-ident strictly bool <code>--strict-ident</code> --ident-daemon strictly bool <code>--ident-daemon</code> --ident-port <code>--ident-port \"10113\"</code> --ident-listen <code>--ident-listen \"::,0.0.0.0\"</code> --ssl-cert <code>--ssl-cert /config/keys/cert.crt</code> --ssl-key <code>--ssl-key /config/keys/cert.key</code> --require-ssl strictly bool <code>--require-ssl</code> <p>Minimal example with SQLite:</p> <pre><code>docker create \\\n --name=quassel-core \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Europe/London \\\n -e RUN_OPTS='--config-from-environment' \\\n -e DB_BACKEND=SQLite \\\n -e AUTH_AUTHENTICATOR=Database \\\n -p 4242:4242 \\\n -v &lt;path to data&gt;:/config \\\n --restart unless-stopped \\\n linuxserver/quassel-core\n</code></pre>"},{"location":"images/docker-quassel-core/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-quassel-core/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n quassel-core:\n image: lscr.io/linuxserver/quassel-core:latest\n container_name: quassel-core\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - RUN_OPTS=--config-from-environment #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 4242:4242\n - 113:10113 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-quassel-core/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=quassel-core \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e RUN_OPTS=--config-from-environment `#optional` \\\n -p 4242:4242 \\\n -p 113:10113 `#optional` \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/quassel-core:latest\n</code></pre>"},{"location":"images/docker-quassel-core/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-quassel-core/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>4242</code> The port quassel-core listens for connections on. <code>10113</code> Optional Ident Port"},{"location":"images/docker-quassel-core/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>RUN_OPTS=--config-from-environment</code> Custom CLI options for Quassel"},{"location":"images/docker-quassel-core/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and quassel-core configuration storage."},{"location":"images/docker-quassel-core/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-quassel-core/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-quassel-core/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-quassel-core/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-quassel-core/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-quassel-core/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it quassel-core /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f quassel-core\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-core\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-core:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-core/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-quassel-core/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull quassel-core\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d quassel-core\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-core/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/quassel-core:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop quassel-core\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm quassel-core\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-core/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-quassel-core/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-quassel-core.git\ncd docker-quassel-core\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/quassel-core:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-quassel-core/#versions","title":"Versions","text":"<ul> <li>10.11.23: - Rebase to Alpine 3.18.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14.</li> <li>07.08.21: - Fixing incorrect database password variable operator.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>20.03.19: - Make stateless operation an option, with input from one of the quassel team.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel<code>0.13.0</code> See here..</li> <li>30.07.18: - Rebase to alpine:3.8 and use buildstage.</li> <li>03.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>09.12.17: - Rebase to alpine:3.7.</li> <li>26.11.17: - Use cpu core counting routine to speed up build time.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>27.05.17: - Rebase to alpine:3.6.</li> <li>13.05.17: - Switch to git source.</li> <li>28.12.16: - Rebase to alpine:3.5.</li> <li>23.11.16: - Rebase to alpine:edge.</li> <li>23.09.16: - Use QT5 dependencies (thanks bauerj).</li> <li>10.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>10.08.16: - Rebase to xenial.</li> <li>14.10.15: - Removed the webui, turned out to be to unstable for most usecases.</li> <li>01.09.15: - Fixed mistake in README.</li> <li>30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface.</li> <li>06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.</li> </ul>"},{"location":"images/docker-quassel-web/","title":"quassel-web","text":""},{"location":"images/docker-quassel-web/#linuxserverquassel-web","title":"linuxserver/quassel-web","text":"<p>Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.</p> <p></p>"},{"location":"images/docker-quassel-web/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/quassel-web:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-quassel-web/#application-setup","title":"Application Setup","text":"<p>By default this container webui will be available on <code>https://$SERVER_IP:64443</code>. To setup this container you can either use the environment variables we recommend or manually setup the configuration file by leaving out the <code>QUASSEL_CORE</code> environment variable among others. The configuration file using this method can be found at: <pre><code>/config/settings-user.js\n</code></pre></p>"},{"location":"images/docker-quassel-web/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-quassel-web/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-quassel-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n quassel-web:\n image: lscr.io/linuxserver/quassel-web:latest\n container_name: quassel-web\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - QUASSEL_CORE=192.168.1.10 #optional\n - QUASSEL_PORT=4242 #optional\n - QUASSEL_HTTPS= #optional\n - URL_BASE=/quassel #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 64080:64080 #optional\n - 64443:64443 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-quassel-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=quassel-web \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e QUASSEL_CORE=192.168.1.10 `#optional` \\\n -e QUASSEL_PORT=4242 `#optional` \\\n -e QUASSEL_HTTPS= `#optional` \\\n -e URL_BASE=/quassel `#optional` \\\n -p 64080:64080 `#optional` \\\n -p 64443:64443 `#optional` \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/quassel-web:latest\n</code></pre>"},{"location":"images/docker-quassel-web/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-quassel-web/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>64080</code> Quassel-web http webui <code>64443</code> Quassel-web https webui"},{"location":"images/docker-quassel-web/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>QUASSEL_CORE=192.168.1.10</code> specify the URL or IP address of your Quassel Core instance <code>QUASSEL_PORT=4242</code> specify the port of your Quassel Core instance <code>QUASSEL_HTTPS=</code> Set to <code>true</code> to have Quassel web serve over https on port 64443 instead of http on port 64080. <code>URL_BASE=/quassel</code> Specify a url-base in reverse proxy setups ie. <code>/quassel</code>"},{"location":"images/docker-quassel-web/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> this will store config on the docker host"},{"location":"images/docker-quassel-web/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-quassel-web/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-quassel-web/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-quassel-web/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-quassel-web/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-quassel-web/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it quassel-web /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f quassel-web\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-web\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-web:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-web/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-quassel-web/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull quassel-web\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d quassel-web\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-web/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/quassel-web:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop quassel-web\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm quassel-web\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-quassel-web/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-quassel-web/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-quassel-web.git\ncd docker-quassel-web\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/quassel-web:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-quassel-web/#versions","title":"Versions","text":"<ul> <li>10.11.23: - Rebase to Alpine 3.18. Rename settings-user.js to .cjs to match upstream.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebasing to Alpine 3.17, migrate to s6v3.</li> <li>12.02.22: - Rebasing to alpine 3.15.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>18.05.19: - Reconfigure environmental variable setup.</li> <li>28.04.19: - Initial Release.</li> </ul>"},{"location":"images/docker-radarr/","title":"radarr","text":""},{"location":"images/docker-radarr/#linuxserverradarr","title":"linuxserver/radarr","text":"<p>Radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato.</p> <p></p>"},{"location":"images/docker-radarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/radarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-radarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Radarr releases develop \u2705 Radarr releases from their develop branch nightly \u2705 Radarr releases from their nightly branch"},{"location":"images/docker-radarr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:7878</code>, for more information check out Radarr.</p>"},{"location":"images/docker-radarr/#media-folders","title":"Media folders","text":"<p>We have set <code>/movies</code> and <code>/downloads</code> as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-radarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-radarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n radarr:\n image: lscr.io/linuxserver/radarr:latest\n container_name: radarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/radarr/data:/config\n - /path/to/movies:/movies #optional\n - /path/to/download-client-downloads:/downloads #optional\n ports:\n - 7878:7878\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-radarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=radarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 7878:7878 \\\n -v /path/to/radarr/data:/config \\\n -v /path/to/movies:/movies `#optional` \\\n -v /path/to/download-client-downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/radarr:latest\n</code></pre>"},{"location":"images/docker-radarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-radarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>7878</code> The port for the Radarr Web UI"},{"location":"images/docker-radarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-radarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and Radarr configs <code>/movies</code> Location of Movie library on disk (See note in Application setup) <code>/downloads</code> Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-radarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-radarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-radarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-radarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-radarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-radarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it radarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f radarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' radarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/radarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-radarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-radarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull radarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d radarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-radarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/radarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop radarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm radarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-radarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-radarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-radarr.git\ncd docker-radarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/radarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-radarr/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>06.06.23: - Rebase master to Alpine 3.18, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>17.01.23: - Rebase master branch to Alpine 3.17, migrate to s6v3.</li> <li>06.06.22: - Rebase master branch to Alpine 3.15.</li> <li>20.02.22: - Rebase develop branch to Alpine.</li> <li>04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch.</li> <li>27.12.21: - Add nightly-alpine branch.</li> <li>17.10.21: - Remove <code>UMASK_SET</code>.</li> <li>08.05.21: - Make the paths clearer to the user</li> <li>17.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>11.30.20: - Publish <code>develop</code> tag.</li> <li>11.28.20: - Switch to v3 .NET CORE builds (no more mono, <code>5.14</code> tag is deprecated). Rebase to Focal (for issues on arm32v7, see here).</li> <li>05.04.20: - Move app to /app.</li> <li>01.08.19: - Rebase to Linuxserver LTS mono version.</li> <li>13.06.19: - Add env variable for setting umask.</li> <li>10.05.19: - Rebase to Bionic.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>09.09.18: - Add pipeline build process.</li> <li>24.02.18: - Add nightly branch.</li> <li>06.02.18: - Radarr repo changed owner.</li> <li>15.12.17: - Fix continuation lines.</li> <li>17.04.17: - Switch to using inhouse mono baseimage, adds python also.</li> <li>13.04.17: - Switch to official mono repository.</li> <li>10.01.17: - Initial Release.</li> </ul>"},{"location":"images/docker-raneto/","title":"raneto","text":""},{"location":"images/docker-raneto/#linuxserverraneto","title":"linuxserver/raneto","text":"<p>Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.</p> <p></p>"},{"location":"images/docker-raneto/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/raneto:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-raneto/#application-setup","title":"Application Setup","text":"<p>Access the webui at http://:3000 <p>The default username and password is admin/password</p> <p>This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application:</p> <ul> <li>/config/config.default.js - Main configuration file to setup your user, site name, etc.</li> <li>/config/content - All of your Markdown files go here more info.</li> <li>/config/images - This folder will serve content on http://:3000/images/.png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting."},{"location":"images/docker-raneto/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-raneto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n raneto:\n image: lscr.io/linuxserver/raneto:latest\n container_name: raneto\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/raneto/data:/config\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-raneto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=raneto \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -v /path/to/raneto/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/raneto:latest\n</code></pre>"},{"location":"images/docker-raneto/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-raneto/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> The port for the Raneto web interface"},{"location":"images/docker-raneto/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-raneto/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Raneto config and Markdown files"},{"location":"images/docker-raneto/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-raneto/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-raneto/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-raneto/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-raneto/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-raneto/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it raneto /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f raneto\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' raneto\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/raneto:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-raneto/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-raneto/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull raneto\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d raneto\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-raneto/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/raneto:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop raneto\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm raneto\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-raneto/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-raneto/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-raneto.git\ncd docker-raneto\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/raneto:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-raneto/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>21.04.23: - Fix for upstream changes.</li> <li>18.01.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>10.08.22: - Rebasing to alpine 3.15.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>02.06.20: - Rebasing to alpine 3.11.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>01.06.19: - Initial Release.</li> </ul>"},{"location":"images/docker-rdesktop/","title":"rdesktop","text":""},{"location":"images/docker-rdesktop/#linuxserverrdesktop","title":"linuxserver/rdesktop","text":"<p>Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.</p> <p></p>"},{"location":"images/docker-rdesktop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/rdesktop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-rdesktop/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch"},{"location":"images/docker-rdesktop/#application-setup","title":"Application Setup","text":"<p>The Default USERNAME and PASSWORD is: abc/abc</p> <p>Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program</p> <p>You will need a Remote Desktop client to access this container Wikipedia List, by default it listens on 3389, but you can change that port to whatever you wish on the host side IE <code>3390:3389</code>. The first thing you should do when you login to the container is to change the abc users password by issuing the <code>passwd</code> command.</p> <p>Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the <code>--security-opt seccomp=unconfined</code> setting to allow these syscalls or try podman as they have updated their codebase to support them</p> <p>If you ever lose your password you can always reset it by execing into the container as root: <pre><code>docker exec -it rdesktop passwd abc\n</code></pre> By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a <code>startwm.sh</code> executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.</p>"},{"location":"images/docker-rdesktop/#hardware-acceleration-ubuntu-container-only","title":"Hardware Acceleration (Ubuntu Container Only)","text":"<p>Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.</p>"},{"location":"images/docker-rdesktop/#intelatiamd","title":"Intel/ATI/AMD","text":"<p>To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. <pre><code>--device=/dev/dri:/dev/dri\n</code></pre> We will automatically ensure the abc user inside of the container has the proper permissions to access this device.</p>"},{"location":"images/docker-rdesktop/#nvidia","title":"Nvidia","text":"<p>Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker</p> <p>We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime <code>--runtime=nvidia</code> and add an environment variable <code>-e NVIDIA_VISIBLE_DEVICES=all</code> (can also be set to a specific gpu's UUID, this can be discovered by running <code>nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv</code> ). NVIDIA automatically mounts the GPU and drivers from your host into the container.</p>"},{"location":"images/docker-rdesktop/#arm-devices","title":"Arm Devices","text":"<p>Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable <code>dtoverlay=vc4-fkms-v3d</code> in your usercfg.txt.</p>"},{"location":"images/docker-rdesktop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-rdesktop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n rdesktop:\n image: lscr.io/linuxserver/rdesktop:latest\n container_name: rdesktop\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock #optional\n - /path/to/data:/config #optional\n ports:\n - 3389:3389\n devices:\n - /dev/dri:/dev/dri #optional\n shm_size: \"1gb\" #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-rdesktop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=rdesktop \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3389:3389 \\\n -v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n -v /path/to/data:/config `#optional` \\\n --device /dev/dri:/dev/dri `#optional` \\\n --shm-size=\"1gb\" `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/rdesktop:latest\n</code></pre>"},{"location":"images/docker-rdesktop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-rdesktop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3389</code> RDP access port"},{"location":"images/docker-rdesktop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-rdesktop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/var/run/docker.sock</code> Docker Socket on the system, if you want to use Docker in the container <code>/config</code> abc users home directory"},{"location":"images/docker-rdesktop/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Add this for GL support (Linux hosts only)"},{"location":"images/docker-rdesktop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> We set this to 1 gig to prevent modern web browsers from crashing <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker"},{"location":"images/docker-rdesktop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-rdesktop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-rdesktop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-rdesktop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-rdesktop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it rdesktop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f rdesktop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rdesktop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rdesktop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-rdesktop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-rdesktop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull rdesktop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d rdesktop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-rdesktop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/rdesktop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop rdesktop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm rdesktop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-rdesktop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-rdesktop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-rdesktop.git\ncd docker-rdesktop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/rdesktop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-rdesktop/#versions","title":"Versions","text":"<ul> <li>17.01.24: - Sync webtop logic changes rebase to Alpine 3.19 and Fedora 39.</li> <li>18.05.23: - Rebase all Alpine images to 3.18, deprecate armhf.</li> <li>27.10.22: - Rebase all Ubuntu images to Jammy 22.04.</li> <li>26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3.</li> <li>05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel.</li> <li>05.05.21: - Reduce default packages to their flavor specific basics.</li> <li>05.04.21: - Add Alpine flavor.</li> <li>06.04.20: - Start PulseAudio in images to support audio</li> <li>28.02.20: - Initial Releases</li> </ul>"},{"location":"images/docker-readarr/","title":"readarr","text":""},{"location":"images/docker-readarr/#linuxserverreadarr","title":"linuxserver/readarr","text":"<p>Readarr - Book Manager and Automation (Sonarr for Ebooks)</p> <p></p>"},{"location":"images/docker-readarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/readarr:develop</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-readarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u274c develop \u2705 Readarr releases from their develop branch nightly \u2705 Readarr releases from their nightly branch"},{"location":"images/docker-readarr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8787</code>, for more information check out Readarr.</p>"},{"location":"images/docker-readarr/#media-folders","title":"Media folders","text":"<p>We have set <code>/books</code> and <code>/downloads</code> as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-readarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-readarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n readarr:\n image: lscr.io/linuxserver/readarr:develop\n container_name: readarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /path/to/books:/books #optional\n - /path/to/downloadclient-downloads:/downloads #optional\n ports:\n - 8787:8787\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-readarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=readarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8787:8787 \\\n -v /path/to/data:/config \\\n -v /path/to/books:/books `#optional` \\\n -v /path/to/downloadclient-downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/readarr:develop\n</code></pre>"},{"location":"images/docker-readarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-readarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8787</code> The port for the Readarr webinterface"},{"location":"images/docker-readarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-readarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and Readarr configs <code>/books</code> Location of Book library on disk (See note in Application setup) <code>/downloads</code> Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-readarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-readarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-readarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-readarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-readarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-readarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it readarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f readarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' readarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/readarr:develop\n</code></pre> </li> </ul>"},{"location":"images/docker-readarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-readarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull readarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d readarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-readarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/readarr:develop\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop readarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm readarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-readarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-readarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-readarr.git\ncd docker-readarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/readarr:develop .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-remmina/","title":"remmina","text":""},{"location":"images/docker-remmina/#linuxserverremmina","title":"linuxserver/remmina","text":"<p>Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.</p> <p></p>"},{"location":"images/docker-remmina/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/remmina:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-remmina/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-remmina/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-remmina/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-remmina/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-remmina/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-remmina/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-remmina/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-remmina/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n remmina:\n image: lscr.io/linuxserver/remmina:latest\n container_name: remmina\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-remmina/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=remmina \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/remmina:latest\n</code></pre>"},{"location":"images/docker-remmina/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-remmina/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Remmina desktop gui. <code>3001</code> Remmina desktop gui HTTPS."},{"location":"images/docker-remmina/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-remmina/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings."},{"location":"images/docker-remmina/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-remmina/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-remmina/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-remmina/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-remmina/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-remmina/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it remmina /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f remmina\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' remmina\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/remmina:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-remmina/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-remmina/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull remmina\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d remmina\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-remmina/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/remmina:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop remmina\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm remmina\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-remmina/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-remmina/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-remmina.git\ncd docker-remmina\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/remmina:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-remmina/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins.</li> <li>19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages.</li> <li>27.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-resilio-sync/","title":"resilio-sync","text":""},{"location":"images/docker-resilio-sync/#linuxserverresilio-sync","title":"linuxserver/resilio-sync","text":"<p>Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.</p> <p></p>"},{"location":"images/docker-resilio-sync/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/resilio-sync:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-resilio-sync/#application-setup","title":"Application Setup","text":"<ul> <li>Webui is at <code>&lt;your-ip&gt;:8888</code>, for account creation and configuration.</li> <li>More info on setup at Resilio Sync</li> </ul>"},{"location":"images/docker-resilio-sync/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-resilio-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n resilio-sync:\n image: lscr.io/linuxserver/resilio-sync:latest\n container_name: resilio-sync\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n - /path/to/downloads:/downloads\n - /path/to/data:/sync\n ports:\n - 8888:8888\n - 55555:55555\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-resilio-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=resilio-sync \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8888:8888 \\\n -p 55555:55555 \\\n -v /path/to/config:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/data:/sync \\\n --restart unless-stopped \\\n lscr.io/linuxserver/resilio-sync:latest\n</code></pre>"},{"location":"images/docker-resilio-sync/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-resilio-sync/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8888</code> WebUI <code>55555</code> Sync Port."},{"location":"images/docker-resilio-sync/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-resilio-sync/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where resilio-sync should store its config file. <code>/downloads</code> Folder for downloads/cache. <code>/sync</code> Sync folders root."},{"location":"images/docker-resilio-sync/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-resilio-sync/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-resilio-sync/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-resilio-sync/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-resilio-sync/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-resilio-sync/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it resilio-sync /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f resilio-sync\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' resilio-sync\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/resilio-sync:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-resilio-sync/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-resilio-sync/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull resilio-sync\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d resilio-sync\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-resilio-sync/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/resilio-sync:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop resilio-sync\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm resilio-sync\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-resilio-sync/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-resilio-sync/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-resilio-sync.git\ncd docker-resilio-sync\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/resilio-sync:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-resilio-sync/#versions","title":"Versions","text":"<ul> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>14.12.22: - Rebase to Jammy, migrate to s6v3.</li> <li>03.10.21: - Use upstream apt repo to install. Rebase to focal.</li> <li>20.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>11.02.19: - Rebase to bionic, add pipeline logic and multi arch.</li> <li>05.02.18: - Add downloads volume mount.</li> <li>28.01.18: - Add /sync to dir whitelist.</li> <li>26.01.18: - Use variable for arch to bring in line with armhf arch repo.</li> <li>15.12.17: - Fix continuation lines.</li> <li>02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio.</li> <li>22.05.17: - Add variable for user defined umask.</li> <li>14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine).</li> <li>08.02.17: - Rebase to alpine 3.5.</li> <li>02.11.16: - Initial Release.</li> </ul>"},{"location":"images/docker-rsnapshot/","title":"rsnapshot","text":""},{"location":"images/docker-rsnapshot/#linuxserverrsnapshot","title":"linuxserver/rsnapshot","text":"<p>Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\"</p> <p></p>"},{"location":"images/docker-rsnapshot/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/rsnapshot:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-rsnapshot/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-rsnapshot/#important-notes","title":"IMPORTANT NOTES:","text":"<p>After starting the container you will need to edit <code>/config/rsnapshot.conf</code>.</p>"},{"location":"images/docker-rsnapshot/#snapshot-root-directory","title":"SNAPSHOT ROOT DIRECTORY","text":"<p>rsnapshot is configured to backup data to the <code>/.snapshots</code> volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.</p>"},{"location":"images/docker-rsnapshot/#backup-levels-intervals","title":"BACKUP LEVELS / INTERVALS","text":"<p>rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.</p>"},{"location":"images/docker-rsnapshot/#backup-points","title":"BACKUP POINTS","text":"<p>rsnapshot is configured to backup data from the <code>/data</code> volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.</p>"},{"location":"images/docker-rsnapshot/#cron","title":"cron","text":"<p>You will then need to edit <code>/config/crontabs/root</code> to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme.</p>"},{"location":"images/docker-rsnapshot/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-rsnapshot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n rsnapshot:\n image: lscr.io/linuxserver/rsnapshot:latest\n container_name: rsnapshot\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/rsnapshot/config:/config\n - /path/to/snapshots:/.snapshots #optional\n - /path/to/data:/data #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-rsnapshot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=rsnapshot \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/rsnapshot/config:/config \\\n -v /path/to/snapshots:/.snapshots `#optional` \\\n -v /path/to/data:/data `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/rsnapshot:latest\n</code></pre>"},{"location":"images/docker-rsnapshot/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-rsnapshot/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-rsnapshot/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/.snapshots</code> Storage location for all snapshots. <code>/data</code> Storage location for data to be backed up."},{"location":"images/docker-rsnapshot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-rsnapshot/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-rsnapshot/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-rsnapshot/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-rsnapshot/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it rsnapshot /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f rsnapshot\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rsnapshot\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rsnapshot:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-rsnapshot/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-rsnapshot/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull rsnapshot\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d rsnapshot\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-rsnapshot/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/rsnapshot:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop rsnapshot\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm rsnapshot\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-rsnapshot/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-rsnapshot/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-rsnapshot.git\ncd docker-rsnapshot\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/rsnapshot:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-rsnapshot/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19, add root periodic crontabs for logrotate.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>02.03.23: - Split cron into separate init step and set crontab permissions.</li> <li>15.12.22: - Rebase to alpine 3.17.</li> <li>11.10.22: - Rebase to alpine 3.16, migrate to s6v3.</li> <li>10.10.21: - Rebase to alpine 3.14.</li> <li>20.08.20: - Initial Release.</li> </ul>"},{"location":"images/docker-sabnzbd/","title":"sabnzbd","text":""},{"location":"images/docker-sabnzbd/#linuxserversabnzbd","title":"linuxserver/sabnzbd","text":"<p>Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.</p> <p></p>"},{"location":"images/docker-sabnzbd/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/sabnzbd:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-sabnzbd/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable SABnzbd releases unstable \u2705 Pre-releases from the develop branch nightly \u2705 Latest commits from the develop branch"},{"location":"images/docker-sabnzbd/#application-setup","title":"Application Setup","text":"<p>Initial setup is done via <code>http://&lt;docker host ip&gt;:&lt;mapped http port&gt;</code> ie, http://192.168.1.100:8080.</p> <p>See the SABnzbd wiki for more information.</p>"},{"location":"images/docker-sabnzbd/#nzb-notify","title":"nzb-notify","text":"<p>nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.</p>"},{"location":"images/docker-sabnzbd/#download-folders","title":"Download folders","text":"<p>In Sabnzbd gui settings, under <code>Folders</code>, make sure to set the <code>Completed Download Folder</code> as <code>/downloads</code> and the <code>Temporary Download Folder</code> as <code>/incomplete-downloads</code></p> <p>We have set <code>/incomplete-downloads</code> and <code>/downloads</code> as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-sabnzbd/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-sabnzbd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n sabnzbd:\n image: lscr.io/linuxserver/sabnzbd:latest\n container_name: sabnzbd\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sabnzbd/config:/config\n - /path/to/downloads:/downloads #optional\n - /path/to/incomplete/downloads:/incomplete-downloads #optional\n ports:\n - 8080:8080\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-sabnzbd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=sabnzbd \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/sabnzbd/config:/config \\\n -v /path/to/downloads:/downloads `#optional` \\\n -v /path/to/incomplete/downloads:/incomplete-downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sabnzbd:latest\n</code></pre>"},{"location":"images/docker-sabnzbd/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-sabnzbd/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8080</code> HTTP port for the WebUI."},{"location":"images/docker-sabnzbd/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-sabnzbd/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/downloads</code> Local path for finished downloads. <code>/incomplete-downloads</code> Local path for incomplete-downloads."},{"location":"images/docker-sabnzbd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sabnzbd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-sabnzbd/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-sabnzbd/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-sabnzbd/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-sabnzbd/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it sabnzbd /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f sabnzbd\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sabnzbd\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sabnzbd:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-sabnzbd/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-sabnzbd/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull sabnzbd\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d sabnzbd\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sabnzbd/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/sabnzbd:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop sabnzbd\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm sabnzbd\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sabnzbd/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-sabnzbd/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-sabnzbd.git\ncd docker-sabnzbd\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sabnzbd:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-sabnzbd/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>23.11.23: - Build translations.</li> <li>13.09.23: - Use par2cmdline-turbo in place of par2cmdline.</li> <li>16.08.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>16.05.23: - Rebase stable to Alpine 3.18, deprecate armhf.</li> <li>15.03.23: - Switch from p7zip to 7zip, bump unrar to 6.2.6.</li> <li>05.03.23: - Rebase master branch to Alpine 3.17.</li> <li>03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>31.07.22: - Add nightly tag.</li> <li>10.03.22: - Add nzb-notify.</li> <li>22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch.</li> <li>25.01.22: - Rebase Unstable branch to Alpine.</li> <li>13.01.22: - Add alpine branch</li> <li>08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080</li> <li>24.07.21: - Add python3-setuptools.</li> <li>14.05.21: - Use linuxserver.io wheel index for pip packages.</li> <li>12.02.21: - Clean up rust/cargo and pip cache.</li> <li>17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink <code>python</code> to <code>python3</code>.</li> <li>02.01.20: - Add python3 on top of python2 to image during transition.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>25.02.19: - Rebase to Bionic, add python deps for scripts.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>13.12.17: - Fix continuation lines.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>10.04.17: - Bump to 2.0 Release.</li> <li>25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch.</li> <li>08.02.17: - Add pythonioenconding=utf8 as env.</li> <li>15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme.</li> <li>11.09.16: - Bump to release of 1.10.</li> <li>09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab.</li> <li>28.08.16: - Rebase to alpine, using git version of sab.</li> <li>17.03.16: - Bump to install 1.0 final at startup.</li> <li>14.03.16: - Refresh image to pick up latest RC.</li> <li>23.01.15: - Refresh image.</li> <li>14.12.15: - Refresh image to pick up latest beta.</li> <li>21.08.15: - Initial Release.</li> </ul>"},{"location":"images/docker-series-troxide/","title":"series-troxide","text":""},{"location":"images/docker-series-troxide/#linuxserverseries-troxide","title":"linuxserver/series-troxide","text":"<p>Series Troxide a Simple and Modern Series Tracker</p> <p></p>"},{"location":"images/docker-series-troxide/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/series-troxide:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-series-troxide/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-series-troxide/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-series-troxide/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code>"},{"location":"images/docker-series-troxide/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-series-troxide/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-series-troxide/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n series-troxide:\n image: lscr.io/linuxserver/series-troxide:latest\n container_name: series-troxide\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-series-troxide/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=series-troxide \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/series-troxide:latest\n</code></pre>"},{"location":"images/docker-series-troxide/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-series-troxide/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Series Troxide desktop gui. <code>3001</code> HTTPS Series Troxide desktop gui."},{"location":"images/docker-series-troxide/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-series-troxide/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-series-troxide/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is required for the application to run properly."},{"location":"images/docker-series-troxide/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-series-troxide/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-series-troxide/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-series-troxide/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-series-troxide/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it series-troxide /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f series-troxide\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' series-troxide\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/series-troxide:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-series-troxide/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-series-troxide/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull series-troxide\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d series-troxide\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-series-troxide/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/series-troxide:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop series-troxide\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm series-troxide\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-series-troxide/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-series-troxide/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-series-troxide.git\ncd docker-series-troxide\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/series-troxide:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-series-troxide/#versions","title":"Versions","text":"<ul> <li>16.09.23: - Initial release.</li> </ul>"},{"location":"images/docker-shotcut/","title":"shotcut","text":""},{"location":"images/docker-shotcut/#linuxservershotcut","title":"linuxserver/shotcut","text":"<p>Shotcut is a free, open source, cross-platform video editor.</p> <p></p>"},{"location":"images/docker-shotcut/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/shotcut:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-shotcut/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-shotcut/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-shotcut/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-shotcut/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-shotcut/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-shotcut/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-shotcut/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-shotcut/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n shotcut:\n image: lscr.io/linuxserver/shotcut:latest\n container_name: shotcut\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-shotcut/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=shotcut \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/shotcut:latest\n</code></pre>"},{"location":"images/docker-shotcut/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-shotcut/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Shotcut desktop gui. <code>3001</code> Shotcut desktop gui HTTPS."},{"location":"images/docker-shotcut/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-shotcut/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where Shotcut should store its config."},{"location":"images/docker-shotcut/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker."},{"location":"images/docker-shotcut/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-shotcut/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-shotcut/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-shotcut/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-shotcut/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it shotcut /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f shotcut\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shotcut\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/shotcut:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-shotcut/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-shotcut/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull shotcut\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d shotcut\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-shotcut/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/shotcut:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop shotcut\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm shotcut\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-shotcut/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-shotcut/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-shotcut.git\ncd docker-shotcut\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/shotcut:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-shotcut/#versions","title":"Versions","text":"<ul> <li>31.01.24: - Initial release.</li> </ul>"},{"location":"images/docker-sickchill/","title":"sickchill","text":""},{"location":"images/docker-sickchill/#linuxserversickchill","title":"linuxserver/sickchill","text":"<p>Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.</p> <p></p>"},{"location":"images/docker-sickchill/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/sickchill:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-sickchill/#application-setup","title":"Application Setup","text":"<p>Web interface is at <code>&lt;your ip&gt;:8081</code> , set paths for downloads, tv-shows to match docker mappings via the webui.</p>"},{"location":"images/docker-sickchill/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-sickchill/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n sickchill:\n image: lscr.io/linuxserver/sickchill:latest\n container_name: sickchill\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sickchill/config:/config\n - /path/to/data:/downloads\n - /path/to/data:/tv\n ports:\n - 8081:8081\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-sickchill/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=sickchill \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8081:8081 \\\n -v /path/to/sickchill/config:/config \\\n -v /path/to/data:/downloads \\\n -v /path/to/data:/tv \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sickchill:latest\n</code></pre>"},{"location":"images/docker-sickchill/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-sickchill/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8081</code> will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickchill/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-sickchill/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/downloads</code> this will store any downloaded data on the docker host <code>/tv</code> this will allow sickchill to view what you already have"},{"location":"images/docker-sickchill/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickchill/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-sickchill/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-sickchill/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-sickchill/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-sickchill/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it sickchill /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f sickchill\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickchill\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickchill:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-sickchill/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-sickchill/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull sickchill\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d sickchill\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sickchill/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/sickchill:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop sickchill\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm sickchill\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sickchill/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-sickchill/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-sickchill.git\ncd docker-sickchill\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sickchill:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-sickchill/#versions","title":"Versions","text":"<ul> <li>13.02.24: - Rebase to Alpine 3.19.</li> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>12.07.23: - Rebase to alpine 3.18.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>17.02.22: - Rebase to alpine 3.17.</li> <li>17.02.22: - Rebase to alpine 3.15.</li> <li>20.11.21: - Modify binary usage from SickChill.py to SickChill.</li> <li>14.05.21: - Add linuxserver wheel index.</li> <li>12.02.21: - Rebasing to alpine 3.13. Add python certifi.</li> <li>17.09.20: - Update dependencies.</li> <li>06.09.20: - Switch to python3, install pip package.</li> <li>22.04.20: - Switch to git clone and using git tags for versioning.</li> <li>09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>17.04.19: - Adding Nodejs dependancy.</li> <li>31.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>10.10.18: - Initial Release.</li> </ul>"},{"location":"images/docker-sickgear/","title":"sickgear","text":""},{"location":"images/docker-sickgear/#linuxserversickgear","title":"linuxserver/sickgear","text":"<p>SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..</p> <p>For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear</p> <p></p>"},{"location":"images/docker-sickgear/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/sickgear:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u2705 arm32v7-&lt;version tag&gt;"},{"location":"images/docker-sickgear/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-sickgear/#setting-up-the-application","title":"Setting up the application","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8081</code>, for more information check out SickGear.</p>"},{"location":"images/docker-sickgear/#migration","title":"Migration","text":"<p>Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup</p> <ul> <li> <p>The post processing directory which is volume mounted as <code>downloads</code> within this container may be <code>incoming</code> in other versions.</p> </li> <li> <p>The permissions environmental variables which are defined as <code>PGID</code> and <code>PUID</code> within this container may have been <code>APP_UID</code> and <code>APP_UID</code> in other versions.</p> </li> <li> <p>The configuration file directory which is volume mounted as <code>config</code> within this container may be set as the environmental variable <code>APP_DATA</code> in other versions.</p> </li> <li> <p>The cache directory which is set in <code>config.ini</code> may be configured as a fixed path <code>cache_dir = /data/cache</code>. Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to <code>cache_dir = cache</code> which will allow SickGear to look for the folder relative to the volume mounted <code>/config</code> directory.</p> </li> </ul> <p>It is recommended that a clean install be completed, rather than a migration, however if migration is necessary:</p> <ul> <li> <p>start a new instance of this image</p> </li> <li> <p>compare and align SickGear version numbers between old and new. Ideally they should match but at a minimum the old version should be a lower version number to allow SickGear itself to try and migrate</p> </li> <li> <p>stop both containers</p> </li> <li> <p>notice the configuration difference and migrate copies of the old settings into the new app</p> </li> <li> <p>start the new container and test</p> </li> </ul>"},{"location":"images/docker-sickgear/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-sickgear/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n sickgear:\n image: lscr.io/linuxserver/sickgear:latest\n container_name: sickgear\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sickgear/data:/config\n - /path/to/data:/tv\n - /path/to/data:/downloads\n ports:\n - 8081:8081\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-sickgear/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=sickgear \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8081:8081 \\\n -v /path/to/sickgear/data:/config \\\n -v /path/to/data:/tv \\\n -v /path/to/data:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sickgear:latest\n</code></pre>"},{"location":"images/docker-sickgear/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-sickgear/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8081</code> will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickgear/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-sickgear/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent configuration files. <code>/tv</code> where you store your tv shows <code>/downloads</code> your downloads folder for post processing (must not be download in progress)"},{"location":"images/docker-sickgear/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickgear/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-sickgear/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-sickgear/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-sickgear/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-sickgear/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it sickgear /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f sickgear\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickgear\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickgear:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-sickgear/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-sickgear/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull sickgear\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d sickgear\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sickgear/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/sickgear:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop sickgear\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm sickgear\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sickgear/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-sickgear/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-sickgear.git\ncd docker-sickgear\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sickgear:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-sickgear/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>08.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>27.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>18.11.22: - Update service file from legacy SickBeard.py to sickgear.py.</li> <li>10.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>19.09.22: - Rebase to alpine 3.15. Build unrar from source.</li> <li>31.01.21: - Add unrar.</li> <li>29.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>03.06.20: - Rebasing to alpine 3.12, switch to python3.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>07.11.18: - Pipeline prep</li> <li>07.07.18: - Initial draft release</li> </ul>"},{"location":"images/docker-smokeping/","title":"smokeping","text":""},{"location":"images/docker-smokeping/#linuxserversmokeping","title":"linuxserver/smokeping","text":"<p>Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.</p> <p></p>"},{"location":"images/docker-smokeping/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/smokeping:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-smokeping/#application-setup","title":"Application Setup","text":"<ul> <li>Once running, the URL will be <code>http://&lt;host-ip&gt;/smokeping/smokeping.cgi</code>. For example, a full URL might look like <code>https://smokeping.yourdomain.com/smokeping/smokeping.cgi</code>.</li> <li>Basic setup: edit the <code>Targets</code> file to ping the hosts you're interested in to match the format found there.</li> <li>Wait 10 minutes.</li> <li>To reload the configuration without restarting the container, run <code>docker exec smokeping pkill -f -HUP '/usr/bin/perl /usr/s?bin/smokeping(_cgi)?'</code>, where <code>smokeping</code> is the container ID.</li> <li>To restart the container, run <code>docker restart smokeping</code>, where <code>smokeping</code> is the container ID.</li> <li>Note that the default <code>Targets</code> file includes items that may or may not work. These are simply to provide examples of configuration.</li> <li>Slave setup: modify the <code>Targets</code>, <code>Slaves</code>, and <code>smokeping_secrets</code> files on the master host, per the documentation.</li> </ul>"},{"location":"images/docker-smokeping/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-smokeping/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n smokeping:\n image: lscr.io/linuxserver/smokeping:latest\n container_name: smokeping\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MASTER_URL=http://&lt;master-host-ip&gt;:80/smokeping/ #optional\n - SHARED_SECRET=password #optional\n - CACHE_DIR=/tmp #optional\n volumes:\n - /path/to/smokeping/config:/config\n - /path/to/smokeping/data:/data\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-smokeping/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=smokeping \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MASTER_URL=http://&lt;master-host-ip&gt;:80/smokeping/ `#optional` \\\n -e SHARED_SECRET=password `#optional` \\\n -e CACHE_DIR=/tmp `#optional` \\\n -p 80:80 \\\n -v /path/to/smokeping/config:/config \\\n -v /path/to/smokeping/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/smokeping:latest\n</code></pre>"},{"location":"images/docker-smokeping/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-smokeping/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Allows HTTP access to the internal webserver."},{"location":"images/docker-smokeping/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MASTER_URL=http://&lt;master-host-ip&gt;:80/smokeping/</code> Specify the master url to connect to. Used when in slave mode. <code>SHARED_SECRET=password</code> Specify the master shared secret for this host. Used when in slave mode. <code>CACHE_DIR=/tmp</code> Specify the cache directory for this host. Used when in slave mode."},{"location":"images/docker-smokeping/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Storage location for db and application data (graphs etc)"},{"location":"images/docker-smokeping/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-smokeping/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-smokeping/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-smokeping/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-smokeping/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-smokeping/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it smokeping /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f smokeping\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' smokeping\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/smokeping:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-smokeping/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-smokeping/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull smokeping\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d smokeping\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-smokeping/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/smokeping:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop smokeping\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm smokeping\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-smokeping/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-smokeping/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-smokeping.git\ncd docker-smokeping\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/smokeping:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-smokeping/#versions","title":"Versions","text":"<ul> <li>22.03.24: - Adding ability to run as a slave.</li> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>29.11.23: - Bump tcpping to 1.8.</li> <li>21.11.23: - Add support for IRTT Probes.</li> <li>23.07.23: - Add Authen::TacacsPlus for Tacacs+ support.</li> <li>16.05.23: - Add perl-authen-radius for Radius support.</li> <li>16.05.23: - Rebase to Alpine 3.18. Deprecate armhf.</li> <li>11.05.23: - Add perl-lwp-protocol-https for master/slave support over https.</li> <li>22.01.23: - Revert to using Apache due to latency issues with nginx and fcgiwrap.</li> <li>12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap.</li> <li>29.03.21: - Dockerfile: Install curl before we call it</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>14.11.18: - Allow access without /smokeping in URL.</li> <li>28.04.18: - Rebase to alpine 3.8.</li> <li>09.04.18: - Add bc package.</li> <li>08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo).</li> <li>13.12.17: - Expose httpd_conf to /config.</li> <li>13.12.17: - Rebase to alpine 3.7.</li> <li>24.07.17: - Add :unraid tag for hosts without ipv6.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations</li> <li>12.04.17: - Fix cropper.js path, thanks nibbledeez.</li> <li>09.02.17: - Rebase to alpine 3.5.</li> <li>17.10.16: - Add ttf-dejavu package as per LT forum.</li> <li>10.09.16: - Add layer badges to README.</li> <li>05.09.16: - Add curl package.</li> <li>28.08.16: - Add badges to README.</li> <li>25.07.16: - Rebase to alpine linux.</li> <li>23.07.16: - Fix apt script confusion.</li> <li>29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)</li> </ul>"},{"location":"images/docker-snapdrop/","title":"snapdrop","text":""},{"location":"images/docker-snapdrop/#linuxserversnapdrop","title":"linuxserver/snapdrop","text":"<p>Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.</p> <p></p>"},{"location":"images/docker-snapdrop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/snapdrop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-snapdrop/#application-setup","title":"Application Setup","text":"<p>Webui is accessible at http://SERVERIP:PORT</p>"},{"location":"images/docker-snapdrop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-snapdrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n snapdrop:\n image: lscr.io/linuxserver/snapdrop:latest\n container_name: snapdrop\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/snapdrop/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-snapdrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=snapdrop \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/snapdrop/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/snapdrop:latest\n</code></pre>"},{"location":"images/docker-snapdrop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-snapdrop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-snapdrop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-snapdrop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-snapdrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snapdrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-snapdrop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-snapdrop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-snapdrop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-snapdrop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it snapdrop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f snapdrop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snapdrop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snapdrop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-snapdrop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-snapdrop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull snapdrop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d snapdrop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-snapdrop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/snapdrop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop snapdrop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm snapdrop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-snapdrop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-snapdrop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-snapdrop.git\ncd docker-snapdrop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/snapdrop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-snapdrop/#versions","title":"Versions","text":"<ul> <li>06.02.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config.</li> <li>15.09.20: - Initial Release.</li> </ul>"},{"location":"images/docker-snipe-it/","title":"snipe-it","text":""},{"location":"images/docker-snipe-it/#linuxserversnipe-it","title":"linuxserver/snipe-it","text":"<p>Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.</p> <p></p>"},{"location":"images/docker-snipe-it/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/snipe-it:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-snipe-it/#application-setup","title":"Application Setup","text":"<p>\"Access the webui at <code>&lt;your-ip&gt;:8080</code>, for more information check out Snipe-it.</p> <p>This container requires a MySQL or MariaDB server to connect to, we recommend ours</p>"},{"location":"images/docker-snipe-it/#php-customization","title":"PHP customization","text":"<p>This image uses our NGINX base image all override configuration files for PHP are located in <code>/config/php</code>.</p>"},{"location":"images/docker-snipe-it/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-snipe-it/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n snipe-it:\n image: lscr.io/linuxserver/snipe-it:latest\n container_name: snipe-it\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - APP_URL=http://localhost:8080\n - MYSQL_PORT_3306_TCP_ADDR=\n - MYSQL_PORT_3306_TCP_PORT=\n - MYSQL_DATABASE=\n - MYSQL_USER=\n - MYSQL_PASSWORD=\n - APP_ENV=production #optional\n - APP_DEBUG=false #optional\n - APP_LOCALE= #optional\n - MAIL_PORT_587_TCP_ADDR=US/Pacific #optional\n - MAIL_PORT_587_TCP_PORT=US/Pacific #optional\n - MAIL_ENV_FROM_ADDR=US/Pacific #optional\n - MAIL_ENV_FROM_NAME=US/Pacific #optional\n - MAIL_ENV_ENCRYPTION=US/Pacific #optional\n - MAIL_ENV_USERNAME=US/Pacific #optional\n - MAIL_ENV_PASSWORD=US/Pacific #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8080:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-snipe-it/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=snipe-it \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e APP_URL=http://localhost:8080 \\\n -e MYSQL_PORT_3306_TCP_ADDR= \\\n -e MYSQL_PORT_3306_TCP_PORT= \\\n -e MYSQL_DATABASE= \\\n -e MYSQL_USER= \\\n -e MYSQL_PASSWORD= \\\n -e APP_ENV=production `#optional` \\\n -e APP_DEBUG=false `#optional` \\\n -e APP_LOCALE= `#optional` \\\n -e MAIL_PORT_587_TCP_ADDR=US/Pacific `#optional` \\\n -e MAIL_PORT_587_TCP_PORT=US/Pacific `#optional` \\\n -e MAIL_ENV_FROM_ADDR=US/Pacific `#optional` \\\n -e MAIL_ENV_FROM_NAME=US/Pacific `#optional` \\\n -e MAIL_ENV_ENCRYPTION=US/Pacific `#optional` \\\n -e MAIL_ENV_USERNAME=US/Pacific `#optional` \\\n -e MAIL_ENV_PASSWORD=US/Pacific `#optional` \\\n -p 8080:80 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/snipe-it:latest\n</code></pre>"},{"location":"images/docker-snipe-it/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-snipe-it/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Snipe-IT Web UI"},{"location":"images/docker-snipe-it/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>APP_URL=http://localhost:8080</code> Hostname or IP and port if applicable, be sure to define https/http <code>MYSQL_PORT_3306_TCP_ADDR=</code> Mysql hostname or IP to use <code>MYSQL_PORT_3306_TCP_PORT=</code> Mysql port to use <code>MYSQL_DATABASE=</code> Mysql database to use <code>MYSQL_USER=</code> Mysql user to use <code>MYSQL_PASSWORD=</code> Mysql password to use <code>APP_ENV=production</code> Default is <code>production</code> but can use <code>testing</code> or <code>develop</code>. <code>APP_DEBUG=false</code> Set to <code>true</code> to see debugging output in the web UI. <code>APP_LOCALE=</code> Default is <code>en</code>. Set to a language from this list. <code>MAIL_PORT_587_TCP_ADDR=US/Pacific</code> SMTP mail server ip or hostname. <code>MAIL_PORT_587_TCP_PORT=US/Pacific</code> SMTP mail server port. <code>MAIL_ENV_FROM_ADDR=US/Pacific</code> The email address mail should be replied to and listed when sent. <code>MAIL_ENV_FROM_NAME=US/Pacific</code> The name listed on email sent from the default account on the system. <code>MAIL_ENV_ENCRYPTION=US/Pacific</code> Mail encryption to use e.g. <code>tls</code>. <code>MAIL_ENV_USERNAME=US/Pacific</code> SMTP server login username. <code>MAIL_ENV_PASSWORD=US/Pacific</code> SMTP server login password."},{"location":"images/docker-snipe-it/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains your config files and data storage for Snipe-IT"},{"location":"images/docker-snipe-it/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snipe-it/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-snipe-it/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-snipe-it/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-snipe-it/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-snipe-it/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it snipe-it /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f snipe-it\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snipe-it\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snipe-it:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-snipe-it/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-snipe-it/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull snipe-it\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d snipe-it\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-snipe-it/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/snipe-it:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop snipe-it\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm snipe-it\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-snipe-it/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-snipe-it/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-snipe-it.git\ncd docker-snipe-it\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/snipe-it:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-snipe-it/#versions","title":"Versions","text":"<ul> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>17.02.24: - Add php81-exif.</li> <li>03.07.23: - Deprecate armhf. As announced here</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>13.04.23: - Add php81-pecl-redis for redis support.</li> <li>28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>14.05.22: - Add php7-sodium for v6.</li> <li>12.04.22: - Don't build development elements.</li> <li>02.03.22: - Rework init logic, do not show default compose.</li> <li>29.06.21: - Rebasing to alpine 3.14.</li> <li>30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time.</li> <li>10.04.19: - Fix permissions for new bootstrap cache directory.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>31.10.18: - Rebasing to alpine 3.8</li> <li>05.08.18: - Migration to live build server.</li> <li>13.06.18: - Initial Release.</li> </ul>"},{"location":"images/docker-sonarr/","title":"sonarr","text":""},{"location":"images/docker-sonarr/#linuxserversonarr","title":"linuxserver/sonarr","text":"<p>Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.</p> <p></p>"},{"location":"images/docker-sonarr/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/sonarr:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-sonarr/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases from Sonarr develop \u2705 Development releases from Sonarr"},{"location":"images/docker-sonarr/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8989</code>, for more information check out Sonarr.</p>"},{"location":"images/docker-sonarr/#media-folders","title":"Media folders","text":"<p>We have set <code>/tv</code> and <code>/downloads</code> as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.</p> <p>Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.</p> <p>The folks over at servarr.com wrote a good write-up on how to get started with this.</p>"},{"location":"images/docker-sonarr/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-sonarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n sonarr:\n image: lscr.io/linuxserver/sonarr:latest\n container_name: sonarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /path/to/tvseries:/tv #optional\n - /path/to/downloadclient-downloads:/downloads #optional\n ports:\n - 8989:8989\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-sonarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=sonarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8989:8989 \\\n -v /path/to/data:/config \\\n -v /path/to/tvseries:/tv `#optional` \\\n -v /path/to/downloadclient-downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sonarr:latest\n</code></pre>"},{"location":"images/docker-sonarr/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-sonarr/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8989</code> The port for the Sonarr webinterface"},{"location":"images/docker-sonarr/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-sonarr/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Database and sonarr configs <code>/tv</code> Location of TV library on disk (See note in Application setup) <code>/downloads</code> Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-sonarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sonarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-sonarr/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-sonarr/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-sonarr/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-sonarr/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it sonarr /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f sonarr\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sonarr\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sonarr:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-sonarr/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-sonarr/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull sonarr\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d sonarr\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sonarr/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/sonarr:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop sonarr\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm sonarr\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sonarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-sonarr/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-sonarr.git\ncd docker-sonarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sonarr:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-sonarr/#versions","title":"Versions","text":"<ul> <li>12.01.24: - Update download url.</li> <li>30.12.23: - Rebase master branch to Alpine 3.19.</li> <li>15.02.23: - Rebase master branch to Jammy.</li> <li>19.12.22: - Rebase develop branch Alpine 3.17.</li> <li>24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16.</li> <li>03.08.22: - Deprecate armhf.</li> <li>02.08.22: - Add armhf deprecation warning.</li> <li>28.04.22: - Rebase master branch to mono 6.12 base (focal).</li> <li>20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch.</li> <li>28.12.21: - Add develop-alpine branch.</li> <li>11.05.21: - Make the paths clearer to the user.</li> <li>10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update.</li> <li>18.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>05.04.20: - Move app to /app.</li> <li>01.08.19: - Rebase to Linuxserver LTS mono version.</li> <li>13.06.19: - Add env variable for setting umask.</li> <li>10.05.19: - Rebase to Bionic.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>01.02.19: - Multi arch images and pipeline build logic</li> <li>15.12.17: - Fix continuation lines.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>17.04.17: - Switch to using inhouse mono baseimage, adds python also.</li> <li>14.04.17: - Change to mount /etc/localtime in README, thanks cbgj.</li> <li>13.04.17: - Switch to official mono repository.</li> <li>30.09.16: - Fix umask</li> <li>23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable</li> <li>15.09.16: - Add libcurl3 package.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README.</li> <li>20.07.16: - Rebase to xenial.</li> <li>31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.</li> </ul>"},{"location":"images/docker-speedtest-tracker/","title":"speedtest-tracker","text":""},{"location":"images/docker-speedtest-tracker/#linuxserverspeedtest-tracker","title":"linuxserver/speedtest-tracker","text":"<p>Speedtest-tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.</p> <p></p>"},{"location":"images/docker-speedtest-tracker/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/speedtest-tracker:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-speedtest-tracker/#application-setup","title":"Application Setup","text":"<p>Access the web UI at <code>&lt;your-ip&gt;:80</code>, for more information check out the project documentation.</p>"},{"location":"images/docker-speedtest-tracker/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-speedtest-tracker/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n speedtest-tracker:\n image: lscr.io/linuxserver/speedtest-tracker:latest\n container_name: speedtest-tracker\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_CONNECTION=sqlite\n - APP_KEY= #optional\n - DB_HOST= #optional\n - DB_PORT= #optional\n - DB_DATABASE= #optional\n - DB_USERNAME= #optional\n - DB_PASSWORD= #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 80:80\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-speedtest-tracker/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=speedtest-tracker \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_CONNECTION=sqlite \\\n -e APP_KEY= `#optional` \\\n -e DB_HOST= `#optional` \\\n -e DB_PORT= `#optional` \\\n -e DB_DATABASE= `#optional` \\\n -e DB_USERNAME= `#optional` \\\n -e DB_PASSWORD= `#optional` \\\n -p 80:80 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/speedtest-tracker:latest\n</code></pre>"},{"location":"images/docker-speedtest-tracker/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-speedtest-tracker/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> Web UI"},{"location":"images/docker-speedtest-tracker/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DB_CONNECTION=sqlite</code> Set the database type to use. <code>sqlite</code>, <code>pgsql</code>, or <code>mysql</code> <code>APP_KEY=</code> App key used for encrypting stored data. Generate with <code>docker exec speedtest-tracker php /app/www/artisan key:generate --show</code> <code>DB_HOST=</code> Database hostname (postgres/mysql). <code>DB_PORT=</code> Database port (postgres/mysql). <code>DB_DATABASE=</code> Database name (postgres/mysql). <code>DB_USERNAME=</code> Database username (postgres/mysql). <code>DB_PASSWORD=</code> Database password (postgres/mysql)."},{"location":"images/docker-speedtest-tracker/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains speedtest-tracker config and database, if using sqlite."},{"location":"images/docker-speedtest-tracker/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-speedtest-tracker/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-speedtest-tracker/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-speedtest-tracker/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-speedtest-tracker/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-speedtest-tracker/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it speedtest-tracker /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f speedtest-tracker\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' speedtest-tracker\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/speedtest-tracker:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-speedtest-tracker/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-speedtest-tracker/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull speedtest-tracker\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d speedtest-tracker\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-speedtest-tracker/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/speedtest-tracker:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop speedtest-tracker\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm speedtest-tracker\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-speedtest-tracker/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-speedtest-tracker/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-speedtest-tracker.git\ncd docker-speedtest-tracker\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/speedtest-tracker:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-speedtest-tracker/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Initial Release.</li> </ul>"},{"location":"images/docker-sqlitebrowser/","title":"sqlitebrowser","text":""},{"location":"images/docker-sqlitebrowser/#linuxserversqlitebrowser","title":"linuxserver/sqlitebrowser","text":"<p>DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.</p> <p></p>"},{"location":"images/docker-sqlitebrowser/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/sqlitebrowser:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-sqlitebrowser/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-sqlitebrowser/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-sqlitebrowser/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-sqlitebrowser/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-sqlitebrowser/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-sqlitebrowser/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-sqlitebrowser/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-sqlitebrowser/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n sqlitebrowser:\n image: lscr.io/linuxserver/sqlitebrowser:latest\n container_name: sqlitebrowser\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-sqlitebrowser/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=sqlitebrowser \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sqlitebrowser:latest\n</code></pre>"},{"location":"images/docker-sqlitebrowser/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-sqlitebrowser/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Sqlitebrowser desktop gui. <code>3001</code> Sqlitebrowser desktop gui HTTPS."},{"location":"images/docker-sqlitebrowser/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-sqlitebrowser/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-sqlitebrowser/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-sqlitebrowser/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-sqlitebrowser/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-sqlitebrowser/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-sqlitebrowser/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-sqlitebrowser/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it sqlitebrowser /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f sqlitebrowser\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sqlitebrowser\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sqlitebrowser:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-sqlitebrowser/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-sqlitebrowser/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull sqlitebrowser\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d sqlitebrowser\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sqlitebrowser/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/sqlitebrowser:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop sqlitebrowser\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm sqlitebrowser\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-sqlitebrowser/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-sqlitebrowser/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-sqlitebrowser.git\ncd docker-sqlitebrowser\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sqlitebrowser:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-sqlitebrowser/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>02.01.24: - Rebase to Alpine 3.19.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>16.02.22: - Rebase to Alpine.</li> <li>20.01.21: - Remove Wireshark reference.</li> <li>29.07.20: - Initial release.</li> </ul>"},{"location":"images/docker-steamos/","title":"steamos","text":""},{"location":"images/docker-steamos/#linuxserversteamos","title":"linuxserver/steamos","text":"<p>SteamOS is an Arch based Linux distribution made by Valve Software. This container is a vanilla Arch install with Steam repositories added for software support. This container will only work with modern AMD/Intel GPUs on a real Linux Host</p> <p></p>"},{"location":"images/docker-steamos/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/steamos:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-steamos/#application-setup","title":"Application Setup","text":"<p>This container is currently in a Beta state and is developing quickly, things will change constantly and it may crash or not function perfectly especially when mixing Steam remote play frame capture with the web based KasmVNC frame capture</p> <p>SteamOS is designed for specific AMD based hardware, this container will only work properly on a host with a modern AMD GPU or Intel ARC/iGPU</p> <p>The following limitations currently exist: * You must run the desktop mode initially to login to Steam, then you can switch to <code>STARTUP=BIGPICTURE</code> * Sunshine is available in both desktop mode (KDE) and BIGPICTURE, but gamepads using Sunshine does not currently work. * In Desktop mode most proton games will kill off kwin_x11 and in turn disable keyboard and gamepad input. For remote play in Desktop mode it is mostly Valve or Linux native titles that function properly. * If games are not launching and are Windows based ensure you have forced a compatibility layer in it's settings to use Proton Experimental or Proton 8. * BIGPICTURE STARTUP mode connecting via Sunshine will have much better game compatibility and generally be less buggy. Titles are running how the Steam Deck expects them to inside a gamescope renderer, outside of the lack of gamepads this works identically to a Deck. * Sunshine auto discovery is not functional, you will need to manually enter the IP in your client. * Remote play does not function well in BIGPICTURE mode, this mode is optimized for a single resolution passed on boot using Sunshine.</p> <p>To improve compatibility we ingest drivers from vanilla Arch repos, but NVIDIA will never work. This is a limitation of the KasmVNC virtual framebuffer that we use as it only has logic for the DRI3 framework which is not available for NVIDIA. We recommend using a modern RDNA AMD card or Intel ARC card, but lower end GPUs might work for some games we do bundle all the drivers that are possible to install. Compatibility should be on par with the Steam Deck, if it is certified for the Deck it will run in our testing and the game should be fully playable.</p> <p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-steamos/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-steamos/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code>"},{"location":"images/docker-steamos/#networking","title":"Networking","text":"<p>Windows users will need to disable their firewall for remote play to function in the default setup</p> <p>The Steam Link application will only function in Host or Macvlan networking modes</p> <p>Steam network discovery in it's current state is pretty inflexible, to function locally it uses broadcast packets that cannot traverse subnets and this becomes a problem when using a Docker subnet. In the default configuration we recommend forwarding the ports and passing the underlying host's IP using the <code>HOST_IP</code> environment variable. When the container spins up it will set this IP as it's default route allowing remote play to function over a local network given the client does not have a firewall in the way blocking the traffic. If you never plan to use remote play or only plan on using it fully remote off your LAN through a Valve relay then you can essentially rip out all the logic for Steam port forwarding and passing the host ip to the container. </p> <p>Optimally Macvlan can be used to give this container a dedicated IP on your network and run closer to how a bridged VM would. This is the most compatible methodology and will avoid any potentially port conflicts. </p> <p>Host Networking can also be used, but might run into a port conflict with what the container is trying to init and the underlying host.</p>"},{"location":"images/docker-steamos/#gameplay","title":"Gameplay","text":"<p>Keep in mind this container thinks it is a Steam Deck, games will be optimized for it's controller layout and video settings. To get a desktop Steam experience for remote play or testing there is a desktop shortcut provided <code>Steam Desktop Mode</code>. Most games will tie themselves to the current desktop resolution as set when you connect to the web interface, a method for setting the resolution via the web interface is being worked on. Authentication (not two factor) is not currently saved when closing and re-opening Steam for any reason when in Deck mode this is also being worked on. This means anytime you restart the container you will need to access the web interface and log back in. It is possible to play games over KasmVNC, but it as a protocol is not currently optimized for gaming. You will experience more frame skipping and latency as compared to Steam remote play.</p>"},{"location":"images/docker-steamos/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-steamos/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n steamos:\n image: lscr.io/linuxserver/steamos:latest\n container_name: steamos\n hostname: hostname #optional\n cap_add:\n - NET_ADMIN\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DRINODE=/dev/dri/renderD128\n - HOST_IP=192.168.100.10 #optional\n - STARTUP=KDE #optional\n - RESOLUTION=1920x1080 #optional\n volumes:\n - /path/to/config:/config\n - /dev/input:/dev/input #optional\n - /run/udev/data:/run/udev/data #optional\n ports:\n - 3000:3000\n - 3001:3001\n - 27031-27036:27031-27036/udp #optional\n - 27031-27036:27031-27036 #optional\n - 47984-47990:47984-47990 #optional\n - 48010-48010:48010-48010 #optional\n - 47998-48000:47998-48000/udp #optional\n devices:\n - /dev/dri:/dev/dri\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-steamos/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=steamos \\\n --hostname=hostname `#optional` \\\n --cap-add=NET_ADMIN \\\n --security-opt seccomp=unconfined \\\n --security-opt apparmor=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DRINODE=/dev/dri/renderD128 \\\n -e HOST_IP=192.168.100.10 `#optional` \\\n -e STARTUP=KDE `#optional` \\\n -e RESOLUTION=1920x1080 `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -p 27031-27036:27031-27036/udp `#optional` \\\n -p 27031-27036:27031-27036 `#optional` \\\n -p 47984-47990:47984-47990 `#optional` \\\n -p 48010-48010:48010-48010 `#optional` \\\n -p 47998-48000:47998-48000/udp `#optional` \\\n -v /path/to/config:/config \\\n -v /dev/input:/dev/input `#optional` \\\n -v /run/udev/data:/run/udev/data `#optional` \\\n --device /dev/dri:/dev/dri \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/steamos:latest\n</code></pre>"},{"location":"images/docker-steamos/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-steamos/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> SteamOS desktop gui. <code>3001</code> HTTPS SteamOS desktop gui. <code>27031-27036/udp</code> Steam Remote Play Ports (UDP). <code>27031-27036</code> Steam Remote Play Ports (TCP). <code>47984-47990</code> Sunshine Ports (TCP). <code>48010-48010</code> Sunshine Ports (TCP). <code>47998-48000/udp</code> Sunshine Ports (UDP)."},{"location":"images/docker-steamos/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DRINODE=/dev/dri/renderD128</code> Specify the render device (GPU) for the contianer to use. <code>HOST_IP=192.168.100.10</code> Specify the IP of the host, needed for LAN Remote Play. <code>STARTUP=KDE</code> KDE to boot into desktop mode, BIGPICTURE to boot into gamescope. <code>RESOLUTION=1920x1080</code> When booting into BIGPICTURE mode the screen resolution will be bound to this value."},{"location":"images/docker-steamos/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores all files and games. <code>/dev/input</code> Optional for gamepad support. *Only working for Steam Remote Play <code>/run/udev/data</code> Optional for gamepad support. *Only working for Steam Remote Play"},{"location":"images/docker-steamos/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Video card passthrough to Steam."},{"location":"images/docker-steamos/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--hostname=</code> Specify the hostname of the host, this is useful for keeping a persistent hostname between upgrades and identifying the server in the remote play Steam Client. <code>--shm-size=</code> This is needed for the steam browser to function properly. <code>--security-opt seccomp=unconfined</code> This is needed to allow kernel syscalls made by Steam. <code>--security-opt apparmor=unconfined</code> For Debian/Ubuntu hosts Steam needs elevated perms that AppArmor blocks."},{"location":"images/docker-steamos/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-steamos/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-steamos/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-steamos/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-steamos/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-steamos/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it steamos /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f steamos\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' steamos\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/steamos:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-steamos/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-steamos/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull steamos\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d steamos\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-steamos/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/steamos:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop steamos\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm steamos\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-steamos/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-steamos/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-steamos.git\ncd docker-steamos\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/steamos:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-steamos/#versions","title":"Versions","text":"<ul> <li>15.01.24: - Install gperftools to fix source games.</li> <li>29.11.23: - Switch to openbox for bigpicture mode.</li> <li>06.10.23: - Ingest sunshine from AUR to compile at build time.</li> <li>25.08.23: - Add deps needed for some audio and software compatibility.</li> <li>04.07.23: - Initial release.</li> </ul>"},{"location":"images/docker-swag/","title":"swag","text":""},{"location":"images/docker-swag/#linuxserverswag","title":"linuxserver/swag","text":"<p>SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.</p> <p></p>"},{"location":"images/docker-swag/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/swag:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-swag/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-swag/#validation-and-initial-setup","title":"Validation and initial setup","text":"<ul> <li>Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).</li> <li>If you need a dynamic dns provider, you can use the free provider duckdns.org where the <code>URL</code> will be <code>yoursubdomain.duckdns.org</code> and the <code>SUBDOMAINS</code> can be <code>www,ftp,cloud</code> with http validation, or <code>wildcard</code> with dns validation. You can use our duckdns image to update your IP on duckdns.org.</li> <li>For <code>http</code> validation, port 80 on the internet side of the router should be forwarded to this container's port 80</li> <li>For <code>dns</code> validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under <code>/config/dns-conf</code></li> <li>Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\"</li> <li>Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\"</li> <li>DuckDNS only supports two types of DNS validated certificates (not both at the same time):<ol> <li>Certs that only cover your main subdomain (ie. <code>yoursubdomain.duckdns.org</code>, leave the <code>SUBDOMAINS</code> variable empty)</li> <li>Certs that cover sub-subdomains of your main subdomain (ie. <code>*.yoursubdomain.duckdns.org</code>, set the <code>SUBDOMAINS</code> variable to <code>wildcard</code>)</li> </ol> </li> <li><code>--cap-add=NET_ADMIN</code> is required for fail2ban to modify iptables</li> <li>After setup, navigate to <code>https://yourdomain.url</code> to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at <code>/config/nginx/site-confs/default.conf</code>).</li> <li>Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under <code>/config/log/letsencrypt</code> to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.</li> </ul>"},{"location":"images/docker-swag/#certbot-plugins","title":"Certbot Plugins","text":"<p>SWAG includes many Certbot plugins out of the box, but not all plugins can be includes. If you need a plugin that is not included, the quickest way to have the plugin available is to use our Universal Package Install Docker Mod.</p> <p>Set the following environment variables on your container:</p> <pre><code>DOCKER_MODS=linuxserver/mods:universal-package-install\nINSTALL_PIP_PACKAGES=certbot-dns-&lt;plugin&gt;\n</code></pre> <p>Set the required credentials (usually found in the plugin documentation) in <code>/config/dns-conf/&lt;plugin&gt;.ini</code>. It is recommended to attempt obtaining a certificate with <code>STAGING=true</code> first to make sure the plugin is working as expected.</p>"},{"location":"images/docker-swag/#security-and-password-protection","title":"Security and password protection","text":"<ul> <li>The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.</li> <li>Per RFC7919, the container is shipping ffdhe4096 as the <code>dhparams.pem</code>.</li> <li>If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file <code>docker exec -it swag htpasswd -c /config/nginx/.htpasswd &lt;username&gt;</code></li> <li>You can add multiple user:pass to <code>.htpasswd</code>. For the first user, use the above command, for others, use the above command without the <code>-c</code> flag, as it will force deletion of the existing <code>.htpasswd</code> and creation of a new one</li> <li>You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.</li> </ul>"},{"location":"images/docker-swag/#site-config-and-reverse-proxy","title":"Site config and reverse proxy","text":"<ul> <li>The default site config resides at <code>/config/nginx/site-confs/default.conf</code>. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the <code>default</code> file, a new default will be created on container start.</li> <li>Preset reverse proxy config files are added for popular apps. See the <code>README.md</code> file under <code>/config/nginx/proxy_confs</code> for instructions on how to enable them. The preset confs reside in and get imported from this repo.</li> <li>If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included <code>add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\";</code> This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines</li> <li>If you wish to redirect http to https, you must expose port 80</li> </ul>"},{"location":"images/docker-swag/#using-certs-in-other-containers","title":"Using certs in other containers","text":"<ul> <li>This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.</li> <li>To use these certs in other containers, do either of the following:</li> <li>(Easier) Mount the container's config folder in other containers (ie. <code>-v /path-to-swag-config:/swag-ssl</code>) and in the other containers, use the cert location <code>/swag-ssl/keys/letsencrypt/</code></li> <li>(More secure) Mount the SWAG folder <code>etc</code> that resides under <code>/config</code> in other containers (ie. <code>-v /path-to-swag-config/etc:/swag-ssl</code>) and in the other containers, use the cert location <code>/swag-ssl/letsencrypt/live/&lt;your.domain.url&gt;/</code> (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs)</li> <li>These certs include:</li> <li><code>cert.pem</code>, <code>chain.pem</code>, <code>fullchain.pem</code> and <code>privkey.pem</code>, which are generated by Certbot and used by nginx and various other apps</li> <li><code>privkey.pfx</code>, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)</li> <li><code>priv-fullchain-bundle.pem</code>, a pem cert that bundles the private key and the fullchain, used by apps like ZNC</li> </ul>"},{"location":"images/docker-swag/#using-fail2ban","title":"Using fail2ban","text":"<ul> <li>This container includes fail2ban set up with 5 jails by default:</li> <li>nginx-http-auth</li> <li>nginx-badbots</li> <li>nginx-botsearch</li> <li>nginx-deny</li> <li>nginx-unauthorized</li> <li>To enable or disable other jails, modify the file <code>/config/fail2ban/jail.local</code></li> <li>To modify filters and actions, instead of editing the <code>.conf</code> files, create <code>.local</code> files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. <code>.local</code> files will append whatever's in the <code>.conf</code> files (ie. <code>nginx-http-auth.conf</code> --&gt; <code>nginx-http-auth.local</code>)</li> <li>You can check which jails are active via <code>docker exec -it swag fail2ban-client status</code></li> <li>You can check the status of a specific jail via <code>docker exec -it swag fail2ban-client status &lt;jail name&gt;</code></li> <li>You can unban an IP via <code>docker exec -it swag fail2ban-client set &lt;jail name&gt; unbanip &lt;IP&gt;</code></li> <li>A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands</li> </ul>"},{"location":"images/docker-swag/#updating-configs","title":"Updating configs","text":"<ul> <li>This container creates a number of configs for nginx, proxy samples, etc.</li> <li>Config updates are noted in the changelog but not automatically applied to your files.</li> <li>If you have modified a file with noted changes in the changelog:</li> <li>Keep your existing configs as is (not broken, don't fix)</li> <li>Review our repository commits and apply the new changes yourself</li> <li>Delete the modified config file with listed updates, restart the container, reapply your changes</li> <li>If you have NOT modified a file with noted changes in the changelog:</li> <li>Delete the config file with listed updates, restart the container</li> <li>Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master</li> <li>Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.</li> <li>You can check the new sample and adjust your active config as needed.</li> </ul>"},{"location":"images/docker-swag/#migration-from-the-old-linuxserverletsencrypt-image","title":"Migration from the old <code>linuxserver/letsencrypt</code> image","text":"<p>Please follow the instructions on this blog post.</p>"},{"location":"images/docker-swag/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-swag/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n swag:\n image: lscr.io/linuxserver/swag:latest\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - URL=yourdomain.url\n - VALIDATION=http\n - SUBDOMAINS=www, #optional\n - CERTPROVIDER= #optional\n - DNSPLUGIN=cloudflare #optional\n - PROPAGATION= #optional\n - EMAIL= #optional\n - ONLY_SUBDOMAINS=false #optional\n - EXTRA_DOMAINS= #optional\n - STAGING=false #optional\n volumes:\n - /path/to/swag/config:/config\n ports:\n - 443:443\n - 80:80 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-swag/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e URL=yourdomain.url \\\n -e VALIDATION=http \\\n -e SUBDOMAINS=www, `#optional` \\\n -e CERTPROVIDER= `#optional` \\\n -e DNSPLUGIN=cloudflare `#optional` \\\n -e PROPAGATION= `#optional` \\\n -e EMAIL= `#optional` \\\n -e ONLY_SUBDOMAINS=false `#optional` \\\n -e EXTRA_DOMAINS= `#optional` \\\n -e STAGING=false `#optional` \\\n -p 443:443 \\\n -p 80:80 `#optional` \\\n -v /path/to/swag/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag:latest\n</code></pre>"},{"location":"images/docker-swag/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-swag/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>443</code> Https port <code>80</code> Http port (required for http validation and http -&gt; https redirect)"},{"location":"images/docker-swag/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>URL=yourdomain.url</code> Top url you have control over (<code>customdomain.com</code> if you own it, or <code>customsubdomain.ddnsprovider.com</code> if dynamic dns). <code>VALIDATION=http</code> Certbot validation method to use, options are <code>http</code> or <code>dns</code> (<code>dns</code> method also requires <code>DNSPLUGIN</code> variable set). <code>SUBDOMAINS=www,</code> Subdomains you'd like the cert to cover (comma separated, no spaces) ie. <code>www,ftp,cloud</code>. For a wildcard cert, set this exactly to <code>wildcard</code> (wildcard cert is available via <code>dns</code> validation only) <code>CERTPROVIDER=</code> Optionally define the cert provider. Set to <code>zerossl</code> for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in <code>EMAIL</code> env var). Otherwise defaults to Let's Encrypt. <code>DNSPLUGIN=cloudflare</code> Required if <code>VALIDATION</code> is set to <code>dns</code>. Options are <code>acmedns</code>, <code>aliyun</code>, <code>azure</code>, <code>bunny</code>, <code>cloudflare</code>, <code>cpanel</code>, <code>desec</code>, <code>digitalocean</code>, <code>directadmin</code>, <code>dnsimple</code>, <code>dnsmadeeasy</code>, <code>dnspod</code>, <code>do</code>, <code>domeneshop</code>, <code>dreamhost</code>, <code>duckdns</code>, <code>dynudns</code>, <code>freedns</code>, <code>gandi</code>, <code>gehirn</code>, <code>glesys</code>, <code>godaddy</code>, <code>google</code>, <code>google-domains</code>, <code>he</code>, <code>hetzner</code>, <code>infomaniak</code>, <code>inwx</code>, <code>ionos</code>, <code>linode</code>, <code>loopia</code>, <code>luadns</code>, <code>namecheap</code>, <code>netcup</code>, <code>njalla</code>, <code>nsone</code>, <code>ovh</code>, <code>porkbun</code>, <code>rfc2136</code>, <code>route53</code>, <code>sakuracloud</code>, <code>standalone</code>, <code>transip</code>, and <code>vultr</code>. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under <code>/config/dns-conf</code>. <code>PROPAGATION=</code> Optionally override (in seconds) the default propagation time for the dns plugins. <code>EMAIL=</code> Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). <code>ONLY_SUBDOMAINS=false</code> If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to <code>true</code> <code>EXTRA_DOMAINS=</code> Additional fully qualified domain names (comma separated, no spaces) ie. <code>extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org</code> <code>STAGING=false</code> Set to <code>true</code> to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes."},{"location":"images/docker-swag/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-swag/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-swag/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-swag/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-swag/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-swag/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-swag/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-swag/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it swag /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f swag\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/swag:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-swag/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-swag/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull swag\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d swag\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-swag/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/swag:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop swag\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm swag\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-swag/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-swag/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-swag.git\ncd docker-swag\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/swag:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-swag/#versions","title":"Versions","text":"<ul> <li>23.03.24: - Fix perms on the generated <code>priv-fullchain-bundle.pem</code>.</li> <li>14.03.24: - Existing users should update: authelia-location.conf, authelia-server.conf - Update Authelia conf samples with support for 4.38.</li> <li>11.03.24: - Restore support for DynuDNS using <code>certbot-dns-dynudns</code>.</li> <li>06.03.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>04.03.24: - Remove <code>stream.conf</code> inside the container to allow users to include their own block in <code>nginx.conf</code>.</li> <li>23.01.24: - Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate.</li> <li>01.01.24: - Add GleSYS DNS plugin.</li> <li>11.12.23: - Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins.</li> <li>30.11.23: - Existing users should update: site-confs/default.conf - Fix index.php being downloaded on 404.</li> <li>23.11.23: - Run certbot as root to allow fix http validation.</li> <li>01.10.23: - Fix \"unrecognized arguments\" issue in DirectAdmin DNS plugin.</li> <li>28.08.23: - Add Namecheap DNS plugin.</li> <li>12.08.23: - Add FreeDNS plugin. Detect certbot DNS authenticators using CLI.</li> <li>07.08.23: - Add Bunny DNS Configuration.</li> <li>27.07.23: - Added support for dreamhost validation.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>27.04.23: - Existing users should update: authelia-location.conf, authelia-server.conf, authentik-location.conf, authentik-server.conf - Simplify auth configs and fix Set-Cookie header bug.</li> <li>13.04.23: - Existing users should update: nginx.conf, authelia-location.conf, authentik-location.conf, and site-confs/default.conf - Move ssl.conf include to default.conf. Remove Authorization headers in authelia. Sort proxy_set_header in authelia and authentik.</li> <li>25.03.23: - Fix renewal post hook.</li> <li>10.03.23: - Cleanup unused csr and keys folders. See certbot 2.3.0 release notes.</li> <li>09.03.23: - Add Google Domains DNS support, <code>google-domains</code>.</li> <li>02.03.23: - Set permissions on crontabs during init.</li> <li>09.02.23: - Existing users should update: proxy.conf, authelia-location.conf and authelia-server.conf - Add Authentik configs, update Authelia configs.</li> <li>06.02.23: - Add porkbun support back in.</li> <li>21.01.23: - Unpin certbot version (allow certbot 2.x). !!BREAKING CHANGE!! We are temporarily removing the certbot porkbun plugin until a new version is released that is compatible with certbot 2.x.</li> <li>20.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>16.01.23: - Remove nchan module because it keeps causing crashes.</li> <li>08.12.22: - Revamp certbot init.</li> <li>03.12.22: - Remove defunct cloudxns plugin.</li> <li>22.11.22: - Pin acme to the same version as certbot.</li> <li>22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves.</li> <li>05.11.22: - Update acmedns plugin handling.</li> <li>06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic.</li> <li>05.10.22: - Use certbot file hooks instead of command line hooks</li> <li>04.10.22: - Add godaddy and porkbun dns plugins.</li> <li>03.10.22: - Add default_server back to default site conf's https listen.</li> <li>22.09.22: - Added support for DO DNS validation.</li> <li>22.09.22: - Added certbot-dns-acmedns for DNS01 validation.</li> <li>20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>10.08.22: - Added support for Dynu DNS validation.</li> <li>18.05.22: - Added support for Azure DNS validation.</li> <li>09.04.22: - Added certbot-dns-loopia for DNS01 validation.</li> <li>05.04.22: - Added support for standalone DNS validation.</li> <li>28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config</li> <li>09.01.22: - Added a fail2ban jail for nginx unauthorized</li> <li>21.12.21: - Fixed issue with iptables not working as expected</li> <li>30.11.21: - Move maxmind to a new mod</li> <li>22.11.21: - Added support for Infomaniak DNS for certificate generation.</li> <li>20.11.21: - Added support for dnspod validation.</li> <li>15.11.21: - Added support for deSEC DNS for wildcard certificate generation.</li> <li>26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus</li> <li>23.10.21: - Fix Hurricane Electric (HE) DNS validation.</li> <li>12.10.21: - Fix deprecated LE root cert check to fix failures when using <code>STAGING=true</code>, and failures in revoking.</li> <li>06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps.</li> <li>01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration</li> <li>19.09.21: - Add an optional header to opt out of Google FLoC in <code>ssl.conf</code>.</li> <li>17.09.21: - Mark <code>SUBDOMAINS</code> var as optional.</li> <li>01.08.21: - Add support for ionos dns validation.</li> <li>15.07.21: - Fix libmaxminddb issue due to upstream change.</li> <li>07.07.21: - Rebase to alpine 3.14.</li> <li>24.06.21: - Update default nginx conf folder.</li> <li>28.05.21: - Existing users should update: authelia-server.conf - Use <code>resolver.conf</code> and patch for <code>CVE-2021-32637</code>.</li> <li>20.05.21: - Modify resolver.conf generation to detect and ignore ipv6.</li> <li>14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for <code>dhparams.pem</code> per RFC7919. Added <code>worker_processes.conf</code>, which sets the number of nginx workers, and <code>resolver.conf</code>, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later.</li> <li>21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method.</li> <li>12.04.21: - Add php7-gmp and php7-pecl-mailparse.</li> <li>12.04.21: - Add support for vultr dns validation.</li> <li>14.03.21: - Add support for directadmin dns validation.</li> <li>12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds.</li> <li>10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users.</li> <li>09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).</li> <li>26.01.21: - Add support for hetzner dns validation.</li> <li>20.01.21: - Add check for ZeroSSL EAB retrieval.</li> <li>08.01.21: - Add support for getting certs from ZeroSSL via optional <code>CERTPROVIDER</code> env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide <code>donoteditthisfile.conf</code> because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled.</li> <li>03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting</li> <li>10.12.20: - Add support for njalla dns validation</li> <li>09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation.</li> <li>01.11.20: - Add support for netcup dns validation</li> <li>29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy.</li> <li>04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering.</li> <li>20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme.</li> <li>08.09.20: - Add php7-xsl.</li> <li>01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs.</li> <li>03.08.20: - Initial release.</li> </ul>"},{"location":"images/docker-synclounge/","title":"synclounge","text":""},{"location":"images/docker-synclounge/#linuxserversynclounge","title":"linuxserver/synclounge","text":"<p>Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.</p> <p></p>"},{"location":"images/docker-synclounge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/synclounge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-synclounge/#application-setup","title":"Application Setup","text":"<p>The web app and the server are both accessible at <code>http://SERVERIP:8088</code>.</p> <p>Note: It is recommended to use <code>http</code> as the external proto with a reverse proxy due to <code>https</code> not working with external plex clients.</p>"},{"location":"images/docker-synclounge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-synclounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n synclounge:\n image: lscr.io/linuxserver/synclounge:latest\n container_name: synclounge\n environment:\n - AUTH_LIST=plexuser1,plexuser2,email1,machineid1 #optional\n ports:\n - 8088:8088\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-synclounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=synclounge \\\n -e AUTH_LIST=plexuser1,plexuser2,email1,machineid1 `#optional` \\\n -p 8088:8088 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/synclounge:latest\n</code></pre>"},{"location":"images/docker-synclounge/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-synclounge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8088</code> Web app and server port"},{"location":"images/docker-synclounge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>AUTH_LIST=plexuser1,plexuser2,email1,machineid1</code> If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces."},{"location":"images/docker-synclounge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-synclounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-synclounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-synclounge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-synclounge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-synclounge/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it synclounge /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f synclounge\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' synclounge\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/synclounge:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-synclounge/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-synclounge/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull synclounge\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d synclounge\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-synclounge/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/synclounge:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop synclounge\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm synclounge\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-synclounge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-synclounge/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-synclounge.git\ncd docker-synclounge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/synclounge:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-synclounge/#versions","title":"Versions","text":"<ul> <li>26.08.23: - Rebase to Alpine 3.19. Remove deprecated <code>AUTOJOIN_ENABLED</code> &amp; <code>AUTOJOIN_ROOM</code> options.</li> <li>26.08.23: - Rebase to Alpine 3.18.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>29.11.22: - Rebase to alpine 3.17, upgrade to s6v3.</li> <li>19.09.22: - Rebase to alpine 3.15.</li> <li>12.02.21: - Fix optional dependency builds in aarch64 image.</li> <li>12.02.21: - Rebasing to alpine 3.13.</li> <li>28.10.20: - Update to v4. Env vars <code>EXTERNAL_URL</code>, <code>EXTERNAL_SERVER_PORT</code> and <code>AUTOJOIN_PASSWORD</code> are deprecated and no longer have any effect. Env vars <code>AUTOJOIN_ENABLED</code> and <code>AUTOJOIN_ROOM</code> are still working but will be removed in the future in favor of synclounge's built-in var <code>autojoin__room</code>. If you are reverse proxying, do not forget to update your proxy settings (here and here) as the server port and addresses are changed.</li> <li>11.10.20: - Pin builds to upstream commit <code>6aecc9bd</code> while evaluating the breaking changes upstream.</li> <li>27.09.20: - Updating the external repo endpoint.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>11.05.20: - Initial Release.</li> </ul>"},{"location":"images/docker-syncthing/","title":"syncthing","text":""},{"location":"images/docker-syncthing/#linuxserversyncthing","title":"linuxserver/syncthing","text":"<p>Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.</p> <p></p>"},{"location":"images/docker-syncthing/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/syncthing:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-syncthing/#application-setup","title":"Application Setup","text":"<p>**Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to <code>Actions -&gt; Settings -&gt; set user/password</code> for the webUI.</p>"},{"location":"images/docker-syncthing/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-syncthing/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n syncthing:\n image: lscr.io/linuxserver/syncthing:latest\n container_name: syncthing\n hostname: syncthing #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/syncthing/config:/config\n - /path/to/data1:/data1\n - /path/to/data2:/data2\n ports:\n - 8384:8384\n - 22000:22000/tcp\n - 22000:22000/udp\n - 21027:21027/udp\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-syncthing/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=syncthing \\\n --hostname=syncthing `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8384:8384 \\\n -p 22000:22000/tcp \\\n -p 22000:22000/udp \\\n -p 21027:21027/udp \\\n -v /path/to/syncthing/config:/config \\\n -v /path/to/data1:/data1 \\\n -v /path/to/data2:/data2 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/syncthing:latest\n</code></pre>"},{"location":"images/docker-syncthing/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-syncthing/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8384</code> Application WebUI <code>22000/tcp</code> Listening port (TCP) <code>22000/udp</code> Listening port (UDP) <code>21027/udp</code> Protocol discovery"},{"location":"images/docker-syncthing/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-syncthing/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Configuration files. <code>/data1</code> Data1 <code>/data2</code> Data2"},{"location":"images/docker-syncthing/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--hostname=</code> Optionally the hostname can be defined."},{"location":"images/docker-syncthing/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-syncthing/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-syncthing/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-syncthing/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-syncthing/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it syncthing /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f syncthing\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syncthing\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syncthing:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-syncthing/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-syncthing/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull syncthing\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d syncthing\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-syncthing/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/syncthing:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop syncthing\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm syncthing\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-syncthing/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-syncthing/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-syncthing.git\ncd docker-syncthing\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/syncthing:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-syncthing/#versions","title":"Versions","text":"<ul> <li>05.03.24: - Rebase to Alpine 3.19.</li> <li>05.09.23: - Rebase to Alpine 3.18.</li> <li>01.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>17.08.22: - Build on alpine 3.16 for go 1.18).</li> <li>03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18).</li> <li>05.10.21: - Rebase to alpine 3.14.</li> <li>12.05.21: - Remove sysctl parameter again</li> <li>03.05.21: - Raise maximum UDP buffer size.</li> <li>03.05.21: - Add port mapping for 22000/udp.</li> <li>29.01.21: - Deprecate <code>UMASK_SET</code> in favor of UMASK in baseimage, see above for more information.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>05.03.19: - Update Build process for v1.1.0 release.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>16.01.19: - Add pipeline logic and multi arch.</li> <li>30.07.18: - Rebase to alpine 3.8 and use buildstage.</li> <li>13.12.17: - Rebase to alpine 3.7.</li> <li>25.10.17: - Add env for manual setting of umask.</li> <li>29.07.17: - Simplify build structure as symlinks failing on &gt; 0.14.32</li> <li>28.05.17: - Rebase to alpine 3.6.</li> <li>08.02.17: - Rebase to alpine 3.5.</li> <li>01.11.16: - Switch to compiling latest version from git source.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Fix umask.</li> <li>09.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>11.08.16: - Rebase to alpine linux.</li> <li>18.12.15: - Initial testing / release (IronicBadger)</li> <li>24.09.15: - Inital dev complete (Lonix)</li> </ul>"},{"location":"images/docker-syslog-ng/","title":"syslog-ng","text":""},{"location":"images/docker-syslog-ng/#linuxserversyslog-ng","title":"linuxserver/syslog-ng","text":"<p>syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.</p> <p></p>"},{"location":"images/docker-syslog-ng/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/syslog-ng:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-syslog-ng/#application-setup","title":"Application Setup","text":"<p>Edit <code>/config/syslog-ng.conf</code> to configure your logging sources and destinations.</p> <p>The application pid, control file, etc. are all kept in /config so when using tools such as <code>syslog-ng-ctl</code> you need to specify the path e.g. <code>syslog-ng-ctl reload -c /config/syslog-ng.ctl</code></p> <p>More info at syslog-ng.</p>"},{"location":"images/docker-syslog-ng/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-syslog-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n syslog-ng:\n image: lscr.io/linuxserver/syslog-ng:latest\n container_name: syslog-ng\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/syslog-ng/config:/config\n - /path/to/log:/var/log #optional\n ports:\n - 514:5514/udp\n - 601:6601/tcp\n - 6514:6514/tcp\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-syslog-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=syslog-ng \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 514:5514/udp \\\n -p 601:6601/tcp \\\n -p 6514:6514/tcp \\\n -v /path/to/syslog-ng/config:/config \\\n -v /path/to/log:/var/log `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/syslog-ng:latest\n</code></pre>"},{"location":"images/docker-syslog-ng/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-syslog-ng/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>5514/udp</code> Syslog UDP <code>6601/tcp</code> Syslog TCP <code>6514/tcp</code> Syslog TLS"},{"location":"images/docker-syslog-ng/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-syslog-ng/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Stores config and application files <code>/var/log</code> Stores logs collected by the syslog-ng service"},{"location":"images/docker-syslog-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-syslog-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-syslog-ng/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-syslog-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-syslog-ng/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-syslog-ng/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it syslog-ng /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f syslog-ng\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syslog-ng\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syslog-ng:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-syslog-ng/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-syslog-ng/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull syslog-ng\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d syslog-ng\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-syslog-ng/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/syslog-ng:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop syslog-ng\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm syslog-ng\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-syslog-ng/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-syslog-ng/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-syslog-ng.git\ncd docker-syslog-ng\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/syslog-ng:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-syslog-ng/#versions","title":"Versions","text":"<ul> <li>31.01.24: - Rebase to Alpine 3.19.</li> <li>11.06.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>10.01.23: - Add paho-mqtt-c library as required by the syslog-ng documentation</li> <li>30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support.</li> <li>01.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>18.12.21: - Rebase to Alpine 3.15.</li> <li>01.07.21: - Rebase to Alpine 3.14.</li> <li>26.05.21: - Initial release.</li> </ul>"},{"location":"images/docker-tautulli/","title":"tautulli","text":""},{"location":"images/docker-tautulli/#linuxservertautulli","title":"linuxserver/tautulli","text":"<p>Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.</p> <p></p>"},{"location":"images/docker-tautulli/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/tautulli:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-tautulli/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable Tautulli releases develop \u2705 Built at head of Tautulli nightly branch"},{"location":"images/docker-tautulli/#application-setup","title":"Application Setup","text":"<p>Access the webui at <code>&lt;your-ip&gt;:8181</code>, for more information check out Tautulli. To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under <code>Plex Media Server</code>, turn on <code>Show Advanced</code> and set the <code>Logs Folder</code> to the folder you mapped.</p>"},{"location":"images/docker-tautulli/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-tautulli/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n tautulli:\n image: lscr.io/linuxserver/tautulli:latest\n container_name: tautulli\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/tautulli/config:/config\n ports:\n - 8181:8181\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-tautulli/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=tautulli \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8181:8181 \\\n -v /path/to/tautulli/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/tautulli:latest\n</code></pre>"},{"location":"images/docker-tautulli/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-tautulli/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8181</code> WebUI"},{"location":"images/docker-tautulli/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-tautulli/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-tautulli/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tautulli/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-tautulli/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-tautulli/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-tautulli/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-tautulli/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it tautulli /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f tautulli\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tautulli\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tautulli:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-tautulli/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-tautulli/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull tautulli\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d tautulli\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-tautulli/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/tautulli:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop tautulli\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm tautulli\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-tautulli/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-tautulli/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-tautulli.git\ncd docker-tautulli\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/tautulli:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-tautulli/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>26.08.23: - Rebase to Alpine 3.18.</li> <li>22.06.23: - Revert master branch to Alpine 3.17 due to issues with Python 3.11.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>15.12.22: - Rebase master branch to Alpine 3.17.</li> <li>04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.</li> <li>10.01.22: - Rebase to Alpine 3.15.</li> <li>11.07.21: - Add curl package.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>11.07.20: - Add py3-openssl.</li> <li>05.06.20: - Rebasing to alpine 3.12. Rework to python3.</li> <li>12.04.20: - Added mock from pip and donate links.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>26.01.19: - Add pipeline logic and multi arch.</li> <li>23.10.18: - Update plex logs info in readm.</li> <li>16.08.18: - Rebase to alpine 3.8.</li> <li>10.03.18: - Rebrand to tautulli.</li> <li>12.12.17: - Rebase to alpine 3.7.</li> <li>21.07.17: - Internal git pull instead of at runtime.</li> <li>12.07.17: - Add inspect commands to README, move to jenkins build and push.</li> <li>25.05.17: - Rebase to alpine 3.6.</li> <li>20.04.17: - Add pycryptodomex pip package.</li> <li>07.02.17: - Rebase to alpine 3.5.</li> <li>09.09.16: - Add layer badges to README.</li> <li>27.08.16: - Add badges to README.</li> <li>08.08.16: - Rebase to alpine linux.</li> <li>16.07.15: - Inital Release.</li> </ul>"},{"location":"images/docker-thelounge/","title":"thelounge","text":""},{"location":"images/docker-thelounge/#linuxserverthelounge","title":"linuxserver/thelounge","text":"<p>Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.</p> <p></p>"},{"location":"images/docker-thelounge/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/thelounge:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-thelounge/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases. next \u2705 Next Pre-Releases. nightly \u2705 Nightly images from commits in master."},{"location":"images/docker-thelounge/#application-setup","title":"Application Setup","text":"<ul> <li> <p>When the application first runs, it will populate its /config</p> </li> <li> <p>Stop the container</p> </li> <li> <p>Now from the host, edit <code>/config/config.js</code>, wherever you've mapped it</p> </li> <li> <p>In most cases you want the value <code>public: false</code> to allow named users only</p> </li> <li> <p>Setting the two prefetch values to true improves usability, but uses more storage</p> </li> <li> <p>Once you have the configuration you want, save it and start the container again</p> </li> <li> <p>For each user, run the command</p> </li> <li> <p><code>docker exec -it thelounge s6-setuidgid abc thelounge add &lt;user&gt;</code></p> </li> <li> <p>You will be prompted to enter a password that will not be echoed.</p> </li> <li> <p>Saving logs to disk is the default, this consumes more space but allows scrollback.</p> </li> <li> <p>To log in to the application, browse to <code>http://&lt;hostip&gt;:9000</code></p> </li> <li> <p>You should now be prompted for a username and password on the webinterface.</p> </li> <li> <p>Once logged in, you can add an IRC network. Some defaults are preset for Freenode</p> </li> </ul>"},{"location":"images/docker-thelounge/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-thelounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n thelounge:\n image: lscr.io/linuxserver/thelounge:latest\n container_name: thelounge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/thelounge/config:/config\n ports:\n - 9000:9000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-thelounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=thelounge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 9000:9000 \\\n -v /path/to/thelounge/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/thelounge:latest\n</code></pre>"},{"location":"images/docker-thelounge/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-thelounge/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9000</code> Application WebUI"},{"location":"images/docker-thelounge/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-thelounge/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-thelounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-thelounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-thelounge/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-thelounge/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-thelounge/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-thelounge/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it thelounge /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f thelounge\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' thelounge\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/thelounge:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-thelounge/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-thelounge/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull thelounge\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d thelounge\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-thelounge/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/thelounge:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop thelounge\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm thelounge\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-thelounge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-thelounge/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-thelounge.git\ncd docker-thelounge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/thelounge:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-thelounge/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>18.12.22: - Rebasing master to alpine 3.17.</li> <li>24.10.22: - Fix sqlite3 build.</li> <li>12.04.22: - Install from source using yarn.</li> <li>11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>02.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>15.05.19: - Update Arm variant images to build sqlite3 module.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>25.08.18: - Use global install, simplifies adding users.</li> <li>20.08.18: - Rebase to alpine 3.8.</li> <li>06.01.18: - Rebase to alpine 3.7.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>06.02.17: - Rebase to alpine 3.5.</li> <li>14.10.16: - Bump to pickup 2.10 release.</li> <li>14.10.16: - Add version layer information.</li> <li>11.09.16: - Add layer badges to README.</li> <li>31.08.16: - Initial Release.</li> </ul>"},{"location":"images/docker-transmission/","title":"transmission","text":""},{"location":"images/docker-transmission/#linuxservertransmission","title":"linuxserver/transmission","text":"<p>Transmission is designed for easy, powerful use. Transmission has the features you want from a BitTorrent client: encryption, a web interface, peer exchange, magnet links, DHT, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.</p> <p></p>"},{"location":"images/docker-transmission/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/transmission:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-transmission/#application-setup","title":"Application Setup","text":"<p>Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved.</p>"},{"location":"images/docker-transmission/#securing-the-webui-with-a-usernamepassword","title":"Securing the webui with a username/password.","text":"<p>Use the <code>USER</code> and <code>PASS</code> variables in docker run/create/compose to set authentication. Do not manually edit the <code>settings.json</code> to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.</p>"},{"location":"images/docker-transmission/#updating-blocklists-automatically","title":"Updating Blocklists Automatically","text":"<p>This requires <code>\"blocklist-enabled\": true,</code> to be set. By setting this to true, it is assumed you have also populated <code>blocklist-url</code> with a valid block list.</p> <p>The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon.</p> <p>The automatic update will run once a day at 3am local server time.</p>"},{"location":"images/docker-transmission/#using-whitelist","title":"Using whitelist","text":"<p>Use <code>WHITELIST</code> to enable a list of ip as whitelist. This enable support for <code>rpc-whitelist</code>. When <code>WHITELIST</code> is empty support for whitelist is disabled.</p> <p>Use <code>HOST_WHITELIST</code> to enable an list of dns names as host-whitelist. This enable support for <code>rpc-host-whitelist</code>. When <code>HOST_WHITELIST</code> is empty support for host-whitelist is disabled.</p>"},{"location":"images/docker-transmission/#use-alternative-transmission-torrent-ports","title":"Use alternative Transmission torrent ports","text":"<p>Use <code>PEERPORT</code> to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.</p>"},{"location":"images/docker-transmission/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-transmission/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n transmission:\n image: lscr.io/linuxserver/transmission:latest\n container_name: transmission\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - TRANSMISSION_WEB_HOME= #optional\n - USER= #optional\n - PASS= #optional\n - WHITELIST= #optional\n - PEERPORT= #optional\n - HOST_WHITELIST= #optional\n volumes:\n - /path/to/data:/config\n - /path/to/downloads:/downloads\n - /path/to/watch/folder:/watch\n ports:\n - 9091:9091\n - 51413:51413\n - 51413:51413/udp\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-transmission/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=transmission \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e TRANSMISSION_WEB_HOME= `#optional` \\\n -e USER= `#optional` \\\n -e PASS= `#optional` \\\n -e WHITELIST= `#optional` \\\n -e PEERPORT= `#optional` \\\n -e HOST_WHITELIST= `#optional` \\\n -p 9091:9091 \\\n -p 51413:51413 \\\n -p 51413:51413/udp \\\n -v /path/to/data:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/watch/folder:/watch \\\n --restart unless-stopped \\\n lscr.io/linuxserver/transmission:latest\n</code></pre>"},{"location":"images/docker-transmission/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-transmission/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9091</code> WebUI <code>51413</code> Torrent Port TCP <code>51413/udp</code> Torrent Port UDP"},{"location":"images/docker-transmission/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>TRANSMISSION_WEB_HOME=</code> Specify the path to an alternative UI folder. <code>USER=</code> Specify an optional username for the interface <code>PASS=</code> Specify an optional password for the interface <code>WHITELIST=</code> Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting. <code>PEERPORT=</code> Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting. <code>HOST_WHITELIST=</code> Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting."},{"location":"images/docker-transmission/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where transmission should store config files and logs. <code>/downloads</code> Local path for downloads. <code>/watch</code> Watch folder for torrent files."},{"location":"images/docker-transmission/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-transmission/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-transmission/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-transmission/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-transmission/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-transmission/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it transmission /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f transmission\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' transmission\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/transmission:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-transmission/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-transmission/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull transmission\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d transmission\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-transmission/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/transmission:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop transmission\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm transmission\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-transmission/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-transmission/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-transmission.git\ncd docker-transmission\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/transmission:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-transmission/#versions","title":"Versions","text":"<ul> <li>07.10.23: - Install unrar from linuxserver repo.</li> <li>10.08.23: - Bump unrar to 6.2.10.</li> <li>10.06.23: - Bump unrar to 6.2.8, install transmission-extra.</li> <li>25.05.23: - Deprecate armhf.</li> <li>14.05.23: - Explicitly install transmission-remote.</li> <li>02.03.23: - Add cron init to allow user customizable crontabs.</li> <li>08.02.23: - Rebase to Alpine Edge to get access to most up to date builds of Transmission. Remove bundled 3rd party UI packages.</li> <li>05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package.</li> <li>02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>12.08.22: - Bump unrar to 6.1.7.</li> <li>03.04.22: - Add Transmissionic as a UI option.</li> <li>21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium</li> <li>09.07.21: - Wait for the transmission-daemon termination after a caught sigterm.</li> <li>06.03.21: - Add Flood for Transmission as a UI option.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>02.11.20: - Add ca-certificates package to allow connecting to https trackers.</li> <li>02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3.</li> <li>11.05.20: - Remove unnecessary chmod (remnant of previous change).</li> <li>28.04.20: - Use transmission-remote to update blocklist.</li> <li>30.03.20: - Internalize blocklist-update.sh.</li> <li>29.03.20: - Update auth info in readme.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>04.10.19: - Update package label.</li> <li>21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set.</li> <li>19.07.19: - Send SIGTERM in blocklist update to properly close pid.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils.</li> <li>22.02.19: - Catch term and clean exit.</li> <li>07.02.19: - Add pipeline logic and multi arch.</li> <li>15.08.18: - Rebase to alpine linux 3.8.</li> <li>12.02.18: - Pull transmission from edge repo.</li> <li>10.01.18: - Rebase to alpine linux 3.7.</li> <li>25.07.17: - Add rsync package.</li> <li>27.05.17: - Rebase to alpine linux 3.6.</li> <li>06.02.17: - Rebase to alpine linux 3.5.</li> <li>15.01.17: - Add p7zip, tar, unrar, and unzip packages.</li> <li>16.10.16: - Blocklist autoupdate with optional authentication.</li> <li>14.10.16: - Add version layer informationE.</li> <li>23.09.16: - Add information about securing the webui to README.</li> <li>21.09.16: - Add curl package.</li> <li>09.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>09.08.16: - Rebase to alpine linux.</li> <li>06.12.15: - Separate mapping for watch folder.</li> <li>16.11.15: - Initial Release.</li> </ul>"},{"location":"images/docker-tvheadend/","title":"tvheadend","text":""},{"location":"images/docker-tvheadend/#linuxservertvheadend","title":"linuxserver/tvheadend","text":"<p>Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT&gt;IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT&gt;IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).</p> <p></p>"},{"location":"images/docker-tvheadend/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/tvheadend:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-tvheadend/#application-setup","title":"Application Setup","text":"<p>The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.</p> <p>Stable</p> <p>First thing to do is to go to Configuration --&gt; DVB Inputs --&gt; TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services.</p> <p>After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --&gt; Channel/EPG.</p> <p>Latest</p> <p>The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --&gt; General --&gt; Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend.</p> <p>Configuring XMLTV grabber</p> <p>To configure the XMLTV grabber, first check if your grabber is listed in Configuration --&gt; Channel/EPG --&gt; EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.</p> <pre><code>docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure\n</code></pre> <p>Now follow the on-screen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber.</p> <p>If you already have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it.</p> <p>Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --&gt; Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field.</p> <pre><code>/usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\"\n</code></pre> <p>Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file.</p> <p>FFmpeg</p> <p>FFmpeg is installed in /usr/bin/ in case you need to use it with pipe.</p> <p>EPG XML file</p> <p>If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --&gt; Channel/EPG --&gt; EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml.</p> <p>For advanced setup of tvheadend, go to [Tvheadend][appurl]</p> <p>Picons</p> <p>We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --&gt; General --&gt; Base. You need to enable minimum advanced view level to see the picons options.</p>"},{"location":"images/docker-tvheadend/#additional-runtime-parameters","title":"Additional runtime parameters","text":"<p>In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.</p>"},{"location":"images/docker-tvheadend/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-tvheadend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n tvheadend:\n image: lscr.io/linuxserver/tvheadend:latest\n container_name: tvheadend\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - RUN_OPTS= #optional\n volumes:\n - /path/to/tvheadend/data:/config\n - /path/to/recordings:/recordings\n ports:\n - 9981:9981\n - 9982:9982\n devices:\n - /dev/dri:/dev/dri #optional\n - /dev/dvb:/dev/dvb #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-tvheadend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=tvheadend \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e RUN_OPTS= `#optional` \\\n -p 9981:9981 \\\n -p 9982:9982 \\\n -v /path/to/tvheadend/data:/config \\\n -v /path/to/recordings:/recordings \\\n --device /dev/dri:/dev/dri `#optional` \\\n --device /dev/dvb:/dev/dvb `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/tvheadend:latest\n</code></pre>"},{"location":"images/docker-tvheadend/#host-vs-bridge","title":"Host vs. Bridge","text":"<p>If you use IPTV, SAT&gt;IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of <code>239.255.255.250</code> and a UDP port of <code>1900</code> which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stability problems.</p>"},{"location":"images/docker-tvheadend/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-tvheadend/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>9981</code> WebUI <code>9982</code> HTSP server port."},{"location":"images/docker-tvheadend/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>RUN_OPTS=</code> Optionally specify additional arguments to be passed. See Additional runtime parameters."},{"location":"images/docker-tvheadend/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Where TVHeadend show store it's config files. <code>/recordings</code> Where you want the PVR to store recordings."},{"location":"images/docker-tvheadend/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). <code>/dev/dvb</code> Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out."},{"location":"images/docker-tvheadend/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tvheadend/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-tvheadend/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-tvheadend/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-tvheadend/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-tvheadend/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it tvheadend /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f tvheadend\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tvheadend\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tvheadend:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-tvheadend/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-tvheadend/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull tvheadend\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d tvheadend\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-tvheadend/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/tvheadend:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop tvheadend\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm tvheadend\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-tvheadend/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-tvheadend/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-tvheadend.git\ncd docker-tvheadend\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/tvheadend:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-tvheadend/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>16.10.23: - Add mesa-va-gallium package for AMD transcoding.</li> <li>20.09.23: - Add perl-json-xs package.</li> <li>18.05.23: - Install XMLTV from Alpine repos.</li> <li>18.05.23: - Rebase to Alpine 3.18.</li> <li>17.03.23: - Extract picons during build instead of init.</li> <li>23.02.23: - Rebase to Alpine 3.17, migrate to s6v3, drop armhf support.</li> <li>31.08.22: - Update sample env vars and how RUN_OPTS are handled.</li> <li>19.08.22: - Switch to new picons builder.</li> <li>16.04.22: - Added URL XMLTV grabber.</li> <li>05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv.</li> <li>11.05.21: - Added Intel iHD driver support.</li> <li>02.06.20: - Update to Alpine 3.12.</li> <li>27.12.19: - Add requests and perl-json-xs package.</li> <li>27.12.19: - Update to Alpine 3.11.</li> <li>02.10.19: - Improve permission fixing on render &amp; dvb devices.</li> <li>18.08.19: - Add AMD drivers.</li> <li>02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>01.03.19: - Bump xmltv to 0.6.1.</li> <li>28.02.19: - add perl-lwp-useragent-determined.</li> <li>17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.</li> <li>14.02.19: - Add picons path to config.</li> <li>15.01.19: - Add pipeline logic and multi arch.</li> <li>12.09.18: - Rebase to alpine 3.8 and use buildstage type build.</li> <li>21.04.18: - Add JSON::XS Perl package for grab_tv_huro.</li> <li>24.03.18: - Add dvbcsa package.</li> <li>04.03.18: - Use sourceforge master rather than mirror for xmltv.</li> <li>22.02.18: - Add lost libva-intel-driver.</li> <li>21.02.18: - Fix wrong version of iconv used.</li> <li>18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options.</li> <li>04.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>11.12.17: - Rebase to alpine 3.7, linting fixes.</li> <li>02.09.17: - Add codec dependencies.</li> <li>13.07.17: - Increase uniformity across all archs.</li> <li>08.07.17: - Update README with full path for comskip.</li> <li>02.07.17: - Move to one branch for all 4.2 releases.</li> <li>27.05.17: - Rebase to alpine 3.6.</li> <li>01.05.17: - Update to tvheadend 4.2.1 stable.</li> <li>18.04.17: - Use repo version of gnu-libiconv rather than compiling.</li> <li>09.04.17: - Chain cpanm installs in one block and use --installdeps.</li> <li>09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.</li> <li>07.02.17: - Add variable to add additional runtime paramters.</li> <li>05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs.</li> <li>14.11.16: - Add picons from picons.xyz to /picons folder and add info to README.</li> <li>22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README.</li> <li>18.09.16: - Update XMLTV to 0.5.68 and update README.</li> <li>10.09.16: - Add layer badges to README.</li> <li>05.09.16: - Initial Release.</li> </ul>"},{"location":"images/docker-ubooquity/","title":"ubooquity","text":""},{"location":"images/docker-ubooquity/#linuxserverubooquity","title":"linuxserver/ubooquity","text":"<p>Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.</p> <p></p>"},{"location":"images/docker-ubooquity/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/ubooquity:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-ubooquity/#application-setup","title":"Application Setup","text":"<p>IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below.</p> <p>Access the admin page at <code>http://&lt;your-ip&gt;:2203/ubooquity/admin</code> and set a password.</p> <p>Then you can access the webui at <code>http://&lt;your-ip&gt;:2202/ubooquity/</code></p> <p>This container will automatically scan your files at startup.</p>"},{"location":"images/docker-ubooquity/#maxmem","title":"MAXMEM","text":"<p>The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That\u2019s when you get <code>java.lang.OutOfMemoryError:</code> Java heap space errors.</p> <p>You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB )</p> <p>If no value is set it will default to 512MB.</p>"},{"location":"images/docker-ubooquity/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-ubooquity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n ubooquity:\n image: lscr.io/linuxserver/ubooquity:latest\n container_name: ubooquity\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MAXMEM= #optional\n volumes:\n - /path/to/ubooquity/data:/config\n - /path/to/books:/books\n - /path/to/comics:/comics\n - /path/to/raw/files:/files\n ports:\n - 2202:2202\n - 2203:2203\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-ubooquity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=ubooquity \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MAXMEM= `#optional` \\\n -p 2202:2202 \\\n -p 2203:2203 \\\n -v /path/to/ubooquity/data:/config \\\n -v /path/to/books:/books \\\n -v /path/to/comics:/comics \\\n -v /path/to/raw/files:/files \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ubooquity:latest\n</code></pre>"},{"location":"images/docker-ubooquity/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-ubooquity/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>2202</code> The library port. <code>2203</code> The admin port."},{"location":"images/docker-ubooquity/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MAXMEM=</code> To set the maximum memory. ( ex: set '1024' for 1GB )"},{"location":"images/docker-ubooquity/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Config files and database for ubooquity. <code>/books</code> Location of books. <code>/comics</code> Location of comics. <code>/files</code> Location of raw files."},{"location":"images/docker-ubooquity/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ubooquity/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-ubooquity/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-ubooquity/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-ubooquity/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-ubooquity/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it ubooquity /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f ubooquity\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ubooquity\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ubooquity:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-ubooquity/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-ubooquity/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull ubooquity\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d ubooquity\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ubooquity/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/ubooquity:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop ubooquity\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm ubooquity\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-ubooquity/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-ubooquity/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-ubooquity.git\ncd docker-ubooquity\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ubooquity:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-ubooquity/#versions","title":"Versions","text":"<ul> <li>20.03.24: - Rebase to Alpine 3.19.</li> <li>29.10.23: - Bump JRE to 17 to support v3.</li> <li>12.07.23: - Rebase to Alpine 3.18.</li> <li>04.07.23: - Deprecate armhf. As announced here</li> <li>05.03.23: - Rebase to Alpine 3.17.</li> <li>10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>28.01.19: - Add pipeline logic and multi arch.</li> <li>15.10.18: - Upgrade to Ubooquity 2.1.2.</li> <li>23.08.18: - Rebase to alpine 3.8.</li> <li>09.12.17: - Rebase to alpine 3.7.</li> <li>07.10.17: - Upgrade to Ubooquity 2.1.1.</li> <li>16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users.</li> <li>26.05.17: - Rebase to alpine 3.6.</li> <li>08.04.17: - Switch to java from 3.5 repo, fixes login crashes.</li> <li>06.02.17: - Rebase to alpine 3.5.</li> <li>06.12.16: - Initial Release.</li> </ul>"},{"location":"images/docker-unifi-network-application/","title":"unifi-network-application","text":""},{"location":"images/docker-unifi-network-application/#linuxserverunifi-network-application","title":"linuxserver/unifi-network-application","text":"<p>The Unifi-network-application software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.</p> <p></p>"},{"location":"images/docker-unifi-network-application/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/unifi-network-application:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-unifi-network-application/#application-setup","title":"Application Setup","text":"<p>After setup, the web UI is available at https://ip:8443. The application can be configured, or a backup restored, using the first run wizard.</p> <p>This container requires an external mongodb database instance.</p>"},{"location":"images/docker-unifi-network-application/#setting-up-your-external-database","title":"Setting Up Your External Database","text":"<p>Starting with version 8.1 of Unifi Network Application, mongodb 3.6 through 7.0 are supported.</p> <p>Make sure you pin your database image version and do not use <code>latest</code>, as mongodb does not support automatic upgrades between major versions.</p> <p>If you are using the official mongodb container, you can create your user using an <code>init-mongo.js</code> file with the following contents:</p> <pre><code>db.getSiblingDB(\"MONGO_DBNAME\").createUser({user: \"MONGO_USER\", pwd: \"MONGO_PASS\", roles: [{role: \"dbOwner\", db: \"MONGO_DBNAME\"}]});\ndb.getSiblingDB(\"MONGO_DBNAME_stat\").createUser({user: \"MONGO_USER\", pwd: \"MONGO_PASS\", roles: [{role: \"dbOwner\", db: \"MONGO_DBNAME_stat\"}]});\n</code></pre> <p>Being sure to replace the placeholders with the same values you supplied to the Unifi container, and mount it into your mongodb container.</p> <p>For example:</p> <pre><code> unifi-db:\n image: docker.io/mongo:&lt;version tag&gt;\n container_name: unifi-db\n volumes:\n - /path/to/data:/data/db\n - /path/to/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro\n restart: unless-stopped\n</code></pre> <p>Note that the init script method will only work on first run. If you start the mongodb container without an init script it will generate test data automatically and you will have to manually create your databases, or restart with a clean <code>/data/db</code> volume and an init script mounted.</p> <p>If you are using the init script method do not also set <code>MONGO_INITDB_ROOT_USERNAME</code>, <code>MONGO_INITDB_ROOT_PASSWORD</code>, or any other \"INITDB\" values as they will cause conflicts.</p> <p>You can also run the commands directly against the database using either <code>mongo</code> (&lt; 6.0) or <code>mongosh</code> (&gt;= 6.0).</p>"},{"location":"images/docker-unifi-network-application/#device-adoption","title":"Device Adoption","text":"<p>For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings &gt; System &gt; Advanced and set the Inform Host to a hostname or IP address accessible by your devices. Additionally the checkbox \"Override\" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).</p> <p>Note that you must use 8080:8080. If you MUST change the port, it must be changed on both sides and manually changed in your system.properties file. Otherwise, devices will initially communicate and then break after.</p> <p>Please note, Unifi change the location of this option every few releases so if it's not where it says, search for \"Inform\" or \"Inform Host\" in the settings.</p> <p>In order to manually adopt a device take these steps:</p> <pre><code>ssh ubnt@$AP-IP\nset-inform http://$address:8080/inform\n</code></pre> <p>The default device password is <code>ubnt</code>. <code>$address</code> is the IP address of the host you are running this container on and <code>$AP-IP</code> is the Access Point IP address.</p> <p>When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting \"DHCP Gateway IP\", under Settings &gt; Networks &gt; network_name, to a correct (and accessible) ip address.</p>"},{"location":"images/docker-unifi-network-application/#migration-from-unifi-controller","title":"Migration From Unifi-Controller","text":"<p>If you were using the <code>mongoless</code> tag for the Unifi Controller container, you can switch directly to the Unifi Network Application container without needing to perform any migration steps.</p> <p>You cannot perform an in-place upgrade from an existing Unifi-Controller container, you must run a backup and then a restore.</p> <p>The simplest migration approach is to take a full backup of your existing install, including history, from the Unifi-Controller web UI, then shut down the old container.</p> <p>You can then start up the new container with a clean <code>/config</code> mount (and a database container configured), and perform a restore using the setup wizard.</p>"},{"location":"images/docker-unifi-network-application/#strict-reverse-proxies","title":"Strict reverse proxies","text":"<p>This image uses a self-signed certificate by default. This naturally means the scheme is <code>https</code>. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.</p>"},{"location":"images/docker-unifi-network-application/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-unifi-network-application/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n unifi-network-application:\n image: lscr.io/linuxserver/unifi-network-application:latest\n container_name: unifi-network-application\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MONGO_USER=unifi\n - MONGO_PASS=\n - MONGO_HOST=unifi-db\n - MONGO_PORT=27017\n - MONGO_DBNAME=unifi\n - MEM_LIMIT=1024 #optional\n - MEM_STARTUP=1024 #optional\n - MONGO_TLS= #optional\n - MONGO_AUTHSOURCE= #optional\n volumes:\n - /path/to/unifi-network-application/data:/config\n ports:\n - 8443:8443\n - 3478:3478/udp\n - 10001:10001/udp\n - 8080:8080\n - 1900:1900/udp #optional\n - 8843:8843 #optional\n - 8880:8880 #optional\n - 6789:6789 #optional\n - 5514:5514/udp #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-unifi-network-application/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=unifi-network-application \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MONGO_USER=unifi \\\n -e MONGO_PASS= \\\n -e MONGO_HOST=unifi-db \\\n -e MONGO_PORT=27017 \\\n -e MONGO_DBNAME=unifi \\\n -e MEM_LIMIT=1024 `#optional` \\\n -e MEM_STARTUP=1024 `#optional` \\\n -e MONGO_TLS= `#optional` \\\n -e MONGO_AUTHSOURCE= `#optional` \\\n -p 8443:8443 \\\n -p 3478:3478/udp \\\n -p 10001:10001/udp \\\n -p 8080:8080 \\\n -p 1900:1900/udp `#optional` \\\n -p 8843:8843 `#optional` \\\n -p 8880:8880 `#optional` \\\n -p 6789:6789 `#optional` \\\n -p 5514:5514/udp `#optional` \\\n -v /path/to/unifi-network-application/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/unifi-network-application:latest\n</code></pre>"},{"location":"images/docker-unifi-network-application/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-unifi-network-application/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>8443</code> Unifi web admin port <code>3478/udp</code> Unifi STUN port <code>10001/udp</code> Required for AP discovery <code>8080</code> Required for device communication <code>1900/udp</code> Required for <code>Make controller discoverable on L2 network</code> option <code>8843</code> Unifi guest portal HTTPS redirect port <code>8880</code> Unifi guest portal HTTP redirect port <code>6789</code> For mobile throughput test <code>5514/udp</code> Remote syslog port"},{"location":"images/docker-unifi-network-application/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>MONGO_USER=unifi</code> Mongodb Username. Only evaluated on first run. Special characters must be url encoded. <code>MONGO_PASS=</code> Mongodb Password. Only evaluated on first run. Special characters must be url encoded. <code>MONGO_HOST=unifi-db</code> Mongodb Hostname. Only evaluated on first run. <code>MONGO_PORT=27017</code> Mongodb Port. Only evaluated on first run. <code>MONGO_DBNAME=unifi</code> Mongodb Database Name (stats DB is automatically suffixed with <code>_stat</code>). Only evaluated on first run. <code>MEM_LIMIT=1024</code> Optionally change the Java memory limit (in Megabytes). Set to <code>default</code> to reset to default <code>MEM_STARTUP=1024</code> Optionally change the Java initial/minimum memory (in Megabytes). Set to <code>default</code> to reset to default <code>MONGO_TLS=</code> Mongodb enable TLS. Only evaluated on first run. <code>MONGO_AUTHSOURCE=</code> Mongodb authSource. For Atlas set to <code>admin</code>.Defaults to <code>MONGO_DBNAME</code>.Only evaluated on first run."},{"location":"images/docker-unifi-network-application/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-unifi-network-application/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-unifi-network-application/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-unifi-network-application/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-unifi-network-application/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-unifi-network-application/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-unifi-network-application/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it unifi-network-application /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f unifi-network-application\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-network-application\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-network-application:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-unifi-network-application/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-unifi-network-application/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull unifi-network-application\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d unifi-network-application\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-unifi-network-application/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/unifi-network-application:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop unifi-network-application\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm unifi-network-application\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-unifi-network-application/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-unifi-network-application/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-unifi-network-application.git\ncd docker-unifi-network-application\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/unifi-network-application:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-unifi-network-application/#versions","title":"Versions","text":"<ul> <li>04.03.24: - Install from zip package instead of deb.</li> <li>17.10.23: - Add environment variables for TLS and authSource to support Atlas and new MongoDB versions.</li> <li>05.09.23: - Initial release.</li> </ul>"},{"location":"images/docker-unrar/","title":"unrar","text":"<p>The LinuxServer.io team brings you another container release featuring:</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings (PGID, PUID)</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>regular security updates</li> </ul> <p>Find us at:</p> <ul> <li>Blog - all the things you can do with our containers including How-To guides, opinions and much more!</li> <li>Discord - realtime support / chat with the community and the team.</li> <li>Discourse - post on our community forum.</li> <li>Fleet - an online web interface which displays all of our maintained images.</li> <li>GitHub - view the source for all of our repositories.</li> <li>Open Collective - please consider helping us by either donating or contributing to our budget</li> </ul>"},{"location":"images/docker-unrar/#linuxserverunrar","title":"linuxserver/unrar","text":""},{"location":"images/docker-unrar/#usage","title":"Usage","text":"<p>This image only contains the compiled unrar binaries for Alpine and Ubuntu, and is meant to be ingested by other images during build time. It is not for public consumption.</p> <p>The currently included binaries are as follows: * /usr/bin/unrar-alpine * /usr/bin/unrar-ubuntu</p>"},{"location":"images/docker-unrar/#versions","title":"Versions","text":"<ul> <li>29.02.24: - Bump to 7.0.7.</li> <li>07.01.24: - Bump to 6.2.12.</li> <li>11.08.23: - Initial release.</li> </ul>"},{"location":"images/docker-vscodium/","title":"vscodium","text":""},{"location":"images/docker-vscodium/#linuxservervscodium","title":"linuxserver/vscodium","text":"<p>VSCodium is a community-driven, freely-licensed binary distribution of Microsoft\u2019s editor VS Code.</p> <p></p>"},{"location":"images/docker-vscodium/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/vscodium:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-vscodium/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-vscodium/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-vscodium/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-vscodium/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-vscodium/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-vscodium/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-vscodium/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-vscodium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n vscodium:\n image: lscr.io/linuxserver/vscodium:latest\n container_name: vscodium\n cap_add:\n - IPC_LOCK\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-vscodium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=vscodium \\\n --cap-add=IPC_LOCK \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/vscodium:latest\n</code></pre>"},{"location":"images/docker-vscodium/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-vscodium/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> VSCodium desktop gui. <code>3001</code> HTTPS VSCodium desktop gui."},{"location":"images/docker-vscodium/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-vscodium/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-vscodium/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for electron applications to function properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. VSCodium runs in no-sandbox mode without it."},{"location":"images/docker-vscodium/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-vscodium/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-vscodium/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-vscodium/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-vscodium/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-vscodium/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it vscodium /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f vscodium\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' vscodium\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/vscodium:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-vscodium/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-vscodium/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull vscodium\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d vscodium\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-vscodium/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/vscodium:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop vscodium\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm vscodium\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-vscodium/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-vscodium/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-vscodium.git\ncd docker-vscodium\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/vscodium:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-vscodium/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.01.24: - Rebase to Debian Bookworm.</li> <li>17.01.24: - Update wrapper scripts to cleanup and launch properly.</li> <li>02.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-webcord/","title":"webcord","text":""},{"location":"images/docker-webcord/#linuxserverwebcord","title":"linuxserver/webcord","text":"<p>WebCord can be summarized as a pack of security and privacy hardenings, Discord features reimplementations, Electron / Chromium / Discord bugs workarounds, stylesheets, internal pages and wrapped https://discord.com page, designed to conform with ToS as much as it is possible (or hide the changes that might violate it from Discord's eyes).</p> <p></p>"},{"location":"images/docker-webcord/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/webcord:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-webcord/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-webcord/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-webcord/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-webcord/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-webcord/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-webcord/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-webcord/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-webcord/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n webcord:\n image: lscr.io/linuxserver/webcord:latest\n container_name: webcord\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-webcord/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=webcord \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webcord:latest\n</code></pre>"},{"location":"images/docker-webcord/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-webcord/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> WebCord desktop gui. <code>3001</code> WebCord desktop gui HTTPS."},{"location":"images/docker-webcord/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-webcord/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings."},{"location":"images/docker-webcord/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for electron applications to function properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-webcord/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-webcord/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-webcord/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-webcord/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-webcord/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it webcord /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f webcord\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webcord\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webcord:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-webcord/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-webcord/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull webcord\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d webcord\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webcord/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/webcord:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop webcord\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm webcord\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webcord/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-webcord/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-webcord.git\ncd docker-webcord\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webcord:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-webcord/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.01.24: - Rebase to Debian Bookworm.</li> <li>17.01.24: - Update bash wrappers to cleanup and detect seccomp.</li> <li>18.05.23: - Add fonts-noto-cjk for shrug support.</li> <li>12.05.23: - Add fonts-noto-color-emoji for better emoji support.</li> <li>09.05.23: - Bundle Chromium to provide browser for opening links, etc.</li> <li>21.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-webgrabplus/","title":"webgrabplus","text":""},{"location":"images/docker-webgrabplus/#linuxserverwebgrabplus","title":"linuxserver/webgrabplus","text":"<p>Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.</p> <p></p>"},{"location":"images/docker-webgrabplus/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/webgrabplus:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-webgrabplus/#application-setup","title":"Application Setup","text":"<p>To configure WebGrab+Plus follow the documentation</p> <p>Please note that depending on your host this container may not work with the <code>no-new-privileges=true</code> security-opt.</p> <p>Note that there are some things in the guide that does not apply to this container. Below you can find the changes.</p> <p>The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file!</p> <p>The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to.</p> <p>To adjust the scheduled cron job, you can apply our universal cron mod.</p>"},{"location":"images/docker-webgrabplus/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-webgrabplus/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n webgrabplus:\n image: lscr.io/linuxserver/webgrabplus:latest\n container_name: webgrabplus\n hostname: webgrabplus\n mac_address: 00:00:00:00:00:00\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/webgrabplus/config:/config\n - /path/to/data:/data\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-webgrabplus/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=webgrabplus \\\n --hostname=webgrabplus \\\n --mac-address=00:00:00:00:00:00 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/webgrabplus/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webgrabplus:latest\n</code></pre>"},{"location":"images/docker-webgrabplus/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-webgrabplus/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function"},{"location":"images/docker-webgrabplus/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-webgrabplus/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Where webgrabplus should store it's data files."},{"location":"images/docker-webgrabplus/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--hostname=</code> Set the hostname for the container for the license check. <code>--mac-address=</code> Set the mac_address for the container for the license check."},{"location":"images/docker-webgrabplus/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-webgrabplus/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-webgrabplus/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-webgrabplus/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-webgrabplus/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it webgrabplus /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f webgrabplus\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webgrabplus\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webgrabplus:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-webgrabplus/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-webgrabplus/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull webgrabplus\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d webgrabplus\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webgrabplus/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/webgrabplus:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop webgrabplus\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm webgrabplus\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webgrabplus/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-webgrabplus/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-webgrabplus.git\ncd docker-webgrabplus\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webgrabplus:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-webgrabplus/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>18.08.23: - Rebase to Alpine 3.18.</li> <li>16.08.23: - Update dotnet framework to 7.x.</li> <li>06.07.23: - Deprecate armhf. As announced here</li> <li>13.03.23: - Rebase to Alpine 3.17.</li> <li>23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6.</li> <li>29.04.22: - Add <code>hostname</code> and <code>mac_address</code> arguments that are needed for the license check to compose and cli samples.</li> <li>23.03.22: - Rebase to Alpine 3.15.</li> <li>23.03.22: - Update to use dotnet instead of mono.</li> <li>06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable).</li> <li>17.12.21: - Update to version 3.2.2 beta.</li> <li>05.08.21: - Update to version 3.2.1 beta.</li> <li>05.06.21: - Added mono-devel dependency.</li> <li>04.06.21: - Update to version 3.1.8 beta.</li> <li>22.03.21: - Update to version 3.1.7 beta.</li> <li>07.03.21: - Update to version 3.1.6 beta.</li> <li>29.01.21: - Update external version number to show as 3.1.5.</li> <li>24.01.21: - Update to version 3.1.5 beta.</li> <li>22.12.20: - Update to version 3.1.4 beta.</li> <li>12.10.20: - Fix version number in jenkinsfile.</li> <li>12.10.20: - Update to version 3.1.1 beta.</li> <li>22.06.20: - Add mono webrequest library.</li> <li>18.06.20: - Update to v3.1.0.</li> <li>29.03.20: - Update to v3.0.0. Changed to use wg3-cron file.</li> <li>28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>21.03.19: - Update to beta 2.1.7.</li> <li>19.02.19: - Add pipeline logic and multi arch.</li> <li>18.01.18: - Initial Release.</li> </ul>"},{"location":"images/docker-webtop/","title":"webtop","text":""},{"location":"images/docker-webtop/#linuxserverwebtop","title":"linuxserver/webtop","text":"<p>Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.</p> <p></p>"},{"location":"images/docker-webtop/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/webtop:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-webtop/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch debian-xfce \u2705 XFCE Debian alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch debian-kde \u2705 KDE Debian alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch debian-mate \u2705 MATE Debian alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch debian-i3 \u2705 i3 Debian alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch debian-openbox \u2705 Openbox Debian alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch debian-icewm \u2705 IceWM Debian"},{"location":"images/docker-webtop/#application-setup","title":"Application Setup","text":"<p>The Webtop can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul> <p>Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the <code>--security-opt seccomp=unconfined</code> setting to allow these syscalls</p> <p>Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directory but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu/Debians's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program</p>"},{"location":"images/docker-webtop/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-webtop/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> DISABLE_IPV6 If set to true or any value this will disable IPv6 LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders in openbox for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-webtop/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated applications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-webtop/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start Webtop in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed inside the Webtop depending on what underlying distribution you are running. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables (Alpine base):</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install \n-e INSTALL_PACKAGES=font-noto-cjk \n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-webtop/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-webtop/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-webtop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n webtop:\n image: lscr.io/linuxserver/webtop:latest\n container_name: webtop\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n - TITLE=Webtop #optional\n volumes:\n - /path/to/data:/config\n - /var/run/docker.sock:/var/run/docker.sock #optional\n ports:\n - 3000:3000\n - 3001:3001\n devices:\n - /dev/dri:/dev/dri #optional\n shm_size: \"1gb\" #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-webtop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=webtop \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -e TITLE=Webtop `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/data:/config \\\n -v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n --device /dev/dri:/dev/dri `#optional` \\\n --shm-size=\"1gb\" `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webtop:latest\n</code></pre>"},{"location":"images/docker-webtop/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-webtop/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Web Desktop GUI <code>3001</code> Web Desktop GUI HTTPS"},{"location":"images/docker-webtop/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SUBFOLDER=/</code> Specify a subfolder to use with reverse proxies, IE <code>/subfolder/</code> <code>TITLE=Webtop</code> String which will be used as page/tab title in the web browser."},{"location":"images/docker-webtop/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> abc users home directory <code>/var/run/docker.sock</code> Docker Socket on the system, if you want to use Docker in the container"},{"location":"images/docker-webtop/#device-mappings-device","title":"Device Mappings (<code>--device</code>)","text":"Parameter Function <code>/dev/dri</code> Add this for GL support (Linux hosts only)"},{"location":"images/docker-webtop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> We set this to 1 gig to prevent modern web browsers from crashing <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-webtop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-webtop/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-webtop/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-webtop/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-webtop/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it webtop /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f webtop\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webtop\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webtop:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-webtop/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-webtop/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull webtop\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d webtop\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webtop/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/webtop:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop webtop\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm webtop\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-webtop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-webtop/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-webtop.git\ncd docker-webtop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webtop:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-webtop/#versions","title":"Versions","text":"<ul> <li>11.02.24: - Add PWA icons and title variants properly.</li> <li>06.02.24: - Update Readme about native language support.</li> <li>29.12.23: - Rebase Alpine to 3.19 and swap back to Firefox.</li> <li>07.11.23: - Rebase Fedora to 39.</li> <li>14.06.23: - Rebase to Debian Bookworm.</li> <li>13.05.23: - Rebase to Alpine 3.18 and Fedora 38.</li> <li>23.03.23: - Rebase all Webtops to KasmVNC base image.</li> <li>21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3.</li> <li>12.03.22: - Add documentation for mounting in a GPU.</li> <li>05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode.</li> <li>21.09.21: - Add Fedora and Arch images, show seccomp settings in readme.</li> <li>26.09.21: - Rebase to Alpine versions to 3.14.</li> <li>20.04.21: - Initial release.</li> </ul>"},{"location":"images/docker-wikijs/","title":"wikijs","text":""},{"location":"images/docker-wikijs/#linuxserverwikijs","title":"linuxserver/wikijs","text":"<p>Wikijs A modern, lightweight and powerful wiki app built on NodeJS.</p> <p></p>"},{"location":"images/docker-wikijs/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/wikijs:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-wikijs/#application-setup","title":"Application Setup","text":"<p>Please note that the database configuration environment variables will apply on first run only, after which you will need to directly edit /config/config.yml to change your settings.</p> <p>For more information please see the official documentation.</p>"},{"location":"images/docker-wikijs/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-wikijs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n wikijs:\n image: lscr.io/linuxserver/wikijs:latest\n container_name: wikijs\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_TYPE=sqlite #optional\n - DB_HOST= #optional\n - DB_PORT= #optional\n - DB_NAME= #optional\n - DB_USER= #optional\n - DB_PASS= #optional\n volumes:\n - /path/to/wikijs/config:/config\n - /path/to/data:/data\n ports:\n - 3000:3000\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-wikijs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=wikijs \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_TYPE=sqlite `#optional` \\\n -e DB_HOST= `#optional` \\\n -e DB_PORT= `#optional` \\\n -e DB_NAME= `#optional` \\\n -e DB_USER= `#optional` \\\n -e DB_PASS= `#optional` \\\n -p 3000:3000 \\\n -v /path/to/wikijs/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wikijs:latest\n</code></pre>"},{"location":"images/docker-wikijs/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-wikijs/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Port for Wiki.js's web interface."},{"location":"images/docker-wikijs/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>DB_TYPE=sqlite</code> Set to sqlite (default) or postgres depending on the database engine you wish to use <code>DB_HOST=</code> DB hostname (postgres only) <code>DB_PORT=</code> DB port (postgres only) <code>DB_NAME=</code> DB name (postgres only) <code>DB_USER=</code> DB username (postgres only) <code>DB_PASS=</code> DB password (postgres only)"},{"location":"images/docker-wikijs/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files <code>/data</code> Where Wiki.js data is stored."},{"location":"images/docker-wikijs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-wikijs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-wikijs/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-wikijs/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-wikijs/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-wikijs/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it wikijs /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f wikijs\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wikijs\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wikijs:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-wikijs/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-wikijs/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull wikijs\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d wikijs\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wikijs/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/wikijs:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop wikijs\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm wikijs\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wikijs/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-wikijs/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-wikijs.git\ncd docker-wikijs\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wikijs:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-wikijs/#versions","title":"Versions","text":"<ul> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>25.08.22: - Rebase to Alpine 3.18.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>21.03.23: - Restore git and openssh packages for git storage support.</li> <li>21.03.23: - Create dummy /etc/os-release to fix System Info page.</li> <li>10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.</li> <li>23.01.21: - Rebasing to alpine 3.13.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>28.04.20: - Added python dependency for some NPM modules as well as git for storage module</li> <li>14.12.19: - Initial Release.</li> </ul>"},{"location":"images/docker-wireguard/","title":"wireguard","text":""},{"location":"images/docker-wireguard/#linuxserverwireguard","title":"linuxserver/wireguard","text":"<p>WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.</p> <p></p>"},{"location":"images/docker-wireguard/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/wireguard:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-wireguard/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Stable releases based on Alpine without support for compiling Wireguard modules. legacy \u2705 Stable releases with support for compiling Wireguard modules for older kernels."},{"location":"images/docker-wireguard/#application-setup","title":"Application Setup","text":"<p>During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container.</p> <p>This can be run as a server or a client, based on the parameters used.</p>"},{"location":"images/docker-wireguard/#note-on-iptables","title":"Note on iptables","text":"<p>Some hosts may not load the iptables kernel modules by default. In order for the container to be able to load them, you need to assign the <code>SYS_MODULE</code> capability and add the optional <code>/lib/modules</code> volume mount. Alternatively you can <code>modprobe</code> them from the host before starting the container.</p>"},{"location":"images/docker-wireguard/#server-mode","title":"Server Mode","text":"<p>If the environment variable <code>PEERS</code> is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log if <code>LOG_CONFS</code> is set to <code>true</code>. They will also be saved in text and png format under <code>/config/peerX</code> in case <code>PEERS</code> is a variable and an integer or <code>/config/peer_X</code> in case a list of names was provided instead of an integer.</p> <p>Variables <code>SERVERURL</code>, <code>SERVERPORT</code>, <code>INTERNAL_SUBNET</code>, <code>PEERDNS</code>, <code>INTERFACE</code>, <code>ALLOWEDIPS</code> and <code>PERSISTENTKEEPALIVE_PEERS</code> are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.</p> <p>To add more peers/clients later on, you increment the <code>PEERS</code> environment variable or add more elements to the list and recreate the container.</p> <p>To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: <code>docker exec -it wireguard /app/show-peer 1 4 5</code> or <code>docker exec -it wireguard /app/show-peer myPC myPhone myTablet</code> (Keep in mind that the QR codes are also stored as PNGs in the config folder).</p> <p>The templates used for server and peer confs are saved under <code>/config/templates</code>. Advanced users can modify these templates and force conf generation by deleting <code>/config/wg_confs/wg0.conf</code> and restarting the container.</p> <p>The container managed server conf is hardcoded to <code>wg0.conf</code>. However, the users can add additional tunnel config files with <code>.conf</code> extensions into <code>/config/wg_confs/</code> and the container will attempt to start them all in alphabetical order. If any one of the tunnels fail, they will all be stopped and the default route will be deleted, requiring user intervention to fix the invalid conf and a container restart.</p>"},{"location":"images/docker-wireguard/#client-mode","title":"Client Mode","text":"<p>Do not set the <code>PEERS</code> environment variable. Drop your client conf(s) into the config folder as <code>/config/wg_confs/&lt;tunnel name&gt;.conf</code> and start the container. If there are multiple tunnel configs, the container will attempt to start them all in alphabetical order. If any one of the tunnels fail, they will all be stopped and the default route will be deleted, requiring user intervention to fix the invalid conf and a container restart.</p> <p>If you get IPv6 related errors in the log and connection cannot be established, edit the <code>AllowedIPs</code> line in your peer/client wg0.conf to include only <code>0.0.0.0/0</code> and not <code>::/0</code>; and restart the container.</p>"},{"location":"images/docker-wireguard/#road-warriors-roaming-and-returning-home","title":"Road warriors, roaming and returning home","text":"<p>If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost.</p> <p>This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally).</p> <p>Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.</p>"},{"location":"images/docker-wireguard/#maintaining-local-access-to-attached-services","title":"Maintaining local access to attached services","text":"<p>** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.</p> <p>When routing via Wireguard from another container using the <code>service</code> option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your <code>wg0.conf</code> like so (modifying the subnets as you require):</p> <pre><code>[Interface]\nPrivateKey = &lt;private key&gt;\nAddress = 9.8.7.6/32\nDNS = 8.8.8.8\nPostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT; iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT\nPreDown = HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT\n</code></pre>"},{"location":"images/docker-wireguard/#site-to-site-vpn","title":"Site-to-site VPN","text":"<p>** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.</p> <p>Site-to-site VPN in server mode requires customizing the <code>AllowedIPs</code> statement for a specific peer in <code>wg0.conf</code>. Since <code>wg0.conf</code> is autogenerated when server vars are changed, it is not recommended to edit it manually.</p> <p>In order to customize the <code>AllowedIPs</code> statement for a specific peer in <code>wg0.conf</code>, you can set an env var <code>SERVER_ALLOWEDIPS_PEER_&lt;peer name or number&gt;</code> to the additional subnets you'd like to add, comma separated and excluding the peer IP (ie. <code>\"192.168.1.0/24,192.168.2.0/24\"</code>). Replace <code>&lt;peer name or number&gt;</code> with either the name or number of a peer (whichever is used in the <code>PEERS</code> var).</p> <p>For instance <code>SERVER_ALLOWEDIPS_PEER_laptop=\"192.168.1.0/24,192.168.2.0/24\"</code> will result in the wg0.conf entry <code>AllowedIPs = 10.13.13.2,192.168.1.0/24,192.168.2.0/24</code> for the peer named <code>laptop</code>.</p> <p>Keep in mind that this var will only be considered when the confs are regenerated. Adding this var for an existing peer won't force a regeneration. You can delete wg0.conf and restart the container to force regeneration if necessary.</p> <p>Don't forget to set the necessary POSTUP and POSTDOWN rules in your client's peer conf for lan access.</p>"},{"location":"images/docker-wireguard/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-wireguard/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n wireguard:\n image: lscr.io/linuxserver/wireguard:latest\n container_name: wireguard\n cap_add:\n - NET_ADMIN\n - SYS_MODULE #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SERVERURL=wireguard.domain.com #optional\n - SERVERPORT=51820 #optional\n - PEERS=1 #optional\n - PEERDNS=auto #optional\n - INTERNAL_SUBNET=10.13.13.0 #optional\n - ALLOWEDIPS=0.0.0.0/0 #optional\n - PERSISTENTKEEPALIVE_PEERS= #optional\n - LOG_CONFS=true #optional\n volumes:\n - /path/to/appdata/config:/config\n - /lib/modules:/lib/modules #optional\n ports:\n - 51820:51820/udp\n sysctls:\n - net.ipv4.conf.all.src_valid_mark=1\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-wireguard/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=wireguard \\\n --cap-add=NET_ADMIN \\\n --cap-add=SYS_MODULE `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SERVERURL=wireguard.domain.com `#optional` \\\n -e SERVERPORT=51820 `#optional` \\\n -e PEERS=1 `#optional` \\\n -e PEERDNS=auto `#optional` \\\n -e INTERNAL_SUBNET=10.13.13.0 `#optional` \\\n -e ALLOWEDIPS=0.0.0.0/0 `#optional` \\\n -e PERSISTENTKEEPALIVE_PEERS= `#optional` \\\n -e LOG_CONFS=true `#optional` \\\n -p 51820:51820/udp \\\n -v /path/to/appdata/config:/config \\\n -v /lib/modules:/lib/modules `#optional` \\\n --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wireguard:latest\n</code></pre>"},{"location":"images/docker-wireguard/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-wireguard/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>51820/udp</code> wireguard port"},{"location":"images/docker-wireguard/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>SERVERURL=wireguard.domain.com</code> External IP or domain name for docker host. Used in server mode. If set to <code>auto</code>, the container will try to determine and set the external IP automatically <code>SERVERPORT=51820</code> External port for docker host. Used in server mode. <code>PEERS=1</code> Number of peers to create confs for. Required for server mode. Can also be a list of names: <code>myPC,myPhone,myTablet</code> (alphanumeric only) <code>PEERDNS=auto</code> DNS server set in peer/client configs (can be set as <code>8.8.8.8</code>). Used in server mode. Defaults to <code>auto</code>, which uses wireguard docker host's DNS via included CoreDNS forward. <code>INTERNAL_SUBNET=10.13.13.0</code> Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode. <code>ALLOWEDIPS=0.0.0.0/0</code> The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1. <code>PERSISTENTKEEPALIVE_PEERS=</code> Set to <code>all</code> or a list of comma separated peers (ie. <code>1,4,laptop</code>) for the wireguard server to send keepalive packets to listed peers every 25 seconds. Useful if server is accessed via domain name and has dynamic IP. Used only in server mode. <code>LOG_CONFS=true</code> Generated QR codes will be displayed in the docker log. Set to <code>false</code> to skip log output."},{"location":"images/docker-wireguard/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Contains all relevant configuration files. <code>/lib/modules</code> Host kernel modules for situations where they're not already loaded."},{"location":"images/docker-wireguard/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--sysctl=</code> Required for client mode."},{"location":"images/docker-wireguard/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-wireguard/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-wireguard/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-wireguard/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-wireguard/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-wireguard/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it wireguard /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f wireguard\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireguard\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireguard:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-wireguard/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-wireguard/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull wireguard\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d wireguard\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wireguard/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/wireguard:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop wireguard\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm wireguard\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wireguard/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-wireguard/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-wireguard.git\ncd docker-wireguard\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wireguard:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-wireguard/#versions","title":"Versions","text":"<ul> <li>10.03.24: - Use iptables-legacy on Alpine 3.19.</li> <li>05.03.24: - Rebase master to Alpine 3.19.</li> <li>03.10.23: - Potentially Breaking Change: Support for multiple interfaces added. Wireguard confs moved to <code>/config/wg_confs/</code>. Any file with a <code>.conf</code> extension in that folder will be treated as a live tunnel config and will be attempted to start. If any of the tunnels fail, all tunnels will be stopped. Tunnels are started in alphabetical order. Managed server conf will continue to be hardcoded to <code>wg0.conf</code>.</li> <li>28.06.23: - Rebase master to Alpine 3.18 again.</li> <li>26.06.23: - Revert master to Alpine 3.17, due to issue with openresolv.</li> <li>24.06.23: - Rebase master to Alpine 3.18, deprecate armhf as per https://www.linuxserver.io/armhf.</li> <li>26.04.23: - Rework branches. Swap alpine and ubuntu builds.</li> <li>29.01.23: - Rebase to alpine 3.17.</li> <li>10.01.23: - Add new var to add <code>PersistentKeepalive</code> to server config for select peers to survive server IP changes when domain name is used.</li> <li>26.10.22: - Better handle unsupported peer names. Improve logging.</li> <li>12.10.22: - Add Alpine branch. Optimize wg and coredns services.</li> <li>04.10.22: - Rebase to Jammy. Upgrade to s6v3.</li> <li>16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present.</li> <li>23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes.</li> <li>10.04.22: - Rebase to Ubuntu Focal. Add <code>LOG_CONFS</code> env var. Remove deprecated <code>add-peer</code> command.</li> <li>28.10.21: - Add site-to-site vpn support.</li> <li>11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating.</li> <li>06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode.</li> <li>04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete <code>/config/templates/peer.conf</code> and restart</li> <li>27.09.20: - Cleaning service binding example to have accurate PreDown script.</li> <li>06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs.</li> <li>29.07.20: - Update Coredns config to detect dns loops (existing users need to delete <code>/config/coredns/Corefile</code> and restart).</li> <li>27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete <code>/config/coredns/Corefile</code> and restart).</li> <li>05.07.20: - Add Debian updates and security repos for headers.</li> <li>25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives.</li> <li>19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs.</li> <li>29.05.20: - Add support for 64bit raspbian.</li> <li>28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64).</li> <li>20.04.20: - Fix typo in client mode conf existence check.</li> <li>13.04.20: - Fix bug that forced conf recreation on every start.</li> <li>08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for <code>PEERDNS=auto</code> setting. Update the <code>add-peer</code>/<code>show-peer</code> scripts to utilize the templates and the <code>INTERNAL_SUBNET</code> var (previously missed, oops).</li> <li>05.04.20: - Add <code>INTERNAL_SUBNET</code> variable to prevent subnet clashes. Add templates for server and peer confs.</li> <li>01.04.20: - Add <code>show-peer</code> script and include info on host installed headers.</li> <li>31.03.20: - Initial Release.</li> </ul>"},{"location":"images/docker-wireshark/","title":"wireshark","text":""},{"location":"images/docker-wireshark/#linuxserverwireshark","title":"linuxserver/wireshark","text":"<p>Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.</p> <p></p>"},{"location":"images/docker-wireshark/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/wireshark:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-wireshark/#application-setup","title":"Application Setup","text":"<p>In order to dump from an interface you will need to pass <code>NET_ADMIN</code> at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from.</p> <p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-wireshark/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-wireshark/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-wireshark/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-wireshark/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-wireshark/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-wireshark/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-wireshark/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n wireshark:\n image: lscr.io/linuxserver/wireshark:latest\n container_name: wireshark\n cap_add:\n - NET_ADMIN\n security_opt:\n - seccomp:unconfined #optional\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000 #optional\n - 3001:3001 #optional\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-wireshark/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=wireshark \\\n --net=host \\\n --cap-add=NET_ADMIN \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 `#optional` \\\n -p 3001:3001 `#optional` \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wireshark:latest\n</code></pre>"},{"location":"images/docker-wireshark/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-wireshark/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic. <code>3001</code> WireShark desktop gui HTTPS, only use this if you are not using host mode and sniffing Docker network traffic."},{"location":"images/docker-wireshark/#networking-net","title":"Networking (<code>--net</code>)","text":"Parameter Function <code>--net=host</code> Use Host Networking"},{"location":"images/docker-wireshark/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-wireshark/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-wireshark/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-wireshark/#portainer-notice","title":"Portainer notice","text":"<p>Warning</p> <p>This image utilises <code>cap_add</code> or <code>sysctl</code> to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.</p>"},{"location":"images/docker-wireshark/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-wireshark/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-wireshark/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-wireshark/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-wireshark/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it wireshark /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f wireshark\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireshark\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireshark:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-wireshark/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-wireshark/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull wireshark\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d wireshark\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wireshark/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/wireshark:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop wireshark\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm wireshark\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wireshark/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-wireshark/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-wireshark.git\ncd docker-wireshark\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wireshark:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-wireshark/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>02.01.24: - Rebase to Alpine 3.19.</li> <li>13.05.23: - Rebase to Alpine 3.18.</li> <li>18.03.23: - Rebase to KasmVNC base image.</li> <li>23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>14.02.22: - Rebase to Alpine.</li> <li>31.03.20: - Initial release.</li> </ul>"},{"location":"images/docker-wps-office/","title":"wps-office","text":""},{"location":"images/docker-wps-office/#linuxserverwps-office","title":"linuxserver/wps-office","text":"<p>WPS Office is a lightweight, feature-rich comprehensive office suite with high compatibility. As a handy and professional office software, WPS Office allows you to edit files in Writer, Presentation, Spreadsheet, and PDF to improve your work efficiency.</p> <p></p>"},{"location":"images/docker-wps-office/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/wps-office:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-wps-office/#version-tags","title":"Version Tags","text":"<p>This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.</p> Tag Available Description latest \u2705 Standard English release chinese \u2705 Simplified Chinese version"},{"location":"images/docker-wps-office/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-wps-office/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-wps-office/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-wps-office/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-wps-office/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-wps-office/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-wps-office/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n wps-office:\n image: lscr.io/linuxserver/wps-office:latest\n container_name: wps-office\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-wps-office/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=wps-office \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wps-office:latest\n</code></pre>"},{"location":"images/docker-wps-office/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-wps-office/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> WPS Office desktop gui. <code>3001</code> WPS Office desktop gui HTTPS."},{"location":"images/docker-wps-office/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-wps-office/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores program settings and documents"},{"location":"images/docker-wps-office/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for electron applications to function properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-wps-office/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-wps-office/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-wps-office/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-wps-office/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-wps-office/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it wps-office /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f wps-office\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wps-office\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wps-office:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-wps-office/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-wps-office/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull wps-office\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d wps-office\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wps-office/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/wps-office:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop wps-office\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm wps-office\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-wps-office/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-wps-office/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-wps-office.git\ncd docker-wps-office\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wps-office:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-wps-office/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>06.01.24: - Rebase to Debian Bookworm.</li> <li>17.01.24: - Update Chromium wrapper.</li> <li>21.04.23: - Initial release.</li> </ul>"},{"location":"images/docker-xbackbone/","title":"xbackbone","text":""},{"location":"images/docker-xbackbone/#linuxserverxbackbone","title":"linuxserver/xbackbone","text":"<p>Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.</p> <p></p>"},{"location":"images/docker-xbackbone/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/xbackbone:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-xbackbone/#application-setup","title":"Application Setup","text":"<p>Access the WebUI at &lt;your-ip&gt;:80/443. Follow the installation wizard. For more information, check out XBackBone.</p> <p>If you want to change the PHP max upload size you can override the php.ini file by adding options in <code>/config/php/php-local.ini</code></p> <p>Example:</p> <pre><code> upload_max_filesize = 25M\n post_max_size = 25M\n</code></pre> <p>For reverse proxying, remember to change the <code>base_url</code> in <code>/config/www/xbackbone/config.php</code> to your domain if you initially set up the application with a local url. E.g. <code>'base_url' =&gt; 'https://images.yourdomain.com',</code></p>"},{"location":"images/docker-xbackbone/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-xbackbone/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n xbackbone:\n image: lscr.io/linuxserver/xbackbone:latest\n container_name: xbackbone\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/xbackbone/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-xbackbone/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=xbackbone \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/xbackbone/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/xbackbone:latest\n</code></pre>"},{"location":"images/docker-xbackbone/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-xbackbone/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> http gui <code>443</code> https gui"},{"location":"images/docker-xbackbone/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-xbackbone/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-xbackbone/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-xbackbone/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-xbackbone/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-xbackbone/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-xbackbone/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-xbackbone/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it xbackbone /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f xbackbone\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' xbackbone\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/xbackbone:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-xbackbone/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-xbackbone/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull xbackbone\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d xbackbone\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-xbackbone/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/xbackbone:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop xbackbone\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm xbackbone\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-xbackbone/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-xbackbone/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-xbackbone.git\ncd docker-xbackbone\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/xbackbone:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-xbackbone/#versions","title":"Versions","text":"<ul> <li>28.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>25.12.23: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>25.05.23: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>13.04.23: - Move ssl.conf include to default.conf.</li> <li>19.01.23: - Rebase to alpine 3.17 with php8.1.</li> <li>04.11.22: - Rebase to Alpine 3.16, migrate to s6v3.</li> <li>01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly</li> <li>20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).</li> <li>02.08.22: - Added note about updating.</li> <li>06.06.21: - Initial Release.</li> </ul>"},{"location":"images/docker-your_spotify/","title":"your_spotify","text":""},{"location":"images/docker-your_spotify/#linuxserveryour_spotify","title":"linuxserver/your_spotify","text":"<p>Your_spotify is a self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it! It's composed of a web server which polls the Spotify API every now and then and a web application on which you can explore your statistics.</p> <p></p>"},{"location":"images/docker-your_spotify/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/your_spotify:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-your_spotify/#application-setup","title":"Application Setup","text":"<p>You have to create a Spotify application through their developer dashboard to get your Client ID and secret. Set the Redirect URI to match your APP_URL address with <code>/api/oauth/spotify/callback</code> included after the domain (i.e., <code>http://localhost/api/oauth/spotify/callback</code>).</p> <p>The application requires an external mongodb database, supported versions are 4.x, 5.x, and 6.x.</p> <p>This ia an all-in-one container which includes both the server and client components. If you require these to be separate then please use the releases from the your_spotify repo.</p>"},{"location":"images/docker-your_spotify/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-your_spotify/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n your_spotify:\n image: lscr.io/linuxserver/your_spotify:latest\n container_name: your_spotify\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - APP_URL=http://localhost\n - SPOTIFY_PUBLIC=\n - SPOTIFY_SECRET=\n - CORS=http://localhost:80,https://localhost:443\n - MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-your_spotify/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=your_spotify \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e APP_URL=http://localhost \\\n -e SPOTIFY_PUBLIC= \\\n -e SPOTIFY_SECRET= \\\n -e CORS=http://localhost:80,https://localhost:443 \\\n -e MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify \\\n -p 80:80 \\\n -p 443:443 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/your_spotify:latest\n</code></pre>"},{"location":"images/docker-your_spotify/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-your_spotify/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>80</code> your_spotify HTTP webui <code>443</code> your_spotify HTTPS webui"},{"location":"images/docker-your_spotify/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list. <code>APP_URL=http://localhost</code> The protocol and hostname where the app will be accessed. <code>SPOTIFY_PUBLIC=</code> Your Spotify application client ID. <code>SPOTIFY_SECRET=</code> Your Spotify application secret. <code>CORS=http://localhost:80,https://localhost:443</code> Allowed CORS sources, set to <code>all</code> to allow any source. <code>MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify</code> Set mongodb endpoint address/port."},{"location":"images/docker-your_spotify/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function"},{"location":"images/docker-your_spotify/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-your_spotify/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-your_spotify/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-your_spotify/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-your_spotify/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-your_spotify/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it your_spotify /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f your_spotify\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' your_spotify\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/your_spotify:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-your_spotify/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-your_spotify/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull your_spotify\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d your_spotify\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-your_spotify/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/your_spotify:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop your_spotify\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm your_spotify\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-your_spotify/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-your_spotify/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-your_spotify.git\ncd docker-your_spotify\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/your_spotify:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-your_spotify/#versions","title":"Versions","text":"<ul> <li>02.03.24: - Updates for changes in 1.8.0. Initial DB migration may take several minutes.</li> <li>24.01.24: - Existing users should update: site-confs/default.conf - Cleanup default site conf.</li> <li>23.12.23: - Rebase to Alpine 3.19 with php 8.3.</li> <li>23.01.23: - Rebase to Alpine 3.18, standardize nginx default site conf.</li> <li>23.01.23: - Initial Release.</li> </ul>"},{"location":"images/docker-yq/","title":"yq","text":"<p>The LinuxServer.io team brings you another container release featuring:</p> <ul> <li>regular and timely application updates</li> <li>easy user mappings (PGID, PUID)</li> <li>custom base image with s6 overlay</li> <li>weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth</li> <li>regular security updates</li> </ul> <p>Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget</p>"},{"location":"images/docker-yq/#linuxserveryq","title":"linuxserver/yq","text":"<p>yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes <code>yq</code>, <code>jq</code>, and <code>xq</code>.</p>"},{"location":"images/docker-yq/#supported-architectures","title":"Supported Architectures","text":"<p>Our images support multiple architectures such as <code>x86-64</code>, <code>arm64</code> and <code>armhf</code>. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>linuxserver/yq</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-yq/#usage","title":"Usage","text":""},{"location":"images/docker-yq/#docker-cli","title":"Docker cli","text":"<p><pre><code>docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint yq \\\n linuxserver/yq \\\n .foo.bar input.yml\n</code></pre> You can replace the last line with any yq command and argument, which will be passed to yq inside the image.</p> <p><pre><code>docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint jq \\\n linuxserver/yq \\\n .foo.bar input.json\n</code></pre> You can replace the last line with any jq command and argument, which will be passed to jq inside the image.</p> <p><pre><code>docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint xq \\\n linuxserver/yq \\\n .foo.bar input.xml\n</code></pre> You can replace the last line with any xq command and argument, which will be passed to xq inside the image.</p>"},{"location":"images/docker-yq/#recommended-method","title":"Recommended method","text":"<p>We provide a very convenient script that allows the yq container to run as if it was installed natively: <pre><code>sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-yq.sh -o /usr/local/bin/yq\nsudo chmod +x /usr/local/bin/yq\n</code></pre> Running these two commands on your docker host once will let you issue commands such as <code>yq .foo.bar input.yml</code> and the yq container will do its job behind the scenes.</p> <p><pre><code>sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-jq.sh -o /usr/local/bin/jq\nsudo chmod +x /usr/local/bin/jq\n</code></pre> Running these two commands on your docker host once will let you issue commands such as <code>jq .foo.bar input.json</code> and the jq container will do its job behind the scenes.</p> <p><pre><code>sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-xq.sh -o /usr/local/bin/xq\nsudo chmod +x /usr/local/bin/xq\n</code></pre> Running these two commands on your docker host once will let you issue commands such as <code>xq .foo.bar input.xml</code> and the xq container will do its job behind the scenes.</p>"},{"location":"images/docker-yq/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.</p>"},{"location":"images/docker-yq/#support-info","title":"Support Info","text":"<ul> <li>image version number</li> <li><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/yq</code></li> </ul>"},{"location":"images/docker-yq/#updating-info","title":"Updating Info","text":""},{"location":"images/docker-yq/#via-docker-cli","title":"Via Docker Cli","text":"<ul> <li>Update the image: <code>docker pull linuxserver/yq</code></li> <li>You can also remove the old dangling images: <code>docker image prune</code></li> </ul>"},{"location":"images/docker-yq/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic: <pre><code>git clone https://github.com/linuxserver/docker-yq.git\ncd docker-yq\ndocker build \\\n --no-cache \\\n --pull \\\n -t linuxserver/yq:latest .\n</code></pre></p> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre></p> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-yq/#versions","title":"Versions","text":"<ul> <li>08.01.24: - Rebase to Alpine 3.19.</li> <li>19.09.22: - Rebase to Alpine 3.18, deprecate armhf.</li> <li>19.09.22: - Rebase to 3.17.</li> <li>19.09.22: - Rebase to 3.15.</li> <li>18.05.21: - Rebase to 3.13. add linuxserver wheel repo.</li> <li>09.10.20: - Fix run scripts evaluating <code>$</code> in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands.</li> <li>07.10.20: - Initial Release.</li> </ul>"},{"location":"images/docker-znc/","title":"znc","text":""},{"location":"images/docker-znc/#linuxserverznc","title":"linuxserver/znc","text":"<p>Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.</p> <p></p>"},{"location":"images/docker-znc/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/znc:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u2705 arm64v8-&lt;version tag&gt; armhf \u274c"},{"location":"images/docker-znc/#application-setup","title":"Application Setup","text":"<p>To log in to the application, browse to <code>http://&lt;hostip&gt;:6501</code>.</p> <ul> <li>Default User: admin</li> <li>Default Password: admin <code>change password ASAP.</code></li> </ul>"},{"location":"images/docker-znc/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-znc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n znc:\n image: lscr.io/linuxserver/znc:latest\n container_name: znc\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/znc/config:/config\n ports:\n - 6501:6501\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-znc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=znc \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 6501:6501 \\\n -v /path/to/znc/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/znc:latest\n</code></pre>"},{"location":"images/docker-znc/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-znc/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>6501</code> Port ZNC listens on."},{"location":"images/docker-znc/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-znc/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Persistent config files"},{"location":"images/docker-znc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-znc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-znc/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-znc/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-znc/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-znc/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it znc /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f znc\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' znc\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/znc:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-znc/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-znc/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull znc\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d znc\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-znc/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/znc:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop znc\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm znc\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-znc/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-znc/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-znc.git\ncd docker-znc\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/znc:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-znc/#versions","title":"Versions","text":"<ul> <li>26.03.24: - Switch back to multi-threaded builds and ignore <code>-beta</code> and <code>-alpha</code> tags as well as <code>-rc</code>.</li> <li>22.02.24: - Update build system for v1.9.0 (use cmake).</li> <li>23.12.23: - Rebase to Alpine 3.19.</li> <li>12.07.23: - Rebasing to Alpine 3.18.</li> <li>07.07.23: - Deprecate armhf. As announced here</li> <li>13.02.23: - Rebase to Alpine 3.17, migrate to s6v3.</li> <li>19.01.22: - Rebasing to alpine 3.15.</li> <li>01.06.20: - Rebasing to alpine 3.12.</li> <li>19.12.19: - Rebasing to alpine 3.11.</li> <li>02.11.19: - Add znc-palaver module.</li> <li>28.06.19: - Rebasing to alpine 3.10.</li> <li>23.03.19: - Switching to new Base images, shift to arm32v7 tag.</li> <li>22.02.19: - Rebasing to alpine 3.9.</li> <li>31.01.19: - Add pipeline logic and multi arch.</li> <li>30.01.19: - Add push and clientbuffer modules.</li> <li>17.08.18: - Rebase to alpine 3.8, use buildstage.</li> <li>03.01.18: - Deprecate cpu_core routine lack of scaling.</li> <li>07.12.17: - Rebase alpine linux 3.7.</li> <li>25.10.17: - Remove debug switch from run command.</li> <li>26.05.17: - Rebase alpine linux 3.6.</li> <li>06.02.17: - Rebase alpine linux 3.5.</li> <li>19.01.17: - Add playback module.</li> <li>07.01.17: - Add ca-certificates package, resolve sasl issues.</li> <li>07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation.</li> <li>14.10.16: - Add version layer information.</li> <li>30.09.16: - Fix umask.</li> <li>11.09.16: - Add layer badges to README.</li> <li>28.08.16: - Add badges to README.</li> <li>20.08.16: - Rebase to alpine linux, move to main repository.</li> <li>11.12.15: - Initial Release.</li> </ul>"},{"location":"images/docker-zotero/","title":"zotero","text":""},{"location":"images/docker-zotero/#linuxserverzotero","title":"linuxserver/zotero","text":"<p>Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share research.</p> <p></p>"},{"location":"images/docker-zotero/#supported-architectures","title":"Supported Architectures","text":"<p>We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.</p> <p>Simply pulling <code>lscr.io/linuxserver/zotero:latest</code> should retrieve the correct image for your arch, but you can also pull specific arch images via tags.</p> <p>The architectures supported by this image are:</p> Architecture Available Tag x86-64 \u2705 amd64-&lt;version tag&gt; arm64 \u274c armhf \u274c"},{"location":"images/docker-zotero/#application-setup","title":"Application Setup","text":"<p>The application can be accessed at:</p> <ul> <li>http://yourhost:3000/</li> <li>https://yourhost:3001/</li> </ul>"},{"location":"images/docker-zotero/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"<p>This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.</p>"},{"location":"images/docker-zotero/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE <code>/subfolder/</code> TITLE The page title displayed on the web browser, default \"KasmVNC Client\". FM_HOME This is the home directory (landing) for the file manager, default \"/config\". START_DOCKER If set to false a container with privilege will not automatically start the DinD Docker setup. DRINODE If mounting in /dev/dri for DRI3 GPU Acceleration allows you to specify the device to use IE <code>/dev/dri/renderD128</code> LC_ALL Set the Language for the container to run as IE <code>fr_FR.UTF-8</code> <code>ar_AE.UTF-8</code> NO_DECOR If set the application will run without window borders for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-zotero/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description <code>--privileged</code> Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE <code>-v /home/user/docker-data:/var/lib/docker</code>. <code>-v /var/run/docker.sock:/var/run/docker.sock</code> Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. <code>--device /dev/dri:/dev/dri</code> Mount a GPU into the container, this can be used in conjunction with the <code>DRINODE</code> environment variable to leverage a host video card for GPU accelerated appplications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-zotero/#language-support-internationalization","title":"Language Support - Internationalization","text":"<p>The environment variable <code>LC_ALL</code> can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French <code>LC_ALL=fr_FR.UTF-8</code>. Some languages like Chinese, Japanese, or Korean will be missing fonts needed to render properly known as cjk fonts, but others may exist and not be installed. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.</p> <p>To install cjk fonts on startup as an example pass the environment variables:</p> <pre><code>-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n</code></pre> <p>The web interface has the option for \"IME Input Mode\" in Settings which will allow non english characters to be used from a non en_US keyboard on the client. Once enabled it will perform the same as a local Linux installation set to your locale.</p>"},{"location":"images/docker-zotero/#lossless-mode","title":"Lossless mode","text":"<p>This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to \"Lossless\", more information here. In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined here.</p>"},{"location":"images/docker-zotero/#usage","title":"Usage","text":"<p>To help you get started creating a container from this image you can either use docker-compose or the docker cli.</p>"},{"location":"images/docker-zotero/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"<pre><code>---\nservices:\n zotero:\n image: lscr.io/linuxserver/zotero:latest\n container_name: zotero\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n</code></pre>"},{"location":"images/docker-zotero/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"<pre><code>docker run -d \\\n --name=zotero \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/zotero:latest\n</code></pre>"},{"location":"images/docker-zotero/#parameters","title":"Parameters","text":"<p>Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <code>&lt;external&gt;:&lt;internal&gt;</code> respectively. For example, <code>-p 8080:80</code> would expose port <code>80</code> from inside the container to be accessible from the host's IP on port <code>8080</code> outside the container.</p>"},{"location":"images/docker-zotero/#ports-p","title":"Ports (<code>-p</code>)","text":"Parameter Function <code>3000</code> Zotero gui. <code>3001</code> HTTPS Zotero gui."},{"location":"images/docker-zotero/#environment-variables-e","title":"Environment Variables (<code>-e</code>)","text":"Env Function <code>PUID=1000</code> for UserID - see below for explanation <code>PGID=1000</code> for GroupID - see below for explanation <code>TZ=Etc/UTC</code> specify a timezone to use, see this list."},{"location":"images/docker-zotero/#volume-mappings-v","title":"Volume Mappings (<code>-v</code>)","text":"Volume Function <code>/config</code> Users home directory in the container, stores local files and settings"},{"location":"images/docker-zotero/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function <code>--shm-size=</code> This is needed for Chromium to function properly. <code>--security-opt seccomp=unconfined</code> For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Chromium runs in no-sandbox mode without it."},{"location":"images/docker-zotero/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"<p>You can set any environment variable from a file by using a special prepend <code>FILE__</code>.</p> <p>As an example:</p> <pre><code>-e FILE__MYVAR=/run/secrets/mysecretvariable\n</code></pre> <p>Will set the environment variable <code>MYVAR</code> based on the contents of the <code>/run/secrets/mysecretvariable</code> file.</p>"},{"location":"images/docker-zotero/#umask-for-running-applications","title":"Umask for running applications","text":"<p>For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional <code>-e UMASK=022</code> setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.</p>"},{"location":"images/docker-zotero/#user-group-identifiers","title":"User / Group Identifiers","text":"<p>When using volumes (<code>-v</code> flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user <code>PUID</code> and group <code>PGID</code>.</p> <p>Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.</p> <p>In this instance <code>PUID=1000</code> and <code>PGID=1000</code>, to find yours use <code>id your_user</code> as below:</p> <pre><code>id your_user\n</code></pre> <p>Example output:</p> <pre><code>uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n</code></pre>"},{"location":"images/docker-zotero/#docker-mods","title":"Docker Mods","text":"<p>We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.</p>"},{"location":"images/docker-zotero/#support-info","title":"Support Info","text":"<ul> <li> <p>Shell access whilst the container is running:</p> <pre><code>docker exec -it zotero /bin/bash\n</code></pre> </li> <li> <p>To monitor the logs of the container in realtime:</p> <pre><code>docker logs -f zotero\n</code></pre> </li> <li> <p>Container version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' zotero\n</code></pre> </li> <li> <p>Image version number:</p> <pre><code>docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/zotero:latest\n</code></pre> </li> </ul>"},{"location":"images/docker-zotero/#updating-info","title":"Updating Info","text":"<p>Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.</p> <p>Below are the instructions for updating containers:</p>"},{"location":"images/docker-zotero/#via-docker-compose","title":"Via Docker Compose","text":"<ul> <li> <p>Update images:</p> <ul> <li> <p>All images:</p> <pre><code>docker-compose pull\n</code></pre> </li> <li> <p>Single image:</p> <pre><code>docker-compose pull zotero\n</code></pre> </li> </ul> </li> <li> <p>Update containers:</p> <ul> <li> <p>All containers:</p> <pre><code>docker-compose up -d\n</code></pre> </li> <li> <p>Single container:</p> <pre><code>docker-compose up -d zotero\n</code></pre> </li> </ul> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-zotero/#via-docker-run","title":"Via Docker Run","text":"<ul> <li> <p>Update the image:</p> <pre><code>docker pull lscr.io/linuxserver/zotero:latest\n</code></pre> </li> <li> <p>Stop the running container:</p> <pre><code>docker stop zotero\n</code></pre> </li> <li> <p>Delete the container:</p> <pre><code>docker rm zotero\n</code></pre> </li> <li> <p>Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your <code>/config</code> folder and settings will be preserved)</p> </li> <li> <p>You can also remove the old dangling images:</p> <pre><code>docker image prune\n</code></pre> </li> </ul>"},{"location":"images/docker-zotero/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"<p>Tip</p> <p>We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.</p>"},{"location":"images/docker-zotero/#building-locally","title":"Building locally","text":"<p>If you want to make local modifications to these images for development purposes or just to customize the logic:</p> <pre><code>git clone https://github.com/linuxserver/docker-zotero.git\ncd docker-zotero\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/zotero:latest .\n</code></pre> <p>The ARM variants can be built on x86_64 hardware using <code>multiarch/qemu-user-static</code></p> <pre><code>docker run --rm --privileged multiarch/qemu-user-static:register --reset\n</code></pre> <p>Once registered you can define the dockerfile to use with <code>-f Dockerfile.aarch64</code>.</p>"},{"location":"images/docker-zotero/#versions","title":"Versions","text":"<ul> <li>10.02.24: - Update Readme with new env vars and ingest proper PWA icon.</li> <li>31.01.24: - Initial release.</li> </ul>"},{"location":"misc/awesome-lsio/","title":"Awesome LSIO","text":""},{"location":"misc/awesome-lsio/#administration","title":"Administration","text":"Container Description doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012). netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags. netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations. openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster."},{"location":"misc/awesome-lsio/#audiobooks","title":"Audiobooks","text":"Container Description booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of"},{"location":"misc/awesome-lsio/#automation","title":"Automation","text":"Container Description domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. kanzi kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon."},{"location":"misc/awesome-lsio/#backup","title":"Backup","text":"Container Description duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive &amp; S3, Google Drive, box.com, Mega, hubiC and many others. resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes. rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\" syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet."},{"location":"misc/awesome-lsio/#books","title":"Books","text":"Container Description calibre calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts. calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. cops cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork. mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL. readarr readarr - Book Manager and Automation (Sonarr for Ebooks) ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer."},{"location":"misc/awesome-lsio/#cloud","title":"Cloud","text":"Container Description nextcloud nextcloud gives you access to all your files wherever you are."},{"location":"misc/awesome-lsio/#crypto","title":"Crypto","text":"Container Description gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose. nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account. nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions."},{"location":"misc/awesome-lsio/#dns","title":"DNS","text":"Container Description adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances. ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways. duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence."},{"location":"misc/awesome-lsio/#dashboard","title":"Dashboard","text":"Container Description heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way."},{"location":"misc/awesome-lsio/#databases","title":"Databases","text":"Container Description mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL. mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite."},{"location":"misc/awesome-lsio/#docker","title":"Docker","text":"Container Description docker-compose No description fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories."},{"location":"misc/awesome-lsio/#documents","title":"Documents","text":"Container Description libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\""},{"location":"misc/awesome-lsio/#downloaders","title":"Downloaders","text":"Container Description deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client. nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast. nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. qbittorrent The qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction. transmission transmission is designed for easy, powerful use. Transmission has the features you want from a BitTorrent client: encryption, a web interface, peer exchange, magnet links, DHT, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more."},{"location":"misc/awesome-lsio/#ftp","title":"FTP","text":"Container Description davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow. filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface."},{"location":"misc/awesome-lsio/#family","title":"Family","text":"Container Description babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work."},{"location":"misc/awesome-lsio/#file-sharing","title":"File Sharing","text":"Container Description projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files. pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV. pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture. snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support."},{"location":"misc/awesome-lsio/#finance","title":"Finance","text":"Container Description budge budge is an open source 'budgeting with envelopes' personal finance app."},{"location":"misc/awesome-lsio/#games","title":"Games","text":"Container Description emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS. minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like."},{"location":"misc/awesome-lsio/#graphics","title":"Graphics","text":"Container Description blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready."},{"location":"misc/awesome-lsio/#irc","title":"IRC","text":"Container Description limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot. ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd. pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time. quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here. thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server. znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC."},{"location":"misc/awesome-lsio/#indexers","title":"Indexers","text":"Container Description jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping &amp; translation logic - removing the burden from other apps. nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra. prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all)."},{"location":"misc/awesome-lsio/#media-management","title":"Media Management","text":"Container Description bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. radarr radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato. sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available."},{"location":"misc/awesome-lsio/#media-players","title":"Media Players","text":"Container Description emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster."},{"location":"misc/awesome-lsio/#media-requesters","title":"Media Requesters","text":"Container Description doplarr doplarr is an *arr request bot for Discord.\" ombi ombi allows you to host your own Plex Request and user management system. overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem."},{"location":"misc/awesome-lsio/#media-tools","title":"Media Tools","text":"Container Description embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff. ffmpeg No description htpcmanager htpcmanager is a front end for many htpc related applications. minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards. oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client. synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are. tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server. tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT&gt;IP and HDHomeRun as input sources. webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels."},{"location":"misc/awesome-lsio/#monitor","title":"Monitor","text":"Container Description apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API. healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface. librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis. syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools."},{"location":"misc/awesome-lsio/#music","title":"Music","text":"Container Description airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source. beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools. daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole. lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone."},{"location":"misc/awesome-lsio/#network","title":"Network","text":"Container Description unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance. wireshark Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998."},{"location":"misc/awesome-lsio/#photos","title":"Photos","text":"Container Description chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions. darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them. digikam digiKam: Professional Photo Management with the Power of Open Source lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\" photoshow photoshow is gallery software at its easiest, it doesn't even require a database. piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. pixapop pixapop is an open-source single page application to view your photos in the easiest way possible."},{"location":"misc/awesome-lsio/#programming","title":"Programming","text":"Container Description cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins. code-server code-server is VS Code running on a remote server, accessible through the browser. openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project."},{"location":"misc/awesome-lsio/#rss","title":"RSS","text":"Container Description freshrss freshrss is a free, self-hostable aggregator for rss feeds."},{"location":"misc/awesome-lsio/#recipes","title":"Recipes","text":"Container Description grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility."},{"location":"misc/awesome-lsio/#remote","title":"Remote","text":"Container Description guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends. rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP. remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported. webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser."},{"location":"misc/awesome-lsio/#science","title":"Science","text":"Container Description boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications. foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics."},{"location":"misc/awesome-lsio/#storage","title":"Storage","text":"Container Description diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems. qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat. scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard &amp; Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze."},{"location":"misc/awesome-lsio/#tools","title":"Tools","text":"Container Description yq No description"},{"location":"misc/awesome-lsio/#vpn","title":"VPN","text":"Container Description wireguard WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry."},{"location":"misc/awesome-lsio/#web","title":"Web","text":"Container Description firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. grav grav is a Fast, Simple, and Flexible, file-based Web-platform. nginx nginx is a simple webserver with php support. The config files reside in <code>/config</code> for easy user customization. swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention."},{"location":"misc/awesome-lsio/#wiki","title":"Wiki","text":"Container Description bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. hedgedoc HedgeDoc gives you access to all your files wherever you are. raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS."},{"location":"misc/finances/","title":"Finances","text":"<ul> <li>v0.1 Beta (Work in progress)</li> <li>Created 2021-08-18</li> <li>Updated 2021-08-18</li> </ul>"},{"location":"misc/finances/#charter","title":"Charter","text":"<p>We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.</p>"},{"location":"misc/finances/#annual-expenses","title":"Annual Expenses","text":"<ul> <li>DigitalOcean yearly costs (currently paid for) $1200</li> <li>AWS ~$200</li> <li>Contabo hosting $287.76</li> <li>Email Hosting $20</li> <li>Various domains ~$150</li> <li>Docker Pro Plan $60</li> <li>Various licenses ~$150</li> </ul>"},{"location":"misc/finances/#votes","title":"Votes","text":"<p>In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A general consensus will need to be reached in order for it to proceed.</p>"},{"location":"misc/finances/#acceptable-uses-of-money","title":"Acceptable uses of money","text":"<ul> <li>Hardware/Software needed to help the group reach a specific goal</li> <li>Stationary + related items for possible conventions</li> <li>Convention fees (Both Attendence and Travel)</li> <li>Hosting services (Included domain purchases)</li> <li>Good will gestures (Example: For users outside the group that have provided help when asked.)</li> <li>Food/Drink for LinuxServer.io focused sprints</li> <li>Donations to upstream projects</li> </ul>"},{"location":"misc/finances/#links","title":"Links","text":"<ul> <li>https://opencollective.com/linuxserver#category-BUDGET</li> </ul>"},{"location":"misc/support-policy/","title":"LinuxServer Support Policy","text":"<p>Any exceptions to this support policy will be clearly called out in the readme for the relevant image.</p>"},{"location":"misc/support-policy/#formally-supported-images","title":"Formally Supported Images","text":"<p>Any actively maintained image from the LinuxServer organisation, excluding base images, is in scope for support. Note that if you are running an old version of an image we will likely ask you to upgrade to the latest version before providing support, unless your issue is version-specific.</p> <p>This means that images, tags, and architectures that have been deprecated or archived are not in scope.</p>"},{"location":"misc/support-policy/#formally-supported-environments","title":"Formally Supported Environments","text":"<p>We build and test all of our images using the latest stable branch of Docker CE using containerd and runc, on Linux, building for x86_64 (amd64) and aarch64 (arm64) architectures. Any matching client environment is in scope for support. In addition, any currently supported version of Docker CE is in scope.</p> <p>We support the use of both docker compose and the docker CLI to manage containers, though the former is preferred.</p> <p>We support the running of our containers on Unraid, using our supplied templates. We will not provide support for Unraid itself.</p>"},{"location":"misc/support-policy/#docker-mods","title":"Docker Mods","text":"<p>Support for the underlying mod logic is within scope for support, however, support for the mods themselves is provided by the listed maintainer of that mod, whether it is published in our mods repo or elsewhere.</p>"},{"location":"misc/support-policy/#reasonable-endeavours-support","title":"Reasonable Endeavours Support","text":"<p>There are many alternative configurations that should broadly work for most of our images, but we make no guarantees to that effect, and expect that you have a solid understanding of the underlying technologies you're using. Although we do not formally support them, we will endeavour to provide help where we can with any of the following:</p> <ul> <li>Use of our base images for 3rd party projects</li> <li>Use of our images with alternative container runtimes</li> <li>Use of locally built versions of our images</li> <li>Docker Desktop on Windows, Mac, or Linux</li> <li>Rootless Docker</li> <li>Docker in Docker</li> <li>Docker Swarm</li> <li>Docker installed from distro repos (use the official repos instead)</li> <li>Docker installed via Snap (use the official repos instead)</li> <li>EOL versions of Docker (where there is no option to upgrade)</li> <li>Podman (Rootless or Rootful)</li> <li>Routing container traffic through a VPN</li> <li>Use of macvlan/ipvlan networks</li> </ul>"},{"location":"misc/support-policy/#unsupported","title":"Unsupported","text":"<p>The following configurations are entirely unsupported and we will not provide help with them, even if you have been able to get them to work:</p> <ul> <li>Any of our images which have been deprecated or archived</li> <li>Any forks of our images maintained by 3rd parties</li> <li>Use of 3rd party guides or tutorials for configuring our images</li> <li>Use of 3rd party management tools, such as Portainer, to create or update containers</li> <li>Use of automated container update tools, such as Watchtower</li> <li>Use of remote file storage, such as SMB or NFS, for container <code>/config</code> mounts</li> <li>Use of LXC containers</li> <li>Use of k8s or k3s</li> </ul>"},{"location":"misc/support-policy/#unsupported-and-known-to-be-broken","title":"Unsupported and Known To Be Broken","text":"<p>The following configurations are entirely unsupported and you are unlikely to be able to get them to work at all, or experience serious issues if you do:</p> <ul> <li>Use of the <code>user</code> directive to run containers as a custom UID/GID</li> <li>Use of a custom <code>init</code> for Docker</li> <li>Overriding container entrypoints</li> </ul>"},{"location":"misc/support-policy/#weird-exceptions","title":"Weird Exceptions","text":"<p>The following configurations don't fit nicely into any single category because \"it depends\". They're not formally supported but we may provide reasonable endeavours support in some cases.</p> <ul> <li>Running our containers with a root (<code>0</code>) PUID or PGID</li> </ul>"},{"location":"misc/support-policy/#change-history","title":"Change History","text":"<ul> <li>2024-02-13 - Add Weird Exceptions section</li> <li>2024-02-05 - Add ipvlan/macvlan networks</li> <li>2023-10-03 - Initial release</li> </ul>"}]}